天天看點

MySQL 參數檔案及參數

MySQL的參數檔案為----my.cnf 

如何确定資料庫讀取的哪一個,指令給出了答案

[root@hack home]# mysql --help |grep my.cnf

                      order of preference, my.cnf, $MYSQL_TCP_PORT,

/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 

[root@hack home]#

參數有的是為用戶端準備,有的是為伺服器準備

[root@hack home]# cat /etc/my.cnf | grep -v "^#"

[client]

port=3306

[mysqld]

datadir=/opt/mysql/data

basedir = /usr/local/mysql

socket=/usr/local/mysql/mysql.sock

user=mysql

character_set_server=utf8

server_id = 12

join_buffer_size = 128M

sort_buffer_size = 2M

pid-file=/opt/mysql/data/mysqld.pid

什麼是參數?

這個就好比是鍵跟值得關系 如read_buffer_size=12M read_buffer_size就是鍵 12M就是指

分為兩類動态和靜态的(隻讀),也可以分成是全局和局部的,動态的可以修改但是隻會在mysql server的整個生命周期中起作用,下次重新開機之後會重新根據參數配置檔案加載,是以要想永久生效還是修改配置檔案,局部隻對目前session有效,全局的對所有重新上來的會話有效,動态修改參數使用set [global] variables=key。

檢視參數

可以使用show variables like "variables_name" select @@session.variables_name select @@global.variables_name

如檢視read_buffer_size

mysql> set read_buffer_size=524288;

Query OK, 0 rows affected (0.07 sec)

mysql> select @@session.read_buffer_size;

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

| @@session.read_buffer_size |

|                     524288 |

1 row in set (0.00 sec)

mysql> select @@global.read_buffer_size;

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

| @@global.read_buffer_size |

|                    131072 |

mysql> show variables like "read_buffer_size%";

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

| Variable_name    | Value  |

| read_buffer_size | 524288 |

可以看到同樣設定了read_buffer_size但是session和global卻不一樣 因為我設定的時候沒有加global

如果更改靜态參數會有什麼結果呢

mysql> set global datadir='/opt';

ERROR 1238 (HY000): Variable 'datadir' is a read only variable

mysql> 

本文轉自 aklaus 51CTO部落格,原文連結:http://blog.51cto.com/aklaus/1632766

繼續閱讀