mysql作为常用的关系型数据库,安装完成后默认的初始配置往往没有开启安全限制,存在不少可被利用的漏洞,修改默认配置是提升数据库安全性的基础操作,能有效避免多数常见的入侵风险。

需要修改的核心安全配置项
1. 设置root用户密码
默认安装的mysql可能允许root用户无密码登录,这是最大的安全隐患,需要第一时间设置强密码。如果是刚安装完成还未做过任何配置,可以通过以下命令登录后修改密码:
-- 登录mysql,若未设置密码直接回车即可
mysql -u root -p
-- 切换到mysql系统库
USE mysql;
-- 修改root用户密码,注意mysql不同版本密码字段可能不同,5.7及以上版本为authentication_string
UPDATE user SET authentication_string=PASSWORD('Your_Strong_Password_123') WHERE User='root';
-- 刷新权限使配置生效
FLUSH PRIVILEGES;
2. 禁止root用户远程登录
默认root用户可能允许从任意主机远程连接,建议仅保留本地登录权限,避免root账号被暴力破解后直接控制整个数据库。修改方式如下:
-- 登录mysql后执行,将root用户的host改为localhost,仅允许本地登录 UPDATE user SET Host='localhost' WHERE User='root' AND Host='%'; -- 刷新权限 FLUSH PRIVILEGES;
3. 删除匿名用户和测试数据库
默认安装会创建匿名用户和名为test的测试数据库,匿名用户无需密码即可登录,测试数据库默认对所有用户开放权限,都需要删除:
-- 删除匿名用户,匿名用户的User字段为空 DELETE FROM user WHERE User=''; -- 删除test测试数据库 DROP DATABASE IF EXISTS test; -- 刷新权限 FLUSH PRIVILEGES;
4. 修改配置文件mysqld段的安全参数
除了用户权限相关的配置,还需要修改mysql的配置文件(linux一般在/etc/my.cnf,windows一般在my.ini),在[mysqld]段添加或修改以下参数:
[mysqld] # 禁止加载本地数据文件,避免通过LOAD DATA LOCAL INFILE读取服务器文件 local-infile=0 # 关闭符号链接支持,防止通过符号链接访问系统文件 symbolic-links=0 # 限制连接数,避免被恶意请求打满连接 max_connections=100 # 错误日志路径,便于排查异常登录等问题 log-error=/var/log/mysql/error.log # 关闭远程访问,仅监听本地回环地址 bind-address=127.0.0.1
配置修改后的验证方法
完成上述配置修改后,需要逐一验证是否生效:
- 尝试用空密码登录root,应该提示密码错误无法登录
- 从其他服务器尝试远程连接当前mysql的root用户,应该提示连接被拒绝
- 查看mysql用户表,确认已经没有匿名用户,test数据库已经不存在
- 查看mysql进程监听的地址,确认仅监听127.0.0.1而不是0.0.0.0
注意事项
修改配置文件后需要重启mysql服务才能生效,linux系统重启命令为systemctl restart mysqld,windows系统可以在服务管理器中重启mysql服务。如果是生产环境,修改配置前建议先备份原有的配置文件和用户权限表,避免操作失误导致数据库无法访问。另外密码设置要符合复杂度要求,包含大小写字母、数字和特殊字符,长度不低于8位。