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

MySQL 数据库安全配置最佳实践

文章目录

  • MySQL 数据库安全配置最佳实践
  • 账户与权限管理
    • 账户最小化原则
    • 权限最小化配置
    • 密码策略强化
  • 认证与访问控制
    • 禁用匿名账户
    • 启用安全认证
  • 网络安全防护
    • 访问源限制
    • 禁用远程root访问
    • 启用SSL加密
  • 日志审计与监控
    • 全量审计配置
    • 二进制日志管理
  • 服务端安全加固
    • 关键参数配置
    • 文件权限控制
  • 灾备与应急响应
    • 定期备份策略
    • 安全事件响应
  • 实施注意事项
  • 总结


MySQL 数据库安全配置最佳实践

在数据库管理中,保障数据库的安全性是至关重要的。MySQL 作为常见的关系型数据库管理系统,合理的安全配置能够有效预防安全漏洞和非法访问,确保数据的完整性、机密性和可用性。本文将深入探讨 MySQL 安全配置的最佳实践,包括账户配置要求、日志配置要求及其他关键配置项,并提供具体的操作步骤、回退操作及风险提示。


账户与权限管理

账户最小化原则

安全要求:禁止共享账户,按角色创建独立账户
检查方法

SELECT user, host FROM mysql.user 
WHERE user NOT IN ('mysql.sys','mysql.session','mysql.infoschema');

操作步骤

-- 创建应用账户(MySQL 5.7+)
CREATE USER 'testuser'@'192.168.1.%' IDENTIFIED BY 'TEst@123!';
GRANT SELECT, INSERT ON app_db.* TO 'testuser'@'192.168.1.%';-- 创建只读监控账户
CREATE USER 'monitor'@'192.168.1.1' IDENTIFIED WITH caching_sha2_password BY 'TEst@123!';
GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO 'monitor'@'192.168.1.1';

回退方案

SHOW GRANTS FOR 'testuser'@'192.168.1.%';  -- 记录原权限
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'testuser'@'192.168.1.%';
DROP USER IF EXISTS 'testuser'@'192.168.1.%';

风险提示:删除账户前需确认相关应用已下线,避免服务中断


权限最小化配置

安全要求:遵循最小权限原则
检查工具

mysql> SHOW GRANTS FOR CURRENT_USER();  -- 查看当前用户权限
mysql> SELECT * FROM information_schema.user_privileges;  -- 全量权限审计

高危权限清单

  • FILE:允许文件系统访问
  • SUPER:绕过权限限制
  • PROCESS:查看所有会话
  • RELOAD:刷新权限/日志
  • SHUTDOWN:关闭数据库

权限回收示例

REVOKE DROP, ALTER, CREATE USER ON *.* FROM 'testuser'@'%';

密码策略强化

企业级密码策略

-- 全局密码策略(MySQL 8.0+)
SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.mixed_case_count = 2;
SET GLOBAL validate_password.number_count = 2;
SET GLOBAL validate_password.special_char_count = 1;

具体含义如下:

  1. SET GLOBAL validate_password.policy = STRONG;
  • 作用: 设置密码复杂度要求的策略为 STRONG(强)
  • 解释:validate_password.policy 中,常见的值有:
    • LOW:只要求密码长度大于等于 8 个字符。
    • MEDIUM:要求密码不仅具有足够的长度,还要求包括字母、数字及特殊字符。
    • STRONG:要求密码长度和复杂度更高,通常需要包括大写字母、小写字母、数字和特殊字符。
  1. SET GLOBAL validate_password.length = 12;
  • 作用: 设置密码的最小长度为 12 个字符
  • 解释: 这个设置规定了所有用户密码必须至少包含 12 个字符。较长的密码比短密码更难以被破解。
  1. SET GLOBAL validate_password.mixed_case_count = 2;
  • 作用: 设置密码中 大写字母和小写字母 的最小个数为 2
  • 解释: 这意味着密码中必须至少包含 2 个大写字母和 2 个小写字母,这样可以提高密码的复杂度。
  1. SET GLOBAL validate_password.number_count = 2;
  • 作用: 设置密码中 数字 的最小个数为 2
  • 解释: 这要求密码至少包含 2 个数字,数字的加入可以增加密码的复杂性。
  1. SET GLOBAL validate_password.special_char_count = 1;
  • 作用: 设置密码中 特殊字符(如 @#$% 等)的最小个数为 1
  • 解释: 这个设置要求密码至少包含一个特殊字符,增加密码的强度,使其不容易被猜测。

密码生命周期管理

ALTER USER 'admin'@'localhost' 
PASSWORD EXPIRE INTERVAL 90 DAY
FAILED_LOGIN_ATTEMPTS 5 
PASSWORD_LOCK_TIME 1;

认证与访问控制

禁用匿名账户

检查与处理

SELECT user, host FROM mysql.user WHERE user = '';
-- 清理匿名账户
DROP USER IF EXISTS ''@'localhost';

启用安全认证

# my.cnf配置
[mysqld]
default_authentication_plugin=caching_sha2_password  # MySQL 8默认
secure_auth = ON

网络安全防护

访问源限制

企业级方案

-- 仅允许指定IP段访问
CREATE USER 'admintest'@'10.20.30.%' IDENTIFIED BY 'AAASSS!@#2323';
GRANT ALL ON *.* TO 'admintest'@'10.20.30.%';

禁用远程root访问

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');

启用SSL加密

SHOW VARIABLES LIKE '%ssl%';  -- 验证证书状态
ALTER USER 'remote_user'@'%' REQUIRE SSL;

日志审计与监控

全量审计配置

# my.cnf配置
[mysqld]
log_error = /var/log/mysql/error.log
general_log = 1
general_log_file = /var/log/mysql/general.log
slow_query_log = 1
log_queries_not_using_indexes = 1

二进制日志管理

SET GLOBAL expire_logs_days = 7;  -- 保留7天
SET GLOBAL binlog_format = ROW;  -- 行级复制

服务端安全加固

关键参数配置

[mysqld]
local_infile = OFF
skip_symbolic_links = ON
skip_name_resolve = ON
secure_file_priv = /var/lib/mysql-files

文件权限控制

chmod 750 /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

灾备与应急响应

定期备份策略

# 物理备份工具
mysqlbackup --user=backup --password=TT@@EE33$$ --backup-dir=/backups backup-and-apply-log

安全事件响应

  • 建立账号变更审批流程
  • 配置实时入侵检测系统(IDS)
  • 制定数据库脱敏规范

实施注意事项

  1. 变更窗口:在业务低峰期执行配置变更
  2. 配置备份:修改前备份my.cnf文件
  3. 灰度验证:先在测试环境验证配置变更
  4. 监控回滚:变更后观察数据库性能指标
  5. 文档同步:更新运维手册和CMDB记录

总结

通过实施本指南中的安全配置,可有效构建MySQL数据库的多层防御体系。建议每季度进行安全审计,配合漏洞扫描和渗透测试,持续提升数据库安全水位。对于云环境下的托管数据库(如RDS),需结合云平台的安全能力进行综合防护。

相关文章:

MySQL 数据库安全配置最佳实践

文章目录 MySQL 数据库安全配置最佳实践账户与权限管理账户最小化原则权限最小化配置密码策略强化 认证与访问控制禁用匿名账户启用安全认证 网络安全防护访问源限制禁用远程root访问启用SSL加密 日志审计与监控全量审计配置二进制日志管理 服务端安全加固关键参数配置文件权限…...

网络安全红队工具

目录 红队及发展趋势 基本概念 发展趋势 防守阶段 备战阶段 临战阶段 实战阶段 战后整顿 如果错过互联网,与你擦肩而过的不仅仅是机会,而是整整一个时代。 红队及发展趋势 基本概念 红队一般指实战攻防的防守方。 红队主要复盘总结现有防护系统的不足之处,为…...

【Qt】编程基础

目录 一、Qt体系框架: ​编辑二、布局方式: 1.绝对布局 setGeometry()函数 2.盒子布局: QHBoxLayout:水平布局管理器 QVBoxLayout:垂直布局管理器 QGridLayout:网格布局管理器 三、基本控件及其函数 标签类 :QLabel 按…...

《SegFace: Face Segmentation of Long-Tail Classes》论文分享(侵删)

author{Kartik Narayan and Vibashan VS and Vishal M. Patel} 原文链接:[2412.08647] SegFace: Face Segmentation of Long-Tail Classes 摘要 人脸解析是指将人脸语义分割为眼睛、鼻子、头发等关键面部区域。它是各种高级应用程序的先决条件,包括人脸…...

Android AOSP系统裁记录

Android 系统裁剪是指根据需求移除不必要的组件和功能,以优化系统性能、减少存储占用或满足特定设备需求。以下是 Android 系统裁剪的基本步骤: 1. 准备环境 操作系统:推荐使用 Ubuntu 或 macOS。 工具: Android SDK Android N…...

音乐游戏Dance Dance Revolution(DDR)模拟器

文章目录 (一)Dance Dance Revolution(1.1)基本情况(1.2)机体 (二)模拟器(2.1)主程序(2.2)模拟器主题 (三)曲谱…...

Lua的table(表)

Lua表的基本概念 Lua中的表(table)是一种多功能数据结构,可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制,其他数据结构如数组、列表、队列等都可以通过表来实现。 表的实现 Lua的表由两部分组成: 数组部分…...

ZT36 小红和小紫的取素因子游戏

描述 小红和小紫拿到了一个正整数x,她们每次可以选择x的一个因子k(k>1),把x除以k,但要求k必须是素数。小红先手,谁先不能操作谁输。假设两人都足够聪明,最终谁取得胜利? 共进行t次游戏。 输入描述&…...

C# 使用 Newtonsoft.Json 序列化和反序列化对象实例

Newtonsoft.Json(也被称为 Json.NET)是一个广泛使用的用于在 C# 中进行 JSON 序列化和反序列化的开源库。下面将详细介绍如何使用它来序列化和反序列化对象。 1. 安装 Newtonsoft.Json 如果你使用的是 Visual Studio,可以通过 NuGet 包管理…...

用 AI 工具提升 UX/UI 设计效率:从研究到原型

—————————————————— 用 AI 工具提升 UX/UI 设计效率:从研究到原型 开篇引言: 在 UX/UI 设计领域,效率与创意之间的平衡一直是设计师们追求的目标。随着 AI 工具的崛起,设计师们不仅能更快地完成任务&#xff0c…...

操作系统知识点12

1.在操作系统的结构设计中,采用层次结构的操作系统其最大优点是把整体问题局部化 2.非特权指令是指操作系统和用户均可以使用的指令 3.向处理器发出的中断信号称为中断请求 4.轮转法RR是单纯基于时间片考虑的 5.当进程处于就绪状态时,表示进程已获得…...

FASIONAD:自适应反馈的类人自动驾驶中快速和慢速思维融合系统

24年11月来自清华、早稻田大学、明尼苏达大学、多伦多大学、厦门大学马来西亚分校、电子科大(成都)、智平方科技和河南润泰数字科技的论文“FASIONAD : FAst and Slow FusION Thinking Systems for Human-Like Autonomous Driving with Adaptive Feedbac…...

Redis7——基础篇(八)

前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...

nvm安装

1.下载安装包 从官网下载https://github.com/nvm-sh/nvm/releases 这里下的是nvm-0.40.1.tar.gz 2.解压 tar -zxvf nvm-0.40.1.tar.gz 3. 修改配置文件 vi ~/.bashrc 在最后一行添加如下内容 export NVM_DIR"/usr/local/nvm-0.40.1"[ -s "$NVM…...

基于vue框架的游戏博客网站设计iw282(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,博客信息,资源共享,游戏视频,游戏照片 开题报告内容 基于FlaskVue框架的游戏博客网站设计开题报告 一、项目背景与意义 随着互联网技术的飞速发展和游戏产业的不断壮大,游戏玩家对游戏资讯、攻略、评测等内容的需求日…...

spring MVC执行流程

详细的项目结构 src ├── main │ ├── java │ │ ├── com.example │ │ │ ├── config │ │ │ │ └── SpringMvcInitializer.java // 配置 DispatcherServlet │ │ │ │ └── SpringConfig.java // Sprin…...

递归遍历目录 和 普通文件的复制 [Java EE]

递归遍历目录 首先 先列出当前目录所包含的内容 File[] files currentDir.listFiles();if (files null || files.length 0) {// 若是空目录或非法目录, 则直接返回return;} 然后 遍历列出的文件, 分情况两种讨论 for (File f: files) {// 加个日志, 方便查看程序执行情…...

如何在docker上部署java服务

目录结构 首先 Dockerfile FROM bladex/alpine-java:openjdk17_cn_slimMAINTAINER admin@rsz.comENV TZ=Asia/ShanghaiRUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneRUN mkdir -p /xhWORKDIR /xhEXPOSE 8106ADD ./blade-system.…...

Machine Learning 初探

前置知识 pandas 读取文件:read_csv查看信息 describe:查看整体信息,包括每列的平均值、最大最小值、标准差等head:输出头部几行数据columns:输出所有列名loc:查询数据,或是根据索引取对应的数…...

GESP2024年12月认证C++三级( 第三部分编程题(1)数字替换)

参考程序&#xff1a; #include <iostream> #include <vector> #include <algorithm> using namespace std; int a[100010]; // 定义一个数组a&#xff0c;用于存储序列A&#xff0c;数组大小为100010 int main() {int n, k; // 定义变量n和k&#xff0c;…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

负载均衡器》》LVS、Nginx、HAproxy 区别

虚拟主机 先4&#xff0c;后7...