点击上方蓝字关注我
一个正在运行的MySQL实例,如何查看对应的配置文件用的是哪一个?如果存在多个文件,生效的顺序是怎么样的?
1. 方法一
首先可以先选择查看MySQL进程信息来判断使用了哪个配置文件,例如:
ps -aux|grep mysqldroot 256280.00.0 112828 988 pts/0S+ 19:13 0:00 grep --color=auto mysqldroot 275030.00.0 1134161660 " />结果中有--defaults-file=/data/mysql/mysql3306/etc/my.cnf,即该实例所使用的配置文件信息。
2. 方法二
有的时候,如果不是不带defaults-file参数启动数据库时,查看进程信息的结果中是没有对应的配置文件信息。例如:
ps -aux|grep mysqldmysql18918501.22.2 2308948 366080 " />此时,如果使用的是MySQL8.0,可以登录到数据库后,通过查询对应视图performance_schema.variables_info来查看。例如:
mysql> SELECTvariable_path,COUNT(*) FROM performance_schema.variables_info WHERE variable_path''GROUP BY variable_path;+------------------------------------+----------+| variable_path| COUNT(*) |+------------------------------------+----------+| /etc/mysql/mysql.conf.d/mysqld.cnf |6 |+------------------------------------+----------+
此时可以确定其配置文件信息。
PS:有时会查询到多个配置文件,可以思考一下为何如此设计。
如果使用的是MySQL8.0之前的版本,需要在下一步的顺序中寻找
3. 配置文件生效顺序
如果存在多个配置文件,它们通常是以下的优先级顺序生效:
系统级配置文件:位于 /etc/my.cnf 或 C:\Program、Data\MySQL\MySQL Server x.x\my.ini。这是默认的主配置文件,包含全局设置。
配置文件目录中的其他文件:MySQL配置文件目录中的其他文件,通常在 /etc/mysql/conf.d/ 或 C:\ProgramData\MySQL\MySQL Server x.x\conf.d\。
这些文件允许模块化配置,会按照文件名的字母顺序合并。
用户级配置文件:位于用户的主目录,如 ~/.my.cnf 或 %APPDATA%\MySQL\.my.cnf。这里的配置会覆盖系统级配置。
命令行参数:在启动数据库实例时可以指定defaults-file或者指定对应的datadir等参数,这些将覆盖之前的所有配置,优先级最高
往期精彩回顾
1.MySQL高可用之MHA集群部署
2.mysql8.0新增用户及加密规则修改的那些事
3. 比hive快10倍的大数据查询利器-- presto
4. 监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库
5. PostgreSQL主从复制--物理复制
6.MySQL传统点位复制在线转为GTID模式复制
7.MySQL敏感数据加密及解密
8.MySQL数据备份及还原(一)
9.MySQL数据备份及还原(二)
扫码关注