MySQL 的基础参数文件(通常叫 my.cnf 或 my.ini)是控制 MySQL 服务行为的核心配置文件。正确配置它,能显著提升稳定性、性能和安全性。关键不在于堆参数,而在于理解哪些参数必须调、哪些场景下怎么调。
配置文件位置与加载顺序
MySQL 启动时会按固定顺序查找多个路径的配置文件,找到即停止,优先级从高到低:
命令行指定的配置文件(如mysqld --defaults-file=/path/my.cnf) Windows 下:
%WINDIR%\my.ini或
%WINDIR%\my.cnfLinux/macOS 下:
/etc/my.cnf→
/etc/mysql/my.cnf→
$MYSQL_HOME/my.cnf→
~/.my.cnf
建议统一使用
/etc/my.cnf(Linux)或
C:\my.ini(Windows),避免多文件冲突。可用
mysql --help | grep "Default options"查看实际生效路径。
必须关注的基础参数([mysqld] 段)
以下参数影响启动、连接、存储和基本安全,新部署务必检查:
datadir:数据存放目录,必须存在且 MySQL 进程有读写权限;迁移数据库时必改 socket(Linux)或 pipe(Windows):本地连接通信方式,PHP/Python 客户端常需显式指定 port:默认 3306,若共存多个实例需区分 character-set-server 和 collation-server:设为utf8mb4和
utf8mb4_0900_ai_ci(MySQL 8.0+)或
utf8mb4_unicode_ci(5.7),避免中文乱码和 emoji 存储失败 default-storage-engine:推荐设为
InnoDB,MyISAM 已不推荐用于新业务 sql-mode:建议设为
STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,防止隐式类型转换和静默截断
内存与连接相关关键参数
这些参数直接影响并发能力和响应速度,需结合服务器内存合理设置:
max_connections:最大允许连接数,默认 151。Web 应用建议设为 200–500,过高易耗尽内存;可配合连接池降低实际需求 innodb_buffer_pool_size:InnoDB 缓存池大小,**最重要性能参数之一**。专用数据库建议设为物理内存的 50%–75%,但不低于 128MB;小内存机器(≤2GB)至少留 512MB 给系统 key_buffer_size:仅 MyISAM 使用,若不用 MyISAM 可设为 16M 或更低 tmp_table_size 和 max_heap_table_size:控制内存临时表上限,建议保持相等(如 64M),避免频繁落盘影响 GROUP BY / ORDER BY 性能日志与安全基础配置
保障可追溯性与最小权限原则:
log-error:错误日志路径,必须配置,便于排查启动失败或异常崩溃 slow_query_log 和 long_query_time:开启慢查询日志(如设为1秒),对性能优化至关重要 bind-address:默认
127.0.0.1表示仅本地访问;如需远程连接,改为
0.0.0.0并配合防火墙和用户权限严格限制 skip-networking:若只用 socket 连接,可启用此参数彻底禁用 TCP,增强安全 secure-file-priv:限制
LOAD DATA INFILE和
SELECT ... INTO OUTFILE的读写目录,设为具体路径(如
/var/lib/mysql-files/)比空值更安全
修改配置后,需重启 MySQL 生效:
systemctl restart mysqld(Linux)或服务管理器(Windows)。修改前建议备份原文件,并用
mysqld --validate-config检查语法是否正确。
