国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql 多個參數選項文件my cnf優先級研發

2024-07-24 12:32:22
字體:
來源:轉載
供稿:網友
        my.cnf是mysql服務器在unix平臺下默認的配置文件的文件名。
 
       輸入my_print_defaults可以得出mysql server啟動時所讀取的my.cnf的順序:(一般為該四個,根據安裝方式、OS發行版、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,第三個讀/usr/local/mysql/my.cnf,其中,第三個為basedir,即mysql安裝目錄。
第四個為~/.my.cnf,這個~即為/home/$USERNAME,而$USERNAME為服務器啟動用戶。
  
在手冊中給出的順序是(由上至下讀取)
 
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
  
但通用的讀取先后順序為:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
省略部分路徑。
 
其中/etc/my.cnf與/etc/mysql/my.cnf為全局選項文件
而~/.my.cnf為用戶選項文件
  
場景一:
Global options與Global options同時存在。
即/etc/my.cnf與/etc/mysql/my.cnf同時存在
 
疑問:如果/etc/my.cnf存在,還會去找/etc/mysql/my.cnf嗎?
如果是,那么是直接使用/etc/mysql/my.cnf文件
還是先使用/etc/my.cnf,再用/etc/mysql/my.cnf中呢?如果參數相同,后者覆蓋前者嗎?
  
實驗:
/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 variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+
1 row in set (0.00 sec)
 
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 12.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
  
此時先用了/etc/my.cnf中的autocommit=off。
雖然slow_query_log都有設置,但是參數相同,/etc/mysql/my.cnf優先級更大,故為12s。
  
繼續實驗:
刪除/etc/my.cnf
  
$ sudo mv /etc/my.cnf /etc/my.cnf.bk
  
重啟服務器,查詢:
 
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.00 sec)
 
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 12.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
 
此時只用了/etc/mysql/my.cnf。
  
場景二:
Global options與User-specific options同時存在
即/etc/my.cnf與~/.my.cnf同時存在
  
實驗:
同樣先刪除其他配置文件,確保只剩如下兩個位置:
 
/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 variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+
1 row in set (0.00 sec)
 
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 12.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
  
autocommit默認是on
long_query_time默認是10
  
說明/etc/my.cnf已經生效
autocommit = off
雖然有設置
long_query_time = 15
  
但是
~/.my.cnf
中有設置
long_query_time = 12
故~/.my.cnf也有生效,在存在相同選項時,優先級高于Global options的/etc/my.cnf。
  
結論:
當多個my.cnf存在時:
Global options與User-specific options同時存在時,User-specific options優先級高于Global options并兩者都會讀取,若選項相同,則優先級高者覆蓋前者
雖然/etc/my.cnf與/etc/mysql/my.cnf均為Global options,但是規則也同樣和Global options與User-specific options一致。
 

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大姚县| 栾川县| 宁陵县| 株洲县| 和静县| 遂昌县| 萍乡市| 九龙坡区| 瓦房店市| 邛崃市| 左贡县| 越西县| 明水县| 罗甸县| 崇州市| 宝鸡市| 抚松县| 安庆市| 阜平县| 会宁县| 尉犁县| 麻阳| 榆林市| 泰宁县| 武城县| 龙陵县| 绥阳县| 广元市| 宣恩县| 吉首市| 漳平市| 灵川县| 湟源县| 固安县| 称多县| 江安县| 朝阳区| 宁强县| 武平县| 剑河县| 中宁县|