当前位置:Gxlcms > 数据库问题 > docker安装mysql挂载外部配置和数据目录

docker安装mysql挂载外部配置和数据目录

时间:2021-07-01 10:21:17 帮助过:4人阅读

:3307 -e MYSQL_ROOT_PASSWORD=12345 --name mysql_test2 mysql:5.7.23

进入容器

docker exec -it mysql_test2 bash

根据上述docker hub上描述,可以发现/etc/mysql/conf.d/中存在三个文件,分别为docker.cnf,mysql.cnf和mysqldump.cnf,/etc/mysql/mysql.conf.d/下只存在一个文件mysqld.cnf

第一种启动方式

docker run -d -p 3306:3306 -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysql.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql_test mysql:5.7.23

这样启动的容器中,/etc/mysql/conf.d/mysql.cnf中的内容将被/etc/mysql.my.cnf中文件内容覆盖

第二种启动方式

docker run -d -p 3306:3306 -v /etc/mysql/:/etc/mysql/conf.d/ -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql_test mysql:5.7.23

这种方式将会把/etc/mysql/conf.d/下面的三个文件替换为外部挂载的my.cnf文件

第三种启动方式

docker run -d -p 3306:3306 -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysqld.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345 --name mysql_test mysql:5.7.23

登录都容器中,可以发现/etc/mysql/conf.d/中的文件多了一个mysqld.cnf,且该文件即是我们外挂的my.cnf,而/etc/mysql/mysql.conf.d/mysqld.cnf中的内容依然是之前的

以上三种方式都可以实现外挂配置和数据目录,但首先配置中的文件路径在容器中需要存在,否则mysql容器将无法正常启动。个人觉得第二种看着顺眼点。:)

MYSQL8

mysql8中,/etc/mysql/my.cnf只依赖了/etc/mysql/conf.d/目录,所以上述的第三种方式就行不通了,另外如果配置文件中设置有socket,则client和mysqld设置的socket应该一致,如果去掉,就全部去掉,其他再有错误,根据mysql中错误日志查找下原因,一般都是因为配置

docker run -d -p 3306:3306 -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysqld.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345 --name mysql_test mysql

 

docker安装mysql挂载外部配置和数据目录

标签:docker   安装mysql   日志   exec   说明   doc   run   查找   实现   

人气教程排行