首页 > 运维 > linux运维 > 正文

如何配置数据库 mysql安全

P粉602998670
发布: 2025-08-29 10:52:01
原创
857人浏览过

为 root 用户设置强密码并创建最小权限的专用用户;2. 禁止 root 远程登录,删除 'root'@'%' 账户并通过 ssh 隧道管理;3. 修改配置文件 bind-address = 127.0.0.1 限制网络监听;4. 使用防火墙(如 ufw)限制访问源 ip;5. 定期更新 mysql 版本并打安全补丁;6. 启用通用日志或审计插件进行行为审计;7. 配置 ssl/tls 加密连接并强制用户使用;8. 删除匿名用户和测试数据库,配置 skip-test-db;9. 遵循最小权限原则,避免授予高危权限;10. 定期加密备份数据并测试恢复流程,持续监控与审查权限以保障数据库安全。

如何配置数据库 mysql安全

配置 MySQL 数据库的安全性是保障数据完整性和防止未授权访问的关键步骤。以下是一些实用且必要的安全配置建议,适用于大多数生产环境。


1. 修改默认管理员账户和密码

MySQL 安装后默认有一个

root
登录后复制
用户,通常没有密码或使用弱密码,这是常见的攻击入口。

建议做法:

  • 立即为
    root
    登录后复制
    用户设置强密码:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
    FLUSH PRIVILEGES;
    登录后复制
  • 避免在生产环境中使用
    root
    登录后复制
    账户进行日常操作。
  • 创建具有最小权限的专用用户用于应用程序连接:
    CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword!';
    GRANT SELECT, INSERT, UPDATE ON yourdb.* TO 'appuser'@'localhost';
    登录后复制

2. 禁止远程 root 登录

默认情况下,

root
登录后复制
用户可能允许从任意主机登录(如
'root'@'%'
登录后复制
),这极大增加了被暴力破解的风险。

安全措施:

  • 仅允许
    root
    登录后复制
    从本地登录:
    -- 删除远程 root 用户
    DROP USER 'root'@'%';
    DROP USER 'root'@'::1'; -- IPv6
    登录后复制
  • 如果必须远程管理,使用 SSH 隧道连接,而不是开放 MySQL 的 3306 端口到公网。

3. 关闭不必要的网络暴露

MySQL 默认监听 3306 端口。如果数据库仅本地使用,应禁止网络监听。

修改配置文件(通常是

/etc/mysql/mysql.conf.d/mysqld.cnf
登录后复制
/etc/my.cnf
登录后复制
):

[mysqld]
bind-address = 127.0.0.1
登录后复制

这表示只接受来自本机的连接。如需远程访问,应通过防火墙限制访问 IP,而不是开放给所有人。


4. 启用防火墙限制访问

即使 MySQL 开放了网络端口,也应通过系统防火墙控制访问源。

例如使用

ufw
登录后复制
(Ubuntu):

# 只允许特定 IP 访问 MySQL
sudo ufw allow from 192.168.1.100 to any port 3306
# 或者只允许本地访问
sudo ufw deny 3306
登录后复制

5. 定期更新和打补丁

MySQL 社区和官方会定期发布安全补丁。使用过时版本可能面临已知漏洞的攻击。

建议:

  • 使用官方发行版或受支持的发行版(如 Percona Server、MySQL Community Server)。
  • 定期检查并升级到稳定版本。
  • 订阅 MySQL 安全公告邮件。

6. 启用日志审计(可选但推荐)

记录登录尝试和查询行为有助于事后审计和入侵检测。

琅琅配音
琅琅配音

全能AI配音神器

琅琅配音89
查看详情 琅琅配音

配置:

[mysqld]
general_log = ON
general_log_file = /var/log/mysql/query.log

# 或启用更细粒度的审计插件(如 MySQL Enterprise Audit 或 MariaDB Audit Plugin)
登录后复制

注意:开启通用日志会影响性能,建议在调试或高安全需求时使用。


7. 使用加密连接(SSL/TLS)

防止数据在传输过程中被窃听,特别是跨公网的连接。

启用 SSL:

  • 检查是否支持 SSL:
    SHOW VARIABLES LIKE '%ssl%';
    登录后复制
  • 配置 MySQL 服务器使用 SSL 证书。
  • 强制用户使用加密连接:
    GRANT ... REQUIRE SSL;
    登录后复制

8. 删除匿名用户和测试数据库

安装时可能创建了匿名账户和

test
登录后复制
数据库,这些是常见攻击目标。

清理命令:

-- 删除匿名用户
DROP USER ''@'localhost';
DROP USER ''@'%';

-- 删除测试数据库
DROP DATABASE IF EXISTS test;
登录后复制

同时在配置文件中添加:

[mysqld]
skip-test-db
登录后复制

9. 限制数据库用户权限

遵循最小权限原则,避免授予

GRANT ALL
登录后复制
FILE
登录后复制
SUPER
登录后复制
等高危权限。

避免:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
登录后复制

推荐:

GRANT SELECT, INSERT, UPDATE ON appdb.* TO 'appuser'@'localhost';
登录后复制

10. 定期备份并保护备份文件

即使数据库本身安全,没有备份也可能因勒索攻击或误删导致数据丢失

建议:

  • 使用
    mysqldump
    登录后复制
    或物理备份工具定期备份。
  • 加密备份文件并离线存储。
  • 测试恢复流程。

基本上就这些核心措施。MySQL 安全不是一劳永逸的,需要持续监控、更新和审查权限。不复杂,但容易忽略细节。

以上就是如何配置数据库 mysql安全的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号