mysql服务端的配置文件到底是哪一个?

最近看了很多篇mysql相关的博客, 涉及的配置文件路径如下, 不知道到底该用哪个

(1)
/etc/mysql/my.cnf
image.png

(2)
/etc/mysql/mysql.conf.d/mysqld.cnf
image.png

(3)
/etc/mysql/conf.d/mysql.cnf
image.png

所以, mysql服务端的配置文件到底是用上面哪一个呢?
还是说不同的mysql版本用不同的配置文件?
那么mysql5.7用的是哪个配置文件?
mysql8.0(我现在用的版本)用的是哪个配置文件? (我感觉应该是第二个, 对吗?)

如果有大神能讲一讲这三个配置文件分别是用来干什么的就更好了

阅读 6.8k
2 个回答

无责声明:以下内容没有经过验证,阅读时多思考,多谨慎

如何获取配置文件的加载顺序:

在命令行执行: mysql --help 命令,执行后你可以找到类似下面这些内容(我的环境是 MACOS)

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf 

上面的内容说明当前环境下 去哪里 寻找配置文件;以上命令可能不是最有效的,如有更好的命令或者方法请补充谢谢。

我的个人理解:

第一张图片内容中的
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

这两行的含义是:在/etc/mysql/my.cnf 文件中导入 /etc/mysql/conf.d/目录下以及/etc/mysql/mysql.conf.d/目录下所有以 .cnf 结尾的配置文件,任何其他形式结尾的配置文件将被忽略

为什么配置文件的扩展名以 .cnf结尾才有效,其他任何形式的都无效尼?我是根据下面的英语判断的:
Additional settings that can override those from this file!
The files must end with ‘.cnf’, otherwise they’ll be ignored.

总结

在/etc/mysql/my.cnf 配置文件中 包含在/etc/mysql/conf.d/目录下以及/etc/mysql/mysql.conf.d/目录下所有以 .cnf 结尾的配置文件;如果在这两个被包含的目录下存在的配置文件中的配置项与/etc/mysql/my.cnf 配置文件中的配置项有冲突,则会覆盖掉 /etc/mysql/my.cnf 文件中的配置项

如何验证

这里给出能想到的,其他更好的方法也可以
1 修改 /etc/mysql/mysql.conf.d/mysqld.cnf 里面的配置项看能否有效果
2 在/etc/mysql/my.cnf 文件中添加相同的配置项,看看重复的配置项是否被覆盖

其他

  • 任何文档都会与时俱进,参考时请以所在平台下最新文档为准!
  • 具体配置细节不太重要,重要的是在特定平台下的配置习惯(比如linux下的全局配置在/etc目录下;个人配置在 ~)
  • 官方文档是最好的学习资料,遇到问题推荐学会在官方找答案
  • MYSQL有很多 ,推荐一下我觉得不错的一本书 <<Mysql是怎样运行的>>,不一定适合每个人,所以建议先看看内容,感觉oK可以支持一下作者.

都是,!includedir是指引入这些包下的文件,一样也是配置文件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