安装与配置
约 752 字大约 3 分钟
布欧-Lewyon
2026-05-15
首页 › MySQL › 运维与部署(在新窗口打开) › 安装与配置
MySQL 安装已在快速入门篇介绍过,本节聚焦生产环境的配置要点——my.cnf 参数调优、安全加固和常见问题。
生产环境配置模板(my.cnf)
以下是一个面向 8 GB 内存服务器的配置模板:
[mysqld]
# ===== 基础设置 =====
port = 3306
bind-address = 0.0.0.0 # 监听所有网卡(按需限制)
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
pid-file = /var/run/mysqld/mysqld.pid
user = mysql
# ===== 字符集(必须 utf8mb4) =====
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci
# ===== 连接 =====
max_connections = 500 # 最大连接数
max_connect_errors = 1000 # 最大错误连接数
wait_timeout = 600 # 非交互连接超时(秒)
interactive_timeout = 28800 # 交互连接超时(秒)
# ===== InnoDB 核心参数 =====
innodb_buffer_pool_size = 4G # 建议设置为系统内存的 50%~70%
innodb_log_file_size = 512M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit = 1 # 最安全的刷盘策略
innodb_file_per_table = 1 # 每表独立表空间
innodb_flush_method = O_DIRECT # 跳过 OS 缓存,减少双缓存
# ===== 脏页刷新 =====
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_max_dirty_pages_pct = 75
# ===== 日志 =====
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = ON
# ===== 二进制日志(用于主从复制和时间点恢复) =====
server_id = 1 # 主从复制时每个实例唯一
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
binlog_expire_logs_seconds = 604800 # 保留 7 天
max_binlog_size = 100M
# ===== 安全 =====
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
skip-name-resolve # 跳过 DNS 反向解析,加速连接
local-infile = 0 # 禁用 LOAD DATA LOCAL
# ===== 临时表 =====
tmp_table_size = 64M
max_heap_table_size = 64M
# ===== 排序与分组 =====
sort_buffer_size = 2M
join_buffer_size = 2M关键参数说明
innodb_buffer_pool_size
InnoDB 的内存缓存,缓存数据页和索引页。这是 MySQL 最关键的调优参数:
-- 查看当前值
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
-- 查看命中率(理想值 > 99%)
SHOW STATUS LIKE 'Innodb_buffer_pool_read_%';
-- 计算公式: Innodb_buffer_pool_read_requests /
-- (Innodb_buffer_pool_read_requests + Innodb_buffer_pool_reads) * 100| 系统内存 | 推荐 Buffer Pool |
|---|---|
| 4 GB | 2 GB |
| 8 GB | 4~5 GB |
| 16 GB | 8~12 GB |
| 32 GB | 16~24 GB |
连接相关
-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';
SHOW STATUS LIKE 'Max_used_connections';
-- 查看被拒绝的连接数(如果 > 0,需要增大 max_connections)
SHOW STATUS LIKE 'Connection_errors_max_connections';sql_mode
-- 建议开启 STRICT_TRANS_TABLES(严格模式)
-- 关闭 ONLY_FULL_GROUP_BY(如果业务不严格需完全遵循标准)
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';MySQL 8.0 密码认证
caching_sha2_password
MySQL 8.0 默认使用 caching_sha2_password 认证插件,安全性更高,但旧客户端不支持:
-- 创建用户时指定认证插件
CREATE USER 'app'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
-- 修改已有用户的认证插件
ALTER USER 'app'@'%' IDENTIFIED WITH mysql_native_password BY 'new_password';
-- 查看用户认证信息
SELECT user, host, plugin FROM mysql.user;mysql_secure_installation 安全检查
安装 MySQL 后建议立即执行:
mysql_secure_installation它将引导完成:
- 设置 root 密码(如未设置)
- 移除匿名用户
- 禁止 root 远程登录
- 删除 test 数据库
- 刷新权限表
小结
my.cnf是 MySQL 核心配置文件,关键参数包括innodb_buffer_pool_size(50~70% 内存)、max_connections、binlog设置。innodb_flush_log_at_trx_commit = 1保障持久性,生产必须。skip-name-resolve加速连接建立。- MySQL 8.0 默认
caching_sha2_password,旧客户端需改用mysql_native_password。 - 安装后运行
mysql_secure_installation做安全加固。
