MySQL安装完成后,不能直接投入生产使用,需完成基础安全与性能配置。核心是修改默认设置、加固访问控制、调整关键参数,避免常见风险(如空密码、远程无限制访问、日志缺失等)。
修改root密码并禁用匿名用户
安装后root可能无密码或允许空密码登录,必须立即设置强密码,并清理安全隐患:
启动MySQL服务后,用mysql -u root -p登录(若无需密码,可先用sudo mysqld_safe --skip-grant-tables &临时跳过验证,再更新密码) 执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPass123!'; 删除匿名用户:DELETE FROM mysql.user WHERE User=''; 刷新权限:FLUSH PRIVILEGES;限制root远程访问,创建专用管理账号
root账号不应开放远程登录,应单独创建带限制的管理用户:
禁止root远程登录:DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; 新建管理员账号(仅限内网IP):CREATE USER 'admin'@'192.168.1.%' IDENTIFIED BY 'AdminPass456!'; 赋予必要权限(避免GRANT ALL):GRANT SELECT, INSERT, UPDATE, DELETE, PROCESS, REPLICATION CLIENT ON *.* TO 'admin'@'192.168.1.%'; 启用密码策略(可选但推荐):INSTALL PLUGIN validate_password SONAME 'validate_password.so';配置my.cnf关键参数(Linux下通常为/etc/my.cnf或/etc/mysql/my.cnf)
基础运行稳定性依赖合理配置,重点关注字符集、日志、连接与内存:
[client]:添加default-character-set = utf8mb4 [mysqld]: character-set-server = utf8mb4(统一字符集,支持emoji) collation-server = utf8mb4_unicode_ci bind-address = 127.0.0.1(默认仅本地监听;如需内网访问,改为192.168.1.0/24对应网段IP) max_connections = 200(根据服务器内存调整,初始建议100–300) log-error = /var/log/mysql/error.log(确保错误日志路径存在且MySQL有写入权限) slow_query_log = ON,slow_query_log_file = /var/log/mysql/slow.log,long_query_time = 2(开启慢查询日志,便于后续优化) sql_mode = STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION(启用严格模式,避免隐式转换问题) 修改后重启服务:sudo systemctl restart mysql(或mysqld)初始化数据库安全加固(mysql_secure_installation)
官方提供的交互式脚本,快速完成多项基础加固:
运行sudo mysql_secure_installation 按提示操作:设置root密码强度、删除匿名用户、禁止root远程登录、删除test库、重载权限表 即使已手动配置,也建议运行一次确保无遗漏(尤其在新装环境中)