docker安装 mysql 8.0.32

首先下载 mysql 其次如果虚拟机以前安过mysql 需要把mysql关闭

命令 永久关闭mysql 但是当前不生效 需要重启虚拟机 systemctl enable mysqld

如果不想重启虚拟机 可以执行 systemctl stop mysqld

//指定版本

docker pull mysql:8.0.32

// 拉取最新的mysql

docker pull mysql:latest

二、查看镜像

docker images

三、创建要挂载的文件夹

root@\~# mkdir -p /opt/docker/mysql8/conf/

root@\~# mkdir -p /opt/docker/mysql8/logs/

root@\~# mkdir -p /opt/docker/mysql8/data/

拷贝一份配置文件,先随便启动一个镜像

docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=5255 -d mysql:8.0.32

启动成功后,进入容器内部拷贝配置文件,到宿主主机

docker cp mysql8:/etc/mysql /opt/docker/mysql8/conf

删除刚才的容器,重新创建容器

先停止容器

docker stop mysql8

再删除容器

docker rm mysql8

四、执行容器

启动mysql ,挂载配置文件,数据持久化到宿主主机

docker run -itd -p 3306:3306 --name mysql8 -e character-set-server=utf8mb4 --privileged=true --restart unless-stopped -v /opt/docker/mysql8/conf/mysql:/etc/mysql -v /opt/docker/mysql8/logs:/logs -v /opt/docker/mysql8/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=5255 -d mysql:8.0.32 --lower_case_table_names=1

命令解释:

-p 端口映射

--name 容器名字,自定义

--privileged=true 挂载文件权限设置

--restart unless-stopped 设置 开机后自动重启容器

-v /opt/docker/mysql8/conf/mysql:/etc/mysql 挂载配置文件

-v /opt/docker/mysql8/logs:/logs \ 挂载日志

-v /opt/docker/mysql8/data:/var/lib/mysql \ 挂载数据文件 持久化到主机,

-v /etc/localtime:/etc/localtime 容器时间与宿主机同步

-e MYSQL_ROOT_PASSWORD=123456 设置密码

-d mysql:8.0.32 后台启动,mysql

--lower_case_table_names=1 要加在镜像名后面,镜像名前面是参数,后面是mysql配置,不然会报错

查看容器状态

docker ps

五、配置远程连接

进入容器

docker exec -it mysql8 /bin/bash

打开MySQL 命令行 密码 5255

mysql -uroot -p

use mysql;

创建账户

CREATE USER 'adminx'@'%' IDENTIFIED BY '123456';

授权账户

GRANT ALL ON *.* TO 'adminx'@'%';

刷新权限

FLUSH PRIVILEGES;

退出 mysql客户端 exit 或者ctrl+c

六、密码正确,登录错误

2、进入容器

$ docker exec -it mysql bash

1

3、修改配置文件

3.1 进入 /etc/mysql/conf.d 文件目录:

$ cd /etc/mysql/conf.d

1

3.2 创建MySQL配置文件:mysql.cnf

$ touch mysql.cnf

1

3.3 在 mysql.cnf 配置文件中填充以下内容

echo mysql.cnf mysqld \ skip-grant-tables >>

mysqld

跳过密码登录

skip-grant-tables

1

2

3

3.4 退出容器,重启mysql容器

$ exit

$ docker restart mysql

七、配置mysql的字符集

需要创建 vim /opt/mysql.cnf

并复制以下内容

client

default-character-set=utf8mb4

mysql

default-character-set=utf8mb4

mysqld

跳过密码登录

#skip-grant-tables

#bind-address = 127.0.0.1

init_connect='SET collation_connection = utf8mb4_general_ci'

init_connect='SET NAMES utf8mb4'

character-set-server=utf8mb4

collation-server=utf8mb4_general_ci

skip-character-set-client-handshake

lower_case_table_names=1

然后执行

docker cp /opt/mysql.cnf mysql8:/etc/mysql/conf.d

安装完以后测试本地windows系统上的 navicat

相关推荐
程序员老赵15 小时前
Docker 部署 Redmine:老牌开源项目管理部署实测记录
docker·开源·团队管理
这个DBA有点耶16 小时前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
程序员老赵17 小时前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
smallyoung17 小时前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql
数据技术说1 天前
MySQL 迁移实战——如何实现真正的"零改造"平滑切换
mysql
lichenyang4533 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang4533 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang4533 天前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang4533 天前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
唐青枫5 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql