在MySQL例項啟動時,資料庫會先去讀一個配置引數檔案(my.cnf),用來尋找資料庫的各種檔案所在位置以及指定某些初始化引數。在預設情況下,MySQL例項會按照一定的順序在指定的位置進行讀取,透過下面的語句可以檢視讀取引數檔案的順序。
mysql --help | grep my.cnf
# 輸出的資訊如下:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
#提示:如果想指定預設的引數檔案,需要配合--defaults-file選項,如:
mysqld --defaults-file=/etc/my3306.cnf &
影片講解如下:
https://www.bilibili.com/video/BV1Yyeje2Ecd/?aid=112958176757...
這裡展示了一個典型的my.cnf引數檔案。
[mysqld]
server-id=1
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/data/error.log
socket=/tmp/mysql.sock
pid-file=/usr/local/mysql/data/mysql.pid
character-set-server=utf8
lower_case_table_names=1
innodb_log_file_size=1G
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
[client]
port=3306
default-character-set=utf8
在my.cnf檔案中,引數分為Server Section和Client Section兩塊,下表列出了一些主要的引數及其含義。
MySQL把引數分為兩類:動態引數和靜態引數。
- 動態引數
MySQL例項在執行的過程中可以對引數進行線上的修改。可以透過命令set global或者set session兩個命令在資料庫中完成設定。 - 靜態引數
顧名思義,就是無法線上修改引數。必須透過my.cnf引數檔案進行修改,修改後需要重啟MySQL資料庫服務。