MYSQL 5.7.36 等保 建设记录
文章目录
- 前言
- 一、开启审计日志
- 1.1 查看当前状态
- 1.2 开启方式
- 1.3 查看开启后状态
- 二、密码有效期
- 2.1 查看当前状态
- 2.2 开启方式
- 2.3 查看开启后状态
- 三、密码复杂度
- 3.1 查看当前状态
- 3.2 开启方式
- 3.3 查看开启后状态
- 四、连接控制
- 4.1 查看当前状态
- 4.2 开启方式
- 4.3 查看开启后状态
- 五、连接超时
- 5.1 查看当前状态
- 5.2 开启方式
- 5.3 查看开启后状态
- 六、三权分立,使用init-connect记录登陆日志
- 6.1 创建管理员用户并赋予全部权限
- 6.2 创建操作员用户并赋予业务数据库的权限
- 6.3 创建审计员用户
- 6.4 创建存放连接日志的数据库表
- 6.5 赋予所有用户链接日志表的插入权限
- 6.6 审计用户赋予连接日志表审计权限
- 6.7 配置init-connect
- 总结
前言
MYSQL 5.7.36 等保 建设记录
参考博文: MySql数据库之审计(开启log+设置init-connect实现无插件审计)
参考博文: 二级等保标准和解决方法(服务器,数据库,应用)
参考博文: 等保测评mysql实例
一、开启审计日志
1.1 查看当前状态
mysql>show variables like '%general_log%';
+------------------+-------------------------------------------------------+
| Variable_name | Value |
+------------------+-------------------------------------------------------+
| general_log | OFF |
| general_log_file | /var/lib/mysql/mysql-58f8894999-5sv88.log |
+------------------+-------------------------------------------------------+
1.2 开启方式
按照一些帖子的记录,将记录写入到mysql.general_log表会导致服务的性能下降,所以需要将log_output配置为file类型;为了检测临时改成table类型也可以,不推荐长期配置为table类型。
配置文件mysql.cnf参数开启
[mysqld]
general_log = ON
log_timestamps = system
log_output = file
命令开启
set global general_log=on;
set log_timestamps = system;
1.3 查看开启后状态
mysql>show variables like '%general_log%';
+------------------+-------------------------------------------------------+
| Variable_name | Value |
+------------------+-------------------------------------------------------+
| general_log | ON |
| general_log_file | /var/lib/mysql/mysql-58f8894999-5sv88.log |
+------------------+-------------------------------------------------------+
二、密码有效期
2.1 查看当前状态
mysql>show variables like '%password_lifetime%';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| default_password_lifetime | 0 |
+---------------------------+-------+
1 row in set (0.00 sec)
2.2 开启方式
配置文件mysql.cnf参数开启
[mysqld]
default_password_lifetime=90
命令开启
set global default_password_lifetime=90;
2.3 查看开启后状态
mysql>show variables like '%password_lifetime%';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| default_password_lifetime | 90 |
+---------------------------+-------+
1 row in set (0.00 sec)
三、密码复杂度
密码复杂度需要validate_password.so插件的支持
3.1 查看当前状态
mysql> show variables like 'validate_password%';
Empty set (0.01 sec)
3.2 开启方式
配置文件mysql.cnf参数开启
[mysqld]
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
validate_password_policy=2
命令开启
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
set global validate_password_policy=2;
set global validate-password=FORCE_PLUS_PERMANENT;
3.3 查看开启后状态
mysql>show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | ON |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
四、连接控制
连接控制需要connection_control.so插件的支持
4.1 查看当前状态
mysql> show variables like 'connection%';
Empty set (0.01 sec)
4.2 开启方式
配置文件mysql.cnf参数开启
[mysqld]
plugin-load-add=connection_control.so
connection-control-failed-connections-threshold = 5
connection-control-min-connection-delay = 300000
命令开启
INSTALL PLUGIN validate_password SONAME 'connection_control.so';
set global connection-control-failed-connections-threshold = 5;
set global connection-control-min-connection-delay = 300000;
4.3 查看开启后状态
MySQL [(none)]> show variables like 'connection%';
+-------------------------------------------------+------------+
| Variable_name | Value |
+-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 5 |
| connection_control_max_connection_delay | 2147483647 |
| connection_control_min_connection_delay | 300000 |
+-------------------------------------------------+------------+
3 rows in set (0.00 sec)
五、连接超时
5.1 查看当前状态
mysql> show global variables like'connect_timeout';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set (0.03 sec)mysql> show variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 28800 |
+---------------+-------+
1 row in set (0.00 sec)mysql> show variables like 'interactive_timeout';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| interactive_timeout | 28800 |
+---------------------+-------+
1 row in set (0.01 sec)
5.2 开启方式
配置文件mysql.cnf参数开启
[mysqld]
wait_timeout = 1800
interactive_timeout = 1800
命令开启
set global wait_timeout = 1800;
set global interactive_timeout = 1800;
5.3 查看开启后状态
mysql> show variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 1800 |
+---------------+-------+
1 row in set (0.00 sec)mysql> show variables like 'interactive_timeout';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| interactive_timeout | 1800 |
+---------------------+-------+
1 row in set (0.01 sec)
六、三权分立,使用init-connect记录登陆日志
6.1 创建管理员用户并赋予全部权限
create user 'admin'@'%' identified by 'Admin@2024';
GRANT ALL privileges on *.* to 'admin'@'%' with grant option;
查看创建结果
mysql> show grants for 'admin'@'%';
+--------------------------------------------------------------+
| Grants for admin@% |
+--------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION |
+--------------------------------------------------------------+
1 rows in set (0.00 sec)
6.2 创建操作员用户并赋予业务数据库的权限
create user 'develop'@'%' identified by 'Develop@2024';
GRANT ALL privileges on yewu.* to 'develop'@'%' with grant option;
查看创建结果
mysql> show grants for 'develop'@'%';
+-----------------------------------------------------------------------+
| Grants for develop@% |
+-----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'develop'@'%' |
| GRANT ALL PRIVILEGES ON `yewu`.* TO 'develop'@'%' WITH GRANT OPTION |
+-----------------------------------------------------------------------+
2 rows in set (0.00 sec)
6.3 创建审计员用户
create user 'auditor'@'%' identified by 'Auditor@2024';
查看创建结果
mysql> show grants for 'auditor'@'%';
+-----------------------------------------------------------------------+
| Grants for auditor@% |
+-----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'auditor'@'%' |
+-----------------------------------------------------------------------+
1 rows in set (0.00 sec)
6.4 创建存放连接日志的数据库表
create database auditlog;
create table auditlog.t_audit(id int not null auto_increment,thread_id int not null,login_time timestamp,localname varchar(50) default null,matchname varchar(50) default null, primary key (id)
)ENGINE=InnoDB default charset=utf8 comment '审计用户登录信息';
6.5 赋予所有用户链接日志表的插入权限
拼接赋权语句
mysql> select concat("grant insert on auditlog.t_audit to '",user,"'@'",host,"';") from mysql.user;
+----------------------------------------------------------------------+
| concat("grant insert on auditlog.t_audit to '",user,"'@'",host,"';") |
+----------------------------------------------------------------------+
| grant insert on auditlog.t_audit to 'admin'@'%'; |
| grant insert on auditlog.t_audit to 'auditor'@'%'; |
| grant insert on auditlog.t_audit to 'develop'@'%'; |
| grant insert on auditlog.t_audit to 'root'@'%'; |
| grant insert on auditlog.t_audit to 'mysql.session'@'localhost'; |
| grant insert on auditlog.t_audit to 'mysql.sys'@'localhost'; |
| grant insert on auditlog.t_audit to 'root'@'localhost'; |
+----------------------------------------------------------------------+
7 rows in set (0.00 sec)
执行赋权语句
grant insert on auditlog.t_audit to 'admin'@'%';
grant insert on auditlog.t_audit to 'auditor'@'%';
grant insert on auditlog.t_audit to 'develop'@'%';
grant insert on auditlog.t_audit to 'root'@'%';
grant insert on auditlog.t_audit to 'mysql.session'@'localhost';
grant insert on auditlog.t_audit to 'mysql.sys'@'localhost';
grant insert on auditlog.t_audit to 'root'@'localhost';
6.6 审计用户赋予连接日志表审计权限
拼接赋权语句
grant select,insert,delete on auditlog.t_audit to 'auditor'@'%' ;
6.7 配置init-connect
配置文件mysql.cnf参数开启
[mysqld]
init_connect='insert into auditlog.t_audit(id,thread_id,login_time,localname,matchname) values(null,connection_id(),now(),user(),current_user());'
总结
相关文章:
MYSQL 5.7.36 等保 建设记录
文章目录 前言一、开启审计日志1.1 查看当前状态1.2 开启方式1.3 查看开启后状态 二、密码有效期2.1 查看当前状态2.2 开启方式2.3 查看开启后状态 三、密码复杂度3.1 查看当前状态3.2 开启方式3.3 查看开启后状态 四、连接控制4.1 查看当前状态4.2 开启方式4.3 查看开启后状态…...
fatal: unable to access ‘https://github.com/xxxxx
ubuntu中git克隆项目异常 git clone https://github.com/xxx Cloning into ‘xxx’… fatal: unable to access ‘https://github.com/xxx/xx.git/’: Could not resolve host: github.com 解决办法使用命令: git config --global http.proxy git config --global…...
从零开始的CPP(38)——递归与动态规划
leetcode46 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入&#…...

