首页 > 数据库 >MySQL-等保三级整改容器中的MySQL

MySQL-等保三级整改容器中的MySQL

时间:2023-05-12 18:59:14浏览次数:40  
标签:容器 整改 MySQL cnf connection mysql docker password

记一次等保三级整改过程

数据库不合格项:

  • 密码复杂度不够
  • 需要设置密码过期时间
  • 数据库登录失败策略
  • 开启binlog

由于这台机器处在docker的容器中,和正常MySQL实例大同小异

1、安装docker

官网的安装步骤,很简单,几条命令即可
1.卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
				  
2.下载需要的安装包
yum install -y yum-utils

3.设置镜像仓库
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	
4.更新yum软件包索引
yum makecache fast

5.安装docker   --- docker-ce:社区版   ee:企业版
yum install -y docker-ce docker-ce-cli containerd.io

6.启动docker
systemctl start docker && systemctl enable docker

7.配置镜像加速(注意:加速器地址需要修改,这是自己的)
vim /etc/docker/daemon.json
{     
  "registry-mirrors": ["https://ulwu0fjj.mirror.aliyuncs.com"]
}

systemctl daemon-reload && systemctl restart docker

2、run一个数据库

docker run --name mysql -p 3316:3306 --privileged=true -v /docker/mysql/log:/var/log/mysql -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7

--name 指定容器名字
-p 端口映射 主机端口:容器端口
-v 挂载数据卷 宿主机绝对目录:容器目录
--privileged=true 防止权限不足的报错
-e MYSQL_ROOT_PASSWORD=123 指定MySQL的密码
-d mysql:5.7 指定镜像版本

至此,测试环境和实际就一样了

3、整改密码复杂度

1.进入容器加载validate_password.so插件
docker exec -it 90b00aa0fe61 /bin/bash 
msyql> install plugin validate_password soname 'validate_password.so';
mysql> SHOW VARIABLES LIKE "%password%";
+----------------------------------------+-----------------+
| Variable_name                          | Value           |
+----------------------------------------+-----------------+
| default_password_lifetime              | 0               |
| disconnect_on_expired_password         | ON              |
| log_builtin_as_identified_by_password  | OFF             |
| mysql_native_password_proxy_users      | OFF             |
| old_passwords                          | 0               |
| report_password                        |                 |
| sha256_password_auto_generate_rsa_keys | ON              |
| sha256_password_private_key_path       | private_key.pem |
| sha256_password_proxy_users            | OFF             |
| sha256_password_public_key_path        | public_key.pem  |
| validate_password_check_user_name      | OFF             |
| 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               |
+----------------------------------------+-----------------+
17 rows in set (0.01 sec)

插件加载以后,默认策略为:最少由8位组成的密码,并且包含数字、大写、小写、特殊符号。

4、设置密码过期时间

set global default_password_lifetime=180;
密码180天过期;0表示永不过期

5、设置登录失败处理策略

mysql> install plugin CONNECTION_CONTROL soname 'connection_control.so';
mysql> install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';
mysql> show variables like '%connection_control%';
+-------------------------------------------------+------------+
| Variable_name                                   | Value      |
+-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 3          |
| connection_control_max_connection_delay         | 2147483647 |
| connection_control_min_connection_delay         | 1000       |
+-------------------------------------------------+------------+
3 rows in set (0.00 sec)

mysql> set global connection_control_failed_connections_threshold=5; #登陆失败次数限制
mysql> set global connection_control_min_connection_delay=300000;    #限制重试时间(毫秒)
此处策略为登录失败5次,限制5分钟。

6、开启binlog

run起来的MySQL容器默认没有/etc/my.cnf文件,binlog默认没有开启
可以执行 mysql --help|grep 'my.cnf' 查看程序读取的配置文件顺序:
root@90b00aa0fe61:/# mysql --help|grep 'my.cnf'
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

容器中很多命令都没有,不能vi、ps...等命令
容器内可以执行以下命令添加参数
root@90b00aa0fe61:/# echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf
root@90b00aa0fe61:/# echo 'server-id=1080176' >> /etc/mysql/mysql.conf.d/mysqld.cnf

