mysql 基线加固/等保整改

PS:高版本的mysql可能不适用本文

1 修改DBA登录密码
  • 首次修改,在shell环境下执行mysqladmin -u root password,连续输入两次新密码
  • 非首次修改,在shell环境下执行mysqladmin -u root password -p 原密码,连续输入两次新密码
  • 在mysql下执行alter user 'root'@'localhost' identified by '新密码';
2 删除默认数据库和用户

注意:5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string

  • 删除测试库
show databases;
drop database test;
  • 删除非root用户
use mysql;
delete from user where not (user='root');
  • 删除密码为空的root用户
delete  from user where user='root' and password='';
flush privileges;
3 变更DBA用户名

使用update更新mysql库中user表中的信息

use mysql;
update user set user='hehao' where user='root';
flush privileges;
4 在账户管理时使用加密算法

注意:Mysql8.0之前的版本中,加密规则是mysql_native_password,而在Mysql8之后,加密规则是caching_sha2_password

添加账户test,密码进行加密处理

use mysql;
insert into users values (1,password(123456),'test');
5 更改mysql启动用户

Linux下修改my.cnf文件

vim /etc/my.cnf
加入如下内容
[mysqld]
user=mysql
6 限制远程连接数

Linux下修改my.cnf文件,去掉注释符号

vim /etc/my.cnf
加入如下内容
[mysqld]
max_connections=5
max_user_connections=2

或者限制某个用户,在mysql中执行

grant test on *.* to testdb@localhost max_user_connections 2;
7 关闭远程管理数据库

修改my.cnf文件,去掉注释符号

vim /etc/my.cnf
修改内容如下
skip-networking 
8 清理mysql命令历史
  • 注意清理家目录中的.mysql_history
ln -s /dev/null /root/.mysql_history
  • 禁止使用明文模式登录mysql,应该使用隐藏密码方式
mysql -u root -p 明文密码   //直接输入明文密码
mysql -u root -p           //回车后输入隐藏密码
9 禁止mysql读取本地文件

修改my.cnf文件,加入关闭信息

vim /etc/my.cnf
加入如下内容
[mysqld]
local_infile=0

或者添加启动选项

用脚本开启mysql
mysql_safe --local_infile=0 --user=mysql
10 禁止将表导出到文件
  • 在mysql中修改用户的文件权限
use mysql
update user set File_priv='N' where user='用户名';
  • 检查配置文件是否存在不合理信息
grep secure_file_priv /etc/my.cnf
secure_file_priv=xxx路径
11 日常备份数据库

手动备份数据库可以防止密码明文储存

mysqldump --user=root --all-databases --flush-privileges --lock-all-tables \ --master-data=1 --flush-logs --triggers --routines --events \ --hex-blob > 备份路径/文件名时间戳.sql

还原数据库

mysql -u 用户名 -p 密码 数据库名<备份的文件名

你可能感兴趣的:(mysql,数据库,linux)