1、拉取mysql8的镜像:
1 | [root@i-zgn6som8 ~] # docker pull mysql:8.0 |
2、创建配置和数据文件夹并修改权限:
1 2 3 4 | mkdir -p /data/mysql8/conf mkdir -p /data/mysql8/data chmod -R 755 /data/mysql8/ |
3、配置一个自定义的配置文件my.cnf:
1 | vim /data/mysql8/conf/my .cnf |
文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql character_set_server = utf8mb4 collation_server = utf8mb4_bin secure-file-priv= NULL symbolic-links=0 transaction_isolation=READ-COMMITTED innodb_log_file_size=256M max_allowed_packet=34M max_connections=1000 max_user_connections=500 max_connect_errors=100 default-time_zone='+8:00' |
4、通过以下命令,直接运行容器:
1 2 3 4 5 6 7 | docker run -d -p 23306:3306 \ - v /data/mysql8/conf/ : /etc/mysql/conf .d \ - v /data/mysql8/data : /var/lib/mysql \ -e MYSQL_ROOT_PASSWORD= 'Jgq20230724!@#' \ --restart=always \ --name=mysql8 \ mysql:8.0 |
5、此时就可以直接连接了:

补充一:之所以挂载到conf.d下面,是因为新版的mysql建议自定义的配置,挂载到 /etc/mysql/conf.d 目录下,以 .cnf 结尾即可:
1 2 3 4 5 6 7 8 9 10 11 12 | [root@i-jiguiquan ~] # docker exec -it mysql8 /bin/bash root@decdf9fa3b4d:/ # cat /etc/mysql/my.cnf [mysqld] pid- file = /var/run/mysqld/mysqld .pid socket = /var/run/mysqld/mysqld .sock datadir = /var/lib/mysql secure- file -priv= NULL # Custom config should go here !includedir /etc/mysql/conf .d/ |