Docker 部署 Mysql8.2
# 不挂载,直接创建容器
[root@VM-24-9-centos ~]# docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
获取镜像
# 拉取镜像
[root@VM-24-9-centos ~]# docker pull mysql:8.2
创建挂载目录和配置文件
# 创建挂载目录
[root@VM-0-17-centos ~]# mkdir -p /data/mysql/{conf,data,log}
# 切换到conf目录下并创建my.cnf文件填入下方的配置
[root@VM-0-17-centos conf]# cd /data/mysql/conf/
[root@VM-0-17-centos conf]# vim my.cnf
[client]
#设置客户端默认字符集utf8mb4
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#解决MySQL8.0版本GROUP BY问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#允许最大的连接数
max_connections=1000
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
# 启动容器并挂载目录
docker run -d -p 3306:3306 \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart=always --name mysql --privileged=true \
mysql:8.2 --lower-case-table-names=1
修改mysql密码以及可访问主机
# 进入容器内部
docker exec -it mysql /bin/bash
# 连接mysql
mysql -uroot -p123456
# 修改访问主机以及密码等,设置为所有主机可访问
$ mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
# 刷新
$ mysql> flush privileges;
mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接