mysql root权限过大怎么控制_mysql安全配置建议

7次阅读

root权限不可降级,但可通过隔离、限制和替代实现可控安全:禁用远程root登录,仅保留localhost访问;创建最小权限专用账号;启用强密码策略并定期过期;绑定本地监听地址;确保mysql以非root用户运行。

mysql root权限过大怎么控制_mysql安全配置建议

root 权限本身不能“降级”,但你可以让它几乎不被日常使用——这才是真正可控的安全状态。关键不是削弱 root,而是隔离它、限制它、替代它。

只允许 root 从本地登录,禁用所有远程访问

生产环境出现 'root'@'%''root'@'192.168.x.x' 是高危信号,暴力破解和自动化扫描第一目标就是它。

  • 检查当前 root 登录点:
    SELECT User, Host FROM mysql.user WHERE User = 'root';
  • 删除远程实例(如果存在):
    DROP USER 'root'@'%';
    DROP USER 'root'@'192.168.1.100';
  • 确保只剩 'root'@'localhost' 和/或 'root'@'127.0.0.1';前者走 unix socket,后者走 TCP loopback,更安全
  • 顺手删掉匿名用户:
    DROP USER IF EXISTS ''@'localhost';

用专用管理账户替代 root 日常操作

dba 或运维配一个权限“够用但不过界”的账号,比反复提醒“别用 root”管用得多。

  • 创建最小必要权限的管理员:
    CREATE USER 'dba'@'localhost' IDENTIFIED BY 'SecurePass!2026';
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, SHOW DATABASES ON *.* TO 'dba'@'localhost' WITH GRANT OPTION;
  • 明确不授予这些高危权限:SUPERFILESHUTDOWNCREATE USER —— 它们在绝大多数运维场景中非必需
  • 如果应用需连接数据库,绝不用 root,而应建专用账号并限定库表范围,例如:
    GRANT SELECT, INSERT ON app_db.orders TO 'app_user'@'10.10.5.%';

强制密码强度 + 自动过期,堵住弱口令漏洞

很多入侵不是靠技术,是靠扫出 root123456 或空密码。

  • 启用密码验证插件(MySQL 5.7+):
    INSTALL PLUGIN validate_password SONAME 'validate_password.so';
    SET GLOBAL validate_password.policy = MEDIUM;
  • 设密码最小长度、字符类型要求(写进 /etc/my.cnf 永久生效):
    validate_password_length = 14
    validate_password_mixed_case_count = 1
    validate_password_number_count = 1
    validate_password_special_char_count = 1
  • 让密码定期失效,避免长期不换:
    ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;

监听地址和系统层加固,别让 root 暴露在网络里

即使你删了 'root'@'%',若 MySQL 还在监听 0.0.0.0:3306,攻击者仍可能通过其他用户或漏洞间接提权。

  • 修改配置文件,把 bind-address 改为 127.0.0.1(仅本地)或内网 IP:
    [mysqld]
    bind-address = 127.0.0.1
  • 确认 MySQL 进程以普通用户运行(非 root):
    ps aux | grep mysqld

    —— 应显示 mysql 用户,而非 root

  • 防火墙只放行可信来源的 3306 端口(如跳板机 IP),不要对全网开放

最常被忽略的一点:权限变更后必须执行 FLUSH PRIVILEGES;,否则新规则不生效;而很多人改完就以为完成了。还有,root 账户名本身可以重命名(比如改成 'sysadm'@'localhost'),虽然不能彻底防住有经验的攻击者,但能有效过滤掉大量自动化脚本的暴力尝试。

text=ZqhQzanResources