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