这篇文章上次修改于 197 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

docker部署mysql8.0

docker pull mysql:8.0  
​  
docker images  
​  
mkdir -p /data/mysql/conf  
mkdir -p /data/mysql/data  
mkdir -p /data/mysql/logs
vi /data/mysql/conf/my.cnf
[client]  
port = 3308  
default-character-set = utf8mb4  
   
[mysql]  
port = 3308  
default-character-set = utf8mb4  
   
[mysqld]  
# bind-address = 0.0.0.0  
# port = 3306  
   
max_connections=10000  
   
character-set-server = utf8mb4  
collation-server = utf8mb4_unicode_ci  
   
# 设置时区和字符集  
# default-time-zone='+8:00'  
character-set-client-handshake=FALSE  
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'  
   
gtid-mode=ON  
enforce-gtid-consistency = ON

启动镜像

docker run -d  --name mysql8.0 --privileged=true -v /d/dockerspace/mysql8.0/conf:/etc/mysql/conf.d:rw  -v /d/dockerspace/mysql8.0/data:/var/lib/mysql:rw  -v /d/dockerspace/mysql8.0/logs:/var/log/mysql:rw  -v /d/dockerspace/mysql8.0/mysql-files:/var/lib/mysql-files:rw -p 3308:3306  -e MYSQL_ROOT_PASSWORD='123456'   -d mysql:8.0

更改容器时间

[root@tseng ~]# docker exec -it mysql8.0 bash  
root@a498923c0bd3:/# date  
Tue Aug  3 06:44:32 UTC 2021  
root@a498923c0bd3:/# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  
root@a498923c0bd3:/# exit  
[root@tseng /]# docker restart mysql8.0        -- 重启镜像  
[root@tseng /]# docker exec -it mysql8.0 bash      
root@a498923c0bd3:/# date  
Tue Aug  3 14:45:35 CST 2021

设置远程访问

mysql -u root -p123456 -h localhost  
​  
use mysql  
# 查看:  
select host,user,plugin from user;  
# 删除多余的行:delete from user where user ='root' and host='%';  
# 设置所有host可以访问:  
update user set host='%' where user ='root';  
# 修改密码:  
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  
# 刷一下,使之生效:  
FLUSH PRIVILEGES;  
# 退出:  
exit

参考

# one
docker run -d  --name mysql8.0 --privileged=true -v /d/dockerspace/mysql8.0/conf:/etc/mysql/conf.d:rw  -v /d/dockerspace/mysql8.0/data:/var/lib/mysql:rw  -v /d/dockerspace/mysql8.0/logs:/var/log/mysql:rw  -v /d/dockerspace/mysql8.0/mysql-files:/var/lib/mysql-files:rw -p 3308:3306  -e MYSQL_ROOT_PASSWORD='123456'   -d mysql:8.0

# two
docker run  --restart=always  --name mysql3309.8.0.18  -v /data/mysql3309/conf:/etc/mysql  -v /data/mysql3309/data:/var/lib/mysql  -v /data/mysql3309/log:/var/log  -v /data/mysql3309/mysql-files:/var/lib/mysql-files -p 3309:3306  -e MYSQL_ROOT_PASSWORD='123456'   -d mysql:8.0.18 --lower_case_table_names=1