MySQL如何找到使用的是哪个配置文件?

点击上方蓝字关注我

一个正在运行的MySQL实例,如何查看对应的配置文件用的是哪一个?如果存在多个文件,生效的顺序是怎么样的?

1. 方法一

首先可以先选择查看MySQL进程信息来判断使用了哪个配置文件,例如:

javascript 复制代码
ps -aux|grep mysqld
root     25628  0.0  0.0 112828   988 pts/0    S+   19:13   0:00 grep --color=auto mysqld
root     27503  0.0  0.0 113416  1660 ?        S     2023   0:00 /bin/sh /usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/data/mysql/mysql3306/etc/my.cnf
mysql    28697  0.1 38.3 6168644 689056 ?      Sl    2023 120:07 /usr/local/mysql5.7/bin/mysqld --defaults-file=/data/mysql/mysql3306/etc/my.cnf --basedir=/usr/local/mysql5.7 --datadir=/data/mysql/mysql3306/data --plugin-dir=/usr/local/mysql5.7/lib/mysql/plugin --user=mysql --log-error=/data/mysql/mysql3306/logs/mysqld.error --open-files-limit=65535 --pid-file=/data/mysql/mysql3306/tmp/mysqld.pid --socket=/data/mysql/mysql3306/tmp/mysql.sock --port=3306

结果中有--defaults-file=/data/mysql/mysql3306/etc/my.cnf,即该实例所使用的配置文件信息。

2. 方法二

有的时候,如果不是不带defaults-file参数启动数据库时,查看进程信息的结果中是没有对应的配置文件信息。例如:

properties 复制代码
ps -aux|grep mysqld
mysql    1891850  1.2  2.2 2308948 366080 ?      Ssl   2023 1355:28 /usr/sbin/mysqld
root     3183979  0.0  0.0  12316  2272 pts/9    S+   19:09   0:00 grep --color=auto mysqld

此时,如果使用的是MySQL8.0,可以登录到数据库后,通过查询对应视图performance_schema.variables_info来查看。例如:

ruby 复制代码
mysql> SELECT  variable_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数据库

  1. PostgreSQL主从复制--物理复制

  2. MySQL传统点位复制在线转为GTID模式复制

7. MySQL敏感数据加密及解密

8. MySQL数据备份及还原(一)

9. MySQL数据备份及还原(二)

扫码关注

相关推荐
weelinking21 分钟前
【产品】12_接入数据库——让数据永久保存
jvm·数据库·python·react.js·数据挖掘·前端框架·产品经理
稳联技术老娜23 分钟前
DeviceNet主站怎么连接西门子PLC,Profinet网关配置手册(那智机器人)
服务器·网络·数据库
这个DBA有点耶1 小时前
云上运维新挑战:当数据库不再“看得见摸得着”
数据库·sql·程序人生·云原生·运维开发·学习方法·dba
AskHarries2 小时前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
消失在人海中2 小时前
oracle 数据库多表关联查询
服务器·数据库·oracle
九皇叔叔2 小时前
PostgreSQL/openGauss pg_stats 视图从入门到精通:统计信息、执行计划与慢 SQL 优化实战
数据库·sql·postgresql
南极企鹅3 小时前
MySQL间隙锁&临键锁
数据库·sql·mysql
TDengine (老段)4 小时前
TDengine 压缩编码机制 — 双层压缩架构与类型特化算法
大数据·数据库·物联网·算法·时序数据库·tdengine·涛思数据
苏渡苇5 小时前
Redis 持久化——RDB 快照 vs AOF 日志
数据库·redis·缓存·redis持久化·aof vs rdb
l1t6 小时前
DeepSeek总结的使用 PEG 实现运行时可扩展的 SQL 解析器
数据库·sql