本文已参与「新人创作礼」活动,一起开启掘金创作之路。
不同配置文件的作用
mysql官方的docker配置说明 v2ex上关于mysql加载配置文件的一个坑
docker ps -a //查看mysql运行的容器实例
docker exec -it 4585fd6b4904 bash
whereis mysql ; which mysql ; /usr/bin/mysql --verbose --help |grep -A 1 'Default options
//是按顺序去找最初的配置文件的,找到了如下的第二个文件,是配置入口
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
进一步在/etc/mysql下检查,发现所谓my.cnf和mysql.cnf都是链接和容器而已,真正的配置在conf.d和mysql.conf.d等目录下;而且是分散化的配置
运行成功后的docker语句
docker run --name sec-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql:5.7.22 //其实也可以不用转义符号
mysql镜像启动时变量(variables)的说明
- MYSQL_ROOT_PASSWORD(mandatory必须,指定启动的root用户的密码)
- MYSQL_DATABASE(optional,初始数据库,可以省略)
另外,为了替换docker内的数据库文件,用-v指定宿主机挂载路径(这样每次重启docker,数据库内数据能够保留)
docker run --name mysqlzzz -p 3306:3306 -v /media/vincent/Docs/my.cnf:/etc/my.cnf -v /media/vincent/Docs/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.22
如何导出数据?
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
docker.cnf
root@4585fd6b4904:/etc/mysql/conf.d# cat docker.cnf
[mysqld]
skip-host-cache
skip-name-resolve
mysqldump.cnf
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
mysql.conf.d/myqld.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0