mysql配置文件详细分析

202 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

不同配置文件的作用

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