MySQL入門--設定session,global變數的方法

panpong發表於2017-01-08

mysql 設定session,global變數的方法

-- 設定或修改系統日誌有效期

SET GLOBAL expire_logs_days=8;

SHOW VARIABLES LIKE '%expire_logs_days%';

 

-- 設定或修改系統最大連線數

SET GLOBAL max_connections = 2648;

SHOW VARIABLES LIKE '%max_connections%';

 

-- 修改MYSQL自動編號步長

SHOW VARIABLES LIKE '%auto_increment%';

SET GLOBAL auto_increment_offset = 1;

SET GLOBAL auto_increment_increment = 1;

 

比如設定MySQL例項引數wait_timeout10.

 

1) 設定全域性變數方法1(不推薦): 修改引數檔案, 然後重啟mysqld

# vi /etc/my.cnf

[mysqld]

wait_timeout=10

# service mysqld restart

不過這個方法太生硬了, 線上服務重啟無論如何都應該儘可能避免.

 

2) 設定全域性變數方法2(推薦): 在命令列裡透過SET來設定, 然後再修改引數檔案

如果要修改全域性變數, 必須要顯示指定"GLOBAL"或者"@@global.", 同時必須要有SUPER許可權.

mysql> set global wait_timeout=10;

or

mysql> set @@global.wait_timeout=10;

 

然後檢視設定是否成功:

mysql> select @@global.wait_timeout=10;

or

mysql> show global variables like 'wait_timeout';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| wait_timeout  | 10    |

+---------------+-------+

如果查詢時使用的是show variables的話, 會發現設定並沒有生效, 除非重新登入再檢視. 這是因為使用show variables的話就等同於使用show session variables, 查詢的是會話變數, 只有使用show global variables查詢的才是全域性變數. 如果僅僅想修改會話變數的話, 可以使用類似set wait_timeout=10;或者set session wait_timeout=10;這樣的語法.

當前只修改了正在執行的MySQL例項引數, 但下次重啟mysqld又會回到預設值, 所以別忘了修改引數檔案:

# vi /etc/my.cnf

[mysqld]

wait_timeout=10

 

3) 設定會話變數方法: 在命令列裡透過SET來設定

如果要修改會話變數值, 可以指定"SESSION"或者"@@session."或者"@@"或者"LOCAL"或者"@@local.", 或者什麼都不使用.

mysql> set wait_timeout=10;

or

mysql> set session wait_timeout=10;

or

mysql> set local wait_timeout=10;

or

mysql> set @@wait_timeout=10;

or

mysql> set @@session.wait_timeout=10;

or

mysql> set @@local.wait_timeout=10;

 

然後檢視設定是否成功:

mysql> select @@wait_timeout;

or

mysql> select @@session.wait_timeout;

or

mysql> select @@local.wait_timeout;

or

mysql> show variables like 'wait_timeout';

or

mysql> show local variables like 'wait_timeout';

or

mysql> show session variables like 'wait_timeout';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| wait_timeout  | 10    |

+---------------+-------+

 

4) 會話變數和全域性變數轉換方法: 在命令列裡透過SET來設定

將會話變數值設定為對應的全域性變數值呢:

mysql> set @@session.wait_timeout=@@global.wait_timeout;

將會話變數值設定為MySQL編譯時的預設值(wait_timeout=28800):

mysql> set wait_timeout=DEFAULT;

這裡要注意的是, 並不是所有的系統變數都能被設定為DEFAULT, 如果設定這些變數為DEFAULT則會返回錯誤.

--end—

 

參考文獻:

1MySQLGlobalSessionBoth(Global & Session)範圍的DynamicNot Dynamic型別的變數的作用範圍和設定方法,http://blog.csdn.net/zyz511919766/article/details/13294479

2MySQL 裡設定或修改系統變數的幾種方法,

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-2132067/,如需轉載,請註明出處,否則將追究法律責任。

相關文章