从战略到系统架构:信息系统设计的全面解析
在当今数字化时代,信息系统已成为企业运营、管理和创新的核心驱动力。信息系统设计的重要性不仅关乎企业的技术实现,更直接影响到企业的战略执行和市场竞争能力。本文将从战略视角出发,深入探讨信息系统设计的全过程,包括从战略制…...

GEE调用中国(China Land Cover Dataset,简称CLCD)1990-2022年30米分辨率的土地分类数据
博客推荐 GEE土地分类:中国30米年度土地覆盖产品annual China Land Cover Dataset, CLCD(面积提取)_30米土地利用数据gee-CSDN博客 简介 中国陆地覆盖数据集(China Land Cover Dataset,简称CLCD)是一个用…...

三十八、大数据技术之Kafka(1)
🌻🌻 目录 一、Kafka 概述1.1 定义1.2 消息队列1.2.1 消息队列内部实现原理1.2.2 传统消息队列的应用场景1.2.3 消息队列的两种模式 1.3 Kafka 基础架构 二、 Kafka 快速入门2.1 安装前的准备2.2 安装部署2.2.1 集群规划2.2.2 单节点或集群部署2.2.3 集群…...

将 Tcpdump 输出内容重定向到 Wireshark
在 Linux 系统中使用 Tcpdump 抓包后分析数据包不是很方便。 通常 Wireshark 比 tcpdump 更容易分析应用层协议。 一般的做法是在远程主机上先使用 tcpdump 抓取数据并写入文件,然后再将文件拷贝到本地工作站上用 Wireshark 分析。 还有一种更高效的方法…...
【Python蓝屏程序(管理员)】
说明:该程序为临摹(😀)作品,源地址C蓝屏程序(非管理员) 我试图使用Python调用 NtRaiseHardError API ,实现类似的蓝屏效果。可惜我发现Python在普通权限下,直接调用 NtRaiseHardError API 是不被允许的,因为…...
OpenGL ES->GLSurfaceView绘制图形的流程
自定义View代码 class MyGLSurfaceView(context: Context, attrs: AttributeSet) : GLSurfaceView(context, attrs), GLSurfaceView.Renderer {var mProgrem 0init {// 设置 OpenGL ES 3.0 版本setEGLContextClientVersion(3)// 设置当前类为渲染器, 注册回调接口的实现类set…...
Linux OOM Killer详解
Linux OOM Killer详解 一、概述二、OOM Killer的技术原理1. 内存区域划分2. 内存耗尽与OOM Killer触发3. 选择被杀进程的策略4. 内存回收机制5. 内存分配策略 三、OOM Killer的工作机制1. 内存压力监测2. 触发条件3. 选择被杀进程4. 终止进程 四、实际场景举例场景一࿱…...
2024rk(案例二)
试题二(25分) 阅读以下关于数据库缓存的叙述,在答题纸上回答问题1至问题3。 【说明】 某大型电商平台建立了一个在线 B2B 商店系统,并在全国多地建设了货物仓储中心,通过提前备货的方式来提高货物的运送效率。但是在运营过程中,发现会出现很多跨仓储中心调货从而延误货物…...

小红书爆文秘籍:ChatGPT助你从0到1创造热门内容!
在小红书打造爆款文案的策略中,以下是一些调整和同义词替换的建议,以便达到文章去重的要求: 了解目标受众: 在撰写文案前,先深入分析目标读者的属性,如年龄层次、性别、爱好和购买行为。通过ChatGPT, 你能迅…...

django快速实现个人博客(附源码)
文章目录 一、工程目录组织结构二、模型及管理实现1、模型2、admin管理 三、博客展现实现1、视图实现2、模板实现 四、部署及效果五、源代码 Django作为一款成熟的Python Web开发框架提供了丰富的内置功能,如ORM(对象关系映射)、Admin管理界面…...

K8s部署篇之手动部署二进制高可用集群架构
一、系统环境初始化 一)架构设计 所有节点都操作:3个master(etcd集群三个节点)和2个node 1、K8s服务调用如图 2、各组件说明 1、API Server 供Kubernetes API接口,主要处理 REST操作以及更新ETCD中的对象所有资源增删…...
【Unity/XLua】xlua自带教程示例分析(6)—— lua协程
文章目录 工具准备协程测试 工具准备 首先是工具脚本,一个Coroutine_Runner.cs和一个cs_coroutine.lua 前者定义了一个继承自Monobehavior的脚本组件,后者则使用lua去在Unity中实例化一个挂载该组件的GameObject,并将其设置为DontDestroyOn…...

CV目标检测概述
文章目录 目标检测概述目标检测图像分割目标检测和图像分割的区别 目标检测概述 目标检测和图像分割是计算机视觉中的两个重要任务,它们有着不同的目的和应用。以下是它们的简要介绍和区别: 目标检测 目标检测(Object Detection࿰…...

如何在notebook中运行nodejs
在 Python 生态系统的推动下,机器学习和人工智能日益流行,这带来了计算笔记本的概念。这些交互式计算平台主要是为以 Python 为中心的数据科学应用而开发的,它们将代码、计算输出、解释性文本和多媒体合并成一个有内聚力的文档。 作为 JavaS…...

Mybatis学习-day19
Mybatis学习-day19 1. resultMap resultMap 是 MyBatis 中最复杂的元素,主要用于解决实体类属性名与数据库表中字段名不一致的情况,可以将查询结果映射成实体对象。 <resultMap id"staffAndDep" type"com.easy.bean.Staff">…...

IDEA构建SpringBoot多模块项目
前言 最近一直在思考一个问题,springboot的多模块项目到底是怎么运行和运作的? 一般我们大部分的springboot项目都是单模块的项目,但是如果后续有要求开发多模块的项目应该怎么处理?于是基于这点进行了研究。 本次文章将会带大…...
【前端】NodeJS:nvm
文章目录 1 介绍2 使用2.1 下载安装2.2 常用命令 1 介绍 nvm全称:Node Version Manager,顾名思义它是用来管理node版本的工具,方便切换不同版本的Node.js。 2 使用 nvm的使用非常的简单,跟npm的使用方法类似。 2.1 下载安装 …...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

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

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...

C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...
CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx
“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网(IIoT)场景中,结合 DDS(Data Distribution Service) 和 Rx(Reactive Extensions) 技术,实现 …...