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;
具体含义如下:
SET GLOBAL validate_password.policy = STRONG;
- 作用: 设置密码复杂度要求的策略为 STRONG(强)。
- 解释: 在
validate_password.policy中,常见的值有:LOW:只要求密码长度大于等于 8 个字符。MEDIUM:要求密码不仅具有足够的长度,还要求包括字母、数字及特殊字符。STRONG:要求密码长度和复杂度更高,通常需要包括大写字母、小写字母、数字和特殊字符。
SET GLOBAL validate_password.length = 12;
- 作用: 设置密码的最小长度为 12 个字符。
- 解释: 这个设置规定了所有用户密码必须至少包含 12 个字符。较长的密码比短密码更难以被破解。
SET GLOBAL validate_password.mixed_case_count = 2;
- 作用: 设置密码中 大写字母和小写字母 的最小个数为 2。
- 解释: 这意味着密码中必须至少包含 2 个大写字母和 2 个小写字母,这样可以提高密码的复杂度。
SET GLOBAL validate_password.number_count = 2;
- 作用: 设置密码中 数字 的最小个数为 2。
- 解释: 这要求密码至少包含 2 个数字,数字的加入可以增加密码的复杂性。
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)
- 制定数据库脱敏规范
实施注意事项
- 变更窗口:在业务低峰期执行配置变更
- 配置备份:修改前备份my.cnf文件
- 灰度验证:先在测试环境验证配置变更
- 监控回滚:变更后观察数据库性能指标
- 文档同步:更新运维手册和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 工具的崛起,设计师们不仅能更快地完成任务,…...
操作系统知识点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)数字替换)
参考程序: #include <iostream> #include <vector> #include <algorithm> using namespace std; int a[100010]; // 定义一个数组a,用于存储序列A,数组大小为100010 int main() {int n, k; // 定义变量n和k,…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