也可以容器外执行以下命令
[root@docker /]# docker exec 483d3821ca35 bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
[root@docker /]# docker exec 483d3821ca35 bash -c "echo 'server-id=1080176' >> /etc/mysql/mysql.conf.d/mysqld.cnf"

也可以在容器中直接 echo 到 /etc/my.cnf 文件,MySQL也会读取到
也可以在run容器的时候,指定的挂载数据卷/docker/mysql/conf目录中直接编辑my.cnf

之后重启容器即可
docker restart 容器ID

标签:容器,整改,MySQL,cnf,connection,mysql,docker,password
From: https://www.cnblogs.com/log4g/p/17396034.html

相关文章

  • mysql远程连接问题
    Linux安装mysql81、下载1、从官网下载linux环境下的mysql8的安装包,上传到虚拟机中,解压后只需安装如下:2、安装顺序:3、安装命令:可以通过该命令查看rpm可以有哪些参数:rpm--help这里主要使用命令为:rpm-ivh.........i:(install安装软件包)v:(view可视化)......
  • string容器(下)
    六、string字符串比较1、功能描述:字符串之间的比较2、比较方式:字符串比较是按字符的ASCII码进行对比=   返回0>   返回1<   返回-13、函数原型:(1)intcompare(conststring&s)const; //与字符串s比较(2)intcompare(constchar*s)const; //与字符......
  • mysql的执行计划
    在咱们工作中写sql写多了必然会出现查询比较慢的sql,一般的情况就是会去加索引,但是怎么加索引就很重要了,这个时候一般情况下就是会通过查询条件进行判断加什么索引,要么就是去查看mysql的执行计划然后通过执行计划的结果决定加什么索引,怎么加索引。执行计划mysql官方的解释文档:MyS......
  • MySQL 删除数据表
    MySQL删除数据表MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。语法以下为删除MySQL数据表的通用语法:DROPTABLEtable_name;在命令提示窗口中删除数据表在mysql>命令提示窗口中删除数据表SQL语句为DROPT......
  • docker 容器中 ip addr 出现 bash: ip: commandnot found
    一、服务器中输入命令#启动tomcat容器别名tomcat1dockerrun-d-P--nametomcat1tomcat#进行tomcat1容器dockerexec-ittomcat1/bin/bash二、输入ipaddripaddrbash:ip:commandnotfound三、解决办法安装工具iproute2#我的服务器是centos的yumi......
  • Linux 服务器下Mysql自动备份 30天滚动存储 每天凌晨2点准时备份
    一、创建备份目录执行命令:在指定路径下创建备份目录cd/mnt/filemkdirdata_backup二、编写shell脚本放在/mnt/file/data_backup里创建.shshell脚本:touchbkmysql.sh打开脚本文件:vim bkmysql.sh脚本文件内容如下所示:login_user表示数据库用户名......
  • CentOS5.7 下mysql5.7自动备份数据脚本
    mysql5.7自动备份数据库脚本1.root用户下用cd命令进入到想要的位置创建一个脚文文件://创建脚本命令vimbackup.shvim脚本名.sh#!/bin/bashsource/etc/profile#加载系统环境变量source~/.bash_profile#加载用户环境变量set-onounset......
  • MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
    重复数据的情况分为两种:  单个字段数据重复  多个字段数据重复所以该篇的内容就是包括单个字段的重复数据查找 与去重多个字段的重复数据查找 与去重 第一步先查出来所有重复的数据selectt.id,t.subject_id,t.image_id,t.mark_person_idfromdm......
  • docker 安装mysql
    一、拉取镜像#拉取镜像dockerpullmysql#或者dockerpullmysql:latest#执行版本dockerpullmysql:5.7#以上两个命令是一致的,默认拉取的就是latest版本的#我们还可以用下面的命令来查看可用版本:dockersearchmysql 二、查看镜像使用以下命令来查看是......
  • mysql8.0.33的安装教程
    1、1 MySQL有四种不同的版本:community版、standard版、enterprise版和cluster版。Community版Community版是MySQL最常用的免费版本,它是基于GPL(GNU通用公共许可证)许可协议发布的。它是开源的,可以利用社区的贡献来维护和改进。有非常多的支持和帮助,可以从官方网站下载。Standar......