MySQL 配置文件详解:路径、优先级与核心参数
MySQL 的配置文件(通常名为 my.cnf 或 my.ini)用于设置数据库实例的运行参数(如端口、缓存大小、字符集等)。若未指定配置文件,MySQL 会使用编译时的默认参数启动。本文详细解析配置文件的查找路径、优先级及常用配置。
配置文件的查找路径与优先级
MySQL 启动时会按固定顺序查找配置文件,若多个文件中存在相同参数,后读取的文件会覆盖前面的配置。
查看配置文件路径
通过以下命令可查看当前 MySQL 实例查找配置文件的顺序:
1 | mysql --help | grep "my.cnf" # Linux/Mac |
典型输出(Linux 为例):
1 | order of preference, my.cnf, $MYSQL_TCP_PORT, |
- 路径说明:
/etc/my.cnf:系统级配置(对所有用户生效)。/etc/mysql/my.cnf:MySQL 专用系统配置目录。/usr/local/mysql/etc/my.cnf:MySQL 安装目录下的配置(适用于源码安装)。~/.my.cnf:用户级配置(仅对当前用户生效)。
优先级规则
- 按列出的路径顺序依次读取,越靠后的文件优先级越高。
- 若参数在多个文件中重复,以最后一个文件的配置为准。
- 命令行参数(如
mysqld --port=3307)优先级最高,会覆盖配置文件中的同名参数。
配置文件的基本结构
配置文件采用 “分段式” 结构,不同模块的参数放在对应的 [分段名] 下:
1 | # 全局配置(对所有模块生效) |
- 常用分段:
[mysqld]:核心服务配置(最常用,设置服务器参数)。[mysql]:客户端工具配置(如mysql命令行)。[mysqld_safe]:与服务启动相关的配置(如日志、进程文件)。[client]:所有客户端工具的通用配置(如mysql、mysqldump)。
核心配置参数详解
基础服务参数
1 | [mysqld] |
字符集与校对规则
1 | [mysqld] |
- 推荐使用
utf8mb4(兼容utf8,且支持 4 字节字符如 emoji),避免使用utf8(实际是 utf8mb3,不支持 4 字节字符)。
日志配置
1 | [mysqld] |
性能优化参数
1 | [mysqld] |
配置文件的修改与生效
修改配置:
用文本编辑器(如vim)修改对应路径的配置文件,例如:1
sudo vim /etc/my.cnf
重启服务使配置生效:
1
2
3
4
5
6
7
8
9Linux(systemd)
sudo systemctl restart mysqld
Linux(sysvinit)
sudo service mysqld restart
Windows(命令提示符,管理员权限)
net stop mysql
net start mysql验证配置:
登录 MySQL 后查询参数值,确认修改是否生效:1
2
3
4
5-- 查看端口号
SHOW VARIABLES LIKE 'port';
-- 查看字符集
SHOW VARIABLES LIKE 'character_set_server';
注意事项
权限问题:
配置文件及数据目录的权限需正确设置(通常为mysql:mysql),否则 MySQL 可能无法启动。参数兼容性:
部分参数(如query_cache_size)在 MySQL 8.0 中已废弃,需根据版本调整配置。备份配置:
修改配置前建议备份原文件(如cp /etc/my.cnf /etc/my.cnf.bak),以便出错时恢复。多实例配置:
若一台服务器运行多个 MySQL 实例,需为每个实例指定独立的配置文件(如my3307.cnf),启动时通过--defaults-file指定:1
mysqld --defaults-file=/etc/my3307.cnf &
v1.3.10