当前位置: 首页 > article >正文

第九篇:MySQL 安全加固与访问控制策略实战

数据库的安全不仅仅是防止外部入侵,更包括合理配置账户权限、日志审计、网络加密、配置加固等。本文将系统性梳理 MySQL 的安全机制与实战加固方法,助你构建安全可靠的数据库运行环境。

一、数据库安全风险面

数据库常面临的威胁:

  • 弱口令或默认账户;

  • SQL 注入攻击;

  • 非授权访问;

  • 数据传输被监听(中间人攻击);

  • 内部人员越权操作;

  • 日志信息泄露。

 二、用户权限管理与最小授权原则

1. 查看当前用户权限

SHOW GRANTS FOR 'user'@'host';

2. 创建账户并授权

-- 创建用户
CREATE USER 'dev'@'192.168.1.%' IDENTIFIED BY 'StrongP@ss123';-- 授权指定数据库操作权限
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'dev'@'192.168.1.%';-- 撤销权限
REVOKE UPDATE ON mydb.* FROM 'dev'@'192.168.1.%';

3. 删除用户

DROP USER 'dev'@'192.168.1.%';

建议

  • 禁用或删除匿名账户和 test 库;

  • 给用户只授权必要的权限,禁止使用 GRANT, FILE, SUPER 等高危权限;

  • 使用 REVOKE 定期收回不必要权限。

三、数据库访问加密与 SSL 配置

1. 启用 SSL 传输加密

修改配置文件 my.cnf

[mysqld] ssl-ca=/etc/mysql/ssl/ca.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem

重启 MySQL 并验证:

SHOW VARIABLES LIKE '%ssl%';

2. 强制客户端使用 SSL 连接

GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'%' REQUIRE SSL;

四、配置文件加固建议

编辑 /etc/my.cnf 添加或确认以下设置:

skip-name-resolve # 禁用 DNS 解析,加速连接 skip-symbolic-links # 防止符号链接绕过权限 local-infile=0 # 禁止 LOAD DATA LOCAL INFILE,防止 SQL 注入 secure-file-priv="/tmp" # 限制导入导出路径

 五、SQL 注入防御与审计机制

1. SQL 注入防御建议

  • 应用层使用参数化查询(如 prepare、ORM 绑定);

  • 数据库层禁止 local_infile

  • 限权用户不具备 FILESUPER 等权限。

2. 启用审计日志(推荐使用插件)

使用 MySQL Enterprise Audit 或开源审计插件:

INSTALL PLUGIN audit_log SONAME 'audit_log.so';

记录登录、DDL/DML 等行为,提升可追溯性。

六、防止暴力破解与网络入侵

1. 配置防火墙(iptables/UFW)

  • 仅允许可信 IP 登录 MySQL 端口(3306);

  • 拒绝外部未授权访问。

# 示例:只允许 192.168.1.0/24 网段访问 MySQL iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j DROP

2. 限制连接来源(bind-address)

bind-address = 127.0.0.1 # 仅允许本地连接

或绑定指定内网 IP。

七、数据库日志与定期审计

建议开启以下日志并定期审查:

日志类型描述
error.log启动、运行、崩溃信息
slow.log慢查询日志,便于优化 SQL
general.log所有查询(不推荐长期启用)
audit.log审计插件生成的操作记录日志

可配合 logrotate 定期归档和压缩。

八、安全加固自动化脚本(简要)

#!/bin/bash mysql -u root -p$1 <<EOF -- 删除匿名用户 DELETE FROM mysql.user WHERE User=''; -- 禁止 root 远程登录 UPDATE mysql.user SET Host='localhost' WHERE User='root'; -- 删除 test 数据库 DROP DATABASE IF EXISTS test; -- 刷新权限 FLUSH PRIVILEGES; EOF

 九、最佳实践总结

安全维度加固建议
账户与权限分权分域、禁用空口令、启用强认证
数据传输启用 SSL、限制客户端连接
网络与端口关闭公网访问、使用防火墙、绑定内网地址
操作审计开启审计日志、记录用户操作
系统与文件权限严控配置文件访问权限(如 chmod 600 my.cnf
自动化与策略脚本自动化+定期扫描弱点(如使用 Lynis、MySQLTuner)

总结

  • 安全策略应覆盖用户、网络、系统和应用多维度;

  • 合理配置 MySQL 权限和加密机制是第一道防线;

  • 日志审计与访问控制是提升可控性的关键;

  • 安全是一个持续过程,需结合业务定期检查与加固。

http://www.lryc.cn/news/2395069.html

相关文章:

  • 神经网络-Day40
  • WindowServer2022下docker方式安装dify步骤
  • Java五种方法批量处理List元素全解
  • springboot文件上传下载
  • webpack CDN打包优化
  • ARM内核一览
  • Rust 和 Python 如何混合使用
  • 台式电脑CPU天梯图_2025年台式电脑CPU天梯图
  • 2025年渗透测试面试题总结-匿名[校招]安全服务工程师(题目+回答)
  • Deseq2:MAG相对丰度差异检验
  • CTFHub-RCE 命令注入-过滤目录分隔符
  • 从零开始的数据结构教程(七) 回溯算法
  • CentOS-stream-9 Zabbix的安装与配置
  • 开源是什么?我们为什么要开源?
  • 【unity游戏开发——编辑器扩展】EditorApplication公共类处理编辑器生命周期事件、播放模式控制以及各种编辑器状态查询
  • elasticsearch低频字段优化
  • React---day3
  • PyCharm接入DeepSeek,实现高效AI编程
  • 前端面经 get和post区别
  • CTFSHOW-WEB-36D杯
  • MySQL connection close 后, mysql server上的行为是什么
  • RabbitMQ vs MQTT:深入比较与最新发展
  • 金砖国家人工智能高级别论坛在巴西召开,华院计算应邀出席并发表主题演讲
  • 【KWDB 创作者计划】_再热垃圾发电汽轮机仿真与监控系统:KaiwuDB 批量插入10万条数据性能优化实践
  • CentOS 7 安装docker缺少slirp4netnsy依赖解决方案
  • Android第十一次面试多线程篇
  • 安全,稳定可靠的政企即时通讯数字化平台
  • craw4ai 抓取实时信息,与 mt4外行行情结合实时交易,基本面来觉得趋势方向,搞一个外汇交易策略
  • Linux之守护进程
  • LiquiGen流体导入UE