1.?[client]?區塊
-
作用:
適用于?所有 MySQL 客戶端工具(如?mysql
?命令行客戶端、mysqldump
、mysqladmin
?等)。 -
常見配置項:
[client] host = 127.0.0.1 # 默認連接的服務器地址 port = 3306 # 默認端口 user = root # 默認用戶名 password = your_password # 默認密碼(不推薦明文存儲) default-character-set = utf8mb4 # 客戶端字符集
-
使用場景:
統一配置所有客戶端工具的默認連接參數,避免每次手動輸入。
2.?[mysqld]?區塊
-
作用:
配置?MySQL 服務器(mysqld
?進程)的核心行為,直接影響數據庫的運行。 -
常見配置項:
[mysqld] datadir = /var/lib/mysql # 數據存儲目錄 port = 3306 # 服務監聽端口 bind-address = 0.0.0.0 # 監聽的 IP(0.0.0.0 表示所有 IP) character-set-server = utf8mb4 # 服務端字符集 max_connections = 200 # 最大并發連接數 innodb_buffer_pool_size = 1G # InnoDB 緩沖池大小(重要性能參數)
-
使用場景:
調整服務器性能、安全、日志、存儲引擎等核心參數。
3.?[mysqldump]?區塊
-
作用:
配置?mysqldump
?備份工具?的默認行為。 -
常見配置項:
[mysqldump] max_allowed_packet = 256M # 允許導出的最大數據包大小 quick # 逐行導出(避免內存溢出) single-transaction # 事務模式下導出(保證數據一致性) lock-tables = FALSE # 是否鎖定所有表(默認 TRUE)
-
使用場景:
優化備份性能或解決大表導出時的內存問題。
4.?[mysql]?區塊
-
作用:
專門配置?mysql
?命令行客戶端?的行為(僅影響該工具)。 -
常見配置項:
[mysql] auto-rehash # 啟用自動補全(默認開啟) prompt = "\u@\h:\d> " # 自定義提示符(如 user@host:database>) default-character-set = utf8mb4 # 客戶端字符集 pager = less -SFX # 設置分頁顯示工具(如 less)
-
使用場景:
自定義命令行交互體驗(如提示符、分頁顯示方式)。
配置文件加載優先級
MySQL 按以下順序加載配置文件(后加載的配置會覆蓋前面的):
-
/etc/my.cnf
-
/etc/mysql/my.cnf
-
~/.my.cnf
(用戶家目錄)
關鍵區別與常見問題
配置塊 | 影響對象 | 典型用途 | 覆蓋關系 |
---|---|---|---|
[client] | 所有客戶端工具 | 統一管理連接參數(如密碼、字符集) | 被工具專屬區塊(如?[mysql] )覆蓋 |
[mysqld] | MySQL 服務器 | 調整服務端性能、安全、存儲等核心參數 | 獨立生效 |
[mysqldump] | mysqldump ?備份工具 | 優化備份行為或解決導出問題 | 覆蓋?[client] ?的同名配置 |
[mysql] | mysql ?命令行客戶端 | 自定義交互體驗(提示符、自動補全等) | 覆蓋?[client] ?的同名配置 |
示例:綜合配置文件
# 所有客戶端工具共用配置
[client]
port = 3306
user = admin
password = secure_password
default-character-set = utf8mb4# MySQL 服務端配置
[mysqld]
datadir = /var/lib/mysql
bind-address = 0.0.0.0
innodb_buffer_pool_size = 2G
max_connections = 500# mysqldump 配置
[mysqldump]
max_allowed_packet = 512M
single-transaction = TRUE# mysql 命令行客戶端配置
[mysql]
prompt = "\u@\h [\d]> "
pager = less -SFX
注意事項
-
敏感信息安全:
避免在配置文件中明文存儲密碼(可使用?mysql_config_editor
?加密存儲憑據)。 -
配置沖突:
若同一參數在多個區塊重復定義,優先級為:工具專屬區塊 > [client] > 默認值
。 -
驗證配置:
修改后重啟 MySQL 服務生效:systemctl restart mysql