首页主机资讯Linux MySQL如何进行安全设置

Linux MySQL如何进行安全设置

时间2025-12-18 12:43:03发布访客分类主机资讯浏览935
导读:Linux MySQL 安全设置清单 一 基础与加固 运行安全初始化脚本,完成设置root 强密码、移除匿名用户、禁止远程 root 登录、删除测试数据库等:执行命令:sudo mysql_secure_installation。完成后务...

Linux MySQL 安全设置清单

一 基础与加固

  • 运行安全初始化脚本,完成设置root 强密码、移除匿名用户、禁止远程 root 登录、删除测试数据库等:执行命令:sudo mysql_secure_installation。完成后务必用新密码测试登录。
  • 仅监听本地或内网接口:编辑配置文件(常见路径:/etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf),在 [mysqld] 加入 bind-address = 127.0.0.1(如需内网访问,可改为内网 IP),保存后重启服务:sudo systemctl restart mysql
  • 防火墙仅放行必要来源与端口(默认端口 3306):例如 UFW sudo ufw allow from 192.168.1.0/24 to any port 3306;如需变更端口,先改配置再放行新端口并重启。
  • 以最小权限系统账号运行:确认进程属主为 mysqlps -ef | grep mysqld),安装目录与数据目录属主/权限最小化(如 chown -R mysql:mysql /var/lib/mysql; chmod -R 700 /var/lib/mysql),配置文件中设置 user=mysql
  • 删除样例库:DROP DATABASE IF EXISTS test; (MySQL 8.0+ 默认已移除,但仍建议核查)。

二 身份与密码策略

  • 启用密码强度校验插件(MySQL 5.7/8.0 常见默认未启用):INSTALL PLUGIN validate_password SONAME 'validate_password.so'; ,按需调整策略与长度:SET GLOBAL validate_password.policy=STRONG; SET GLOBAL validate_password.length=12;
  • 清理空密码与弱口令账户:SELECT user,host FROM mysql.user WHERE authentication_string='' OR LENGTH(authentication_string)=0; ,对空口令账号执行 ALTER USER 'user'@'host' IDENTIFIED BY 'StrongPass!23';
  • 避免命令行明文密码与历史泄露:不要使用 -p'明文';检查并清理敏感环境变量 grep -r MYSQL_PWD /proc/*/environ;可禁用历史记录或将 ~/.mysql_history 链接到 /dev/null
  • 定期轮换密码并限制密码重用周期(如 90 天):ALTER USER 'admin'@'localhost' IDENTIFIED BY 'NewStrongPass!23'; ,并在用户表或策略中设置 password_lifetime

三 网络与连接安全

  • 禁用或限制 LOCAL INFILE 防止读取服务器文件:SET GLOBAL local_infile=0; ,配置文件中 local_infile=0
  • 可选:更改默认端口(如 3307)降低自动化扫描命中率;同时更新防火墙放行规则并重启服务。
  • 启用加密传输:在 [mysqld] 配置 ssl=ONssl-ca=/path/ca.pemssl-cert=/path/server-cert.pemssl-key=/path/server-key.pem;对敏感账户强制 SSL:GRANT USAGE ON *.* TO 'app'@'%' REQUIRE SSL;
  • 禁用 DNS 反向解析以提升性能与安全:skip-name-resolve=1
  • 限制导入/导出目录:secure_file_priv=/var/lib/mysql-files(仅允许该目录导入导出)。

四 权限最小化与账户管理

  • 按“一个应用一个用户”创建账号,主机精确到 IP/网段 而非 %
    • 只读账号:CREATE USER 'reader'@'192.168.1.50' IDENTIFIED BY 'R3adOnly!'; GRANT SELECT ON mydb.* TO 'reader'@'192.168.1.50';
    • 读写账号:CREATE USER 'app'@'192.168.1.50' IDENTIFIED BY 'AppPass!23'; GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'app'@'192.168.1.50';
  • 撤销与回收:REVOKE INSERT,UPDATE ON mydb.* FROM 'app'@'192.168.1.50'; ;不再使用的账号 DROP USER 'old'@'%'; ;变更后用 SHOW GRANTS FOR 'u'@'h'; 复核。
  • 避免授予危险全局权限(如 FILE、PROCESS、SUPER、SHUTDOWN、CREATE USER、GRANT OPTION、RELOAD、REPL_SLAVE)给业务账号;DBA 管理账号单独创建并限制来源。
  • MySQL 8.0+ 可使用角色统一管理权限,再分配给用户,便于审计与回收。

五 日志审计与运行维护

  • 启用错误日志并保护日志文件:log-error=/var/log/mysql/error.log,权限建议 mysql:mysql,640;确保日志存放在非系统分区,避免磁盘占满导致拒绝服务。
  • 慢查询日志用于性能与异常排查:slow_query_log=1slow_query_log_file=/var/log/mysql/slow.loglong_query_time=2
  • 关闭日志明文密码记录:log-raw=OFF
  • 企业版可启用审计日志(Enterprise Audit);社区版可结合通用日志/慢查询日志与第三方监控。
  • 定期更新 MySQL 版本与安全补丁;配置与数据目录、配置文件权限最小化(如 chmod 600 /etc/mysql/my.cnf);定期备份(如每日全备+binlog),并进行恢复演练。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux MySQL如何进行安全设置
本文地址: https://pptw.com/jishu/774991.html
ubuntu上sqladmin如何设置密码 如何解决MySQL慢查询问题

游客 回复需填写必要信息