MySQL查看当前使用的配置文件my.cnf的方法

MySQL实例在启动时,会先读取配置参数文件my.cnf。my.cnf一般会放在MySQL的安装目录中,用户也可以放在其他目录加载。安装MySQL后,系统中会有多个my.cnf文件,有些是用于测试的。使用“locate my.cnf”或“find / -name my.cnf”命令可以列出所有的my.cnf文件。

有时候,DBA会发现虽然尝试修改了配置文件的一些变量,但是并没有生效,这其实是因为修改的文件并非MySQL服务器读取的配置文件。MySQL服务器读取的配置文件及路径默认为:

/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
如果不清楚MySQL当前使用的配置文件路径,那么可以安装如下步骤来查看:

(一)查看是否使用了指定目录的my.cnf文件

在启动MySQL后,可以通过查看MySQL的进程,看看是否有设置使用指定目录的my.cnf文件,如果有则表示MySQL启动时是加载了这个配置文件。

命令:ps -ef|grep mysql|grep ‘my.cnf’
输出:
fdipzone 25174 0.0 0.0 3087244 600 ?? S 4:12下午 0:01.14 /usr/local/Cellar/mysql/5.6.24/bin/mysqld –defaults-file=/usr/local/Cellar/mysql/5.6.24/my.cnf –basedir=/usr/local/Cellar/mysql/5.6.24 –datadir=/usr/local/var/mysql –plugin-dir=/usr/local/Cellar/mysql/5.6.24/lib/plugin –bind-address=127.0.0.1 –log-error=/usr/local/var/mysql/TerrydeMacBook-Air.local.err –pid-file=/usr/local/var/mysql/TerrydeMacBook-Air.local.pid

fdipzone 25064 0.0 0.0 2452824 4 ?? S 4:12下午 0:00.03 /bin/sh /usr/local/opt/mysql/bin/mysqld_safe –defaults-file=/usr/local/Cellar/mysql/5.6.24/my.cnf –bind-address=127.0.0.1 –datadir=/usr/local/var/mysql

可以看到/usr/local/Cellar/mysql/5.6.24/my.cnf就是MySQL启动加载的配置文件。如果上面的命令没有输出,那么表示没有设置使用指定目录的my.cnf。

(二)查看mysql默认读取my.cnf的目录

如果没有设置使用指定目录的my.cnf,MySQL启动时会读取安装目录根目录及默认目录下的my.cnf文件。
命令:mysql –help|grep ‘my.cnf’ 或 mysqld –verbose –help |grep -A 1 ‘Default options’
输出:
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
则,/etc/my.cnf, /etc/mysql/my.cnf, /usr/local/etc/my.cnf, ~/.my.cnf 这些就是MySQL默认会搜寻my.cnf的目录,顺序排前的优先。

(三)启动时没有使用配置文件

如果没有设置使用指定目录my.cnf文件及默认读取目录没有my.cnf文件,表示MySQL启动时并没有加载配置文件,而是使用默认配置。需要修改配置,可以在MySQL默认读取的目录中,创建一个my.cnf文件(例如:/etc/my.cnf),把需要修改的配置内容写入,重启MySQL后即可生效。

[root@rhel6lhr mysql]# find / -name my.cnf
/usr/my.cnf
/usr/share/mysql-test/suite/ndb_team/my.cnf
/usr/share/mysql-test/suite/federated/my.cnf
/usr/share/mysql-test/suite/ndb_big/my.cnf
/usr/share/mysql-test/suite/rpl_ndb/my.cnf
/usr/share/mysql-test/suite/rpl/my.cnf
/usr/share/mysql-test/suite/rpl/extension/bhs/my.cnf
/usr/share/mysql-test/suite/ndb_rpl/my.cnf
/usr/share/mysql-test/suite/ndb/my.cnf
/usr/share/mysql-test/suite/ndb_binlog/my.cnf
/var/lib/mysql/my.cnf
/etc/my.cnf

[root@rhel6lhr mysql]#
[root@rhel6lhr mysql]# locate my.cnf
/etc/my.cnf
/etc/my.cnf.d
/etc/my.cnf.rpmnew
/etc/my.cnf.rpmsave
/usr/my.cnf
/usr/share/mysql-test/include/default_my.cnf
/usr/share/mysql-test/suite/federated/my.cnf
/usr/share/mysql-test/suite/ndb/my.cnf
/usr/share/mysql-test/suite/ndb_big/my.cnf
/usr/share/mysql-test/suite/ndb_binlog/my.cnf
/usr/share/mysql-test/suite/ndb_rpl/my.cnf
/usr/share/mysql-test/suite/ndb_team/my.cnf
/usr/share/mysql-test/suite/rpl/my.cnf
/usr/share/mysql-test/suite/rpl/extension/bhs/my.cnf
/usr/share/mysql-test/suite/rpl_ndb/my.cnf
/var/lib/mysql/.my.cnf.swp
/var/lib/mysql/my.cnf
/var/lib/mysql/my.cnf_bk

[root@rhel6lhr mysql]#
[root@rhel6lhr mysql]# mysql –help|grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
[root@rhel6lhr mysql]#
[root@rhel6lhr mysql]# which mysqld
/usr/sbin/mysqld
[root@rhel6lhr mysql]# /usr/sbin/mysqld –verbose –help |grep -A 1 ‘Default options’

2017-03-22 19:24:11 20934 [Warning] No argument was provided to –log-bin, and –log-bin-index was not used; so replication may break when this MySQL server acts as a master and has his hostname changed!! Please use ‘–log-bin=rhel6lhr-bin’ to avoid this problem.

2017-03-22 19:24:11 20934 [Note] Plugin ‘FEDERATED’ is disabled.
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

2017-03-22 19:24:11 20934 [Note] Binlog end
2017-03-22 19:24:11 20934 [Note] Shutting down plugin ‘CSV’
2017-03-22 19:24:11 20934 [Note] Shutting down plugin ‘MyISAM’

[root@rhel6lhr mysql]# whereis my.cnf
my: /etc/my.cnf
[root@rhel6lhr mysql]#

欢迎您的到来,感谢您的支持!

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注