温馨提示×

mysql在ubuntu中的安全设置有哪些

小樊
40
2025-12-14 07:37:16
栏目: 云计算

Ubuntu 上 MySQL 的安全设置清单

一 基础加固

  • 运行安全初始化脚本:执行 sudo mysql_secure_installation,依次完成设置 root 强密码、删除匿名用户、禁止 root 远程登录、删除 test 数据库、刷新权限表。
  • 检查并调整 root 认证方式:Ubuntu 常见为 auth_socket,若需密码登录可执行
    SELECT user,plugin,host FROM mysql.user;
    ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘强密码’;
    FLUSH PRIVILEGES;
  • 创建最小权限专用账户替代 root 日常管理,遵循最小权限原则。
  • 保持系统与数据库及时更新(安全补丁)。

二 网络与访问控制

  • 默认仅本地访问:在 /etc/mysql/mysql.conf.d/mysqld.cnf[mysqld] 中设置 bind-address = 127.0.0.1;如需完全禁用网络可使用 skip-networking(仅本机 socket 可用)。
  • 需要远程访问时:将 bind-address 改为 0.0.0.0(或注释掉该行),并仅为特定来源 IP 创建账户(如 ‘app’@‘192.168.1.%’),避免使用 ‘%’ 通配。
  • 防火墙策略:仅放行必要来源与端口,例如 UFW 放行 3306 且仅对受控网段开放。
  • 加固项:禁用本地文件导入风险(如 local-infile=0),并限制 SHOW DATABASES(如 skip-show-database)。

三 加密与认证

  • 启用传输加密(SSL/TLS):在 [mysqld] 配置 ssl-ca /path/ca.pem、ssl-cert /path/server-cert.pem、ssl-key /path/server-key.pem,重启后在 MySQL 内用 SHOW VARIABLES LIKE ‘%ssl%’; 验证。
  • 强制或优先使用加密连接:为用户设置 REQUIRE SSL,或在客户端连接时指定 –ssl-mode=REQUIRED
  • 证书管理:自签或采购 CA 证书,妥善保护 私钥,定期轮换。

四 权限与账户管理

  • 按库/表/列授予权限,避免使用 GRANT ALL PRIVILEGES ON . TO … WITH GRANT OPTION; 给应用账户。
  • 删除或禁用不必要的账户与主机(如匿名账户、空主机账户),并为每个业务创建唯一账户
  • 定期审计:查看 mysql.user 中的 user/host/plugin/authentication_string,清理异常来源与弱认证方式。
  • 避免共享账户,结合应用角色拆分权限,做到人-账户-权限可追溯。

五 运行与审计

  • 日志与审计:启用并合理轮转 错误日志、慢查询日志、二进制日志;仅在排障时临时开启 general_log,避免性能与敏感信息泄露。
  • 备份与恢复:制定定期 mysqldump 或物理备份策略,异地/离线保存,定期演练恢复。
  • 安全基线核查:定期复核 MySQL 版本、用户权限、端口开放、加密状态与备份可用性;Ubuntu 上可用 sudo systemctl status mysql 检查服务状态。

0