my.cnf是MySQL
服務(wù)器在unix平臺(tái)下默認(rèn)的配置文件的文件名。
輸入my_print_defaults可以得出mysql server啟動(dòng)時(shí)所讀取的my.cnf的順序:(一般為該四個(gè),根據(jù)安裝方式、OS發(fā)行版、mysql版本而定)
或者
-
$ mysql --help | grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/my.cnf(有的版本寫作/usr/local/mysql/etc/my.cnf) ~/.my.cnf
也就是說,先讀取/etc/my.cnf,再去讀/etc/mysql/my.cnf,第三個(gè)讀/usr/local/mysql/my.cnf,其中,第三個(gè)為basedir,即mysql安裝目錄。
第四個(gè)為~/.my.cnf,這個(gè)~即為/home/$USERNAME,而$USERNAME為服務(wù)器啟動(dòng)用戶。
在手冊(cè)中給出的順序是(由上至下讀?。?br />
-
File Name Purpose
-
/etc/my.cnf Global options
-
/etc/mysql/my.cnf Global options
-
SYSCONFDIR/my.cnf Global options
-
$MYSQL_HOME/my.cnf Server-specific options
-
defaults-extra-file The file specified with --defaults-extra-file=path, if any
-
~/.my.cnf User-specific options
-
~/.mylogin.cnf Login path options
但通用的讀取先后順序?yàn)椋?br />
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 省略部分路徑。
其中/etc/my.cnf與/etc/mysql/my.cnf為全局選項(xiàng)文件
而~/.my.cnf為用戶選項(xiàng)文件
場(chǎng)景一:Global options與Global options同時(shí)存在。
即/etc/my.cnf與/etc/mysql/my.cnf同時(shí)存在
疑問:如果/etc/my.cnf存在,還會(huì)去找/etc/mysql/my.cnf嗎?
如果是,那么是直接使用/etc/mysql/my.cnf文件
還是先使用/etc/my.cnf,再用/etc/mysql/my.cnf中呢?如果參數(shù)相同,后者覆蓋前者嗎?
實(shí)驗(yàn):/etc/my.cnf
[mysqld]
long_query_time = 15
slow_query_log = on
autocommit = off
/etc/mysql/my.cnf
[mysqld]
long_query_time = 12
slow_query_log = on
查詢:
-
mysql> show variableslike 'autocommit';
-
+---------------+-------+
-
| Variable_name| Value|
-
+---------------+-------+
-
| autocommit | OFF |
-
+---------------+-------+
-
1 rowin set (0.00 sec)
-
-
mysql> show variableslike 'long_query_time';
-
+-----------------+-----------+
-
| Variable_name | Value |
-
+-----------------+-----------+
-
| long_query_time| 12.000000|
-
+-----------------+-----------+
-
1 rowin set (0.01 sec)
此時(shí)先用了/etc/my.cnf中的autocommit=off。
雖然slow_query_log都有設(shè)置,但是參數(shù)相同,/etc/mysql/my.cnf優(yōu)先級(jí)更大,故為12s。
繼續(xù)實(shí)驗(yàn):刪除/etc/my.cnf
$ sudo mv /etc/my.cnf /etc/my.cnf.bk
重啟服務(wù)器,查詢:
-
mysql> show variableslike 'autocommit';
-
+---------------+-------+
-
| Variable_name| Value|
-
+---------------+-------+
-
| autocommit | ON |
-
+---------------+-------+
-
1 rowin set (0.00 sec)
-
-
mysql> show variableslike 'long_query_time';
-
+-----------------+-----------+
-
| Variable_name | Value |
-
+-----------------+-----------+
-
| long_query_time| 12.000000|
-
+-----------------+-----------+
-
1 rowin set (0.01 sec)
此時(shí)只用了/etc/mysql/my.cnf。
場(chǎng)景二:Global options與User-specific options同時(shí)存在
即/etc/my.cnf與~/.my.cnf同時(shí)存在
實(shí)驗(yàn):同樣先刪除其他配置文件,確保只剩如下兩個(gè)位置:
/etc/my.cnf
[mysqld]
long_query_time = 15
slow_query_log = on
autocommit = off
~/.my.cnf
[mysqld]
long_query_time = 12
slow_query_log = on
編輯好后保存退出
查詢:
-
mysql> show variableslike 'autocommit';
-
+---------------+-------+
-
| Variable_name| Value|
-
+---------------+-------+
-
| autocommit | OFF |
-
+---------------+-------+
-
1 rowin set (0.00 sec)
-
-
mysql> show variableslike 'long_query_time';
-
+-----------------+-----------+
-
| Variable_name | Value |
-
+-----------------+-----------+
-
| long_query_time| 12.000000|
-
+-----------------+-----------+
-
1 rowin set (0.01 sec)
autocommit默認(rèn)是on
long_query_time默認(rèn)是10
說明/etc/my.cnf已經(jīng)生效
autocommit = off
雖然有設(shè)置
long_query_time = 15
但是
~/.my.cnf
中有設(shè)置
long_query_time = 12
故~/.my.cnf也有生效,在存在相同選項(xiàng)時(shí),優(yōu)先級(jí)高于Global options的/etc/my.cnf。
結(jié)論:
當(dāng)多個(gè)my.cnf存在時(shí):
Global options與User-specific options同時(shí)存在時(shí),User-specific options優(yōu)先級(jí)高于Global options并兩者都會(huì)讀取,若選項(xiàng)相同,則優(yōu)先級(jí)高者覆蓋前者
雖然/etc/my.cnf與/etc/mysql/my.cnf均為Global options,但是規(guī)則也同樣和Global options與User-specific options一致。
作者微信公眾號(hào)(持續(xù)更新)
本文名稱:mysql多個(gè)參數(shù)選項(xiàng)文件my.cnf優(yōu)先級(jí)研究
地址分享:http://chinadenli.net/article34/ihcdpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、定制網(wǎng)站、商城網(wǎng)站、建站公司、靜態(tài)網(wǎng)站、App設(shè)計(jì)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源:
創(chuàng)新互聯(lián)