数据库加固(Data)

1.以普通账户MySQL安全运行MySQL,禁止MySQL以管理员账号权限运行;

修改/etc/my.cnf文件

在[mysqld]下方添加user=mysql(如没有mysql用户需要自行创建)

修改完后重启MySQL服务

systemctl restart mysqld.service

1

2.删除默认数据库(test);

Drop database test;

3.改变默认MSQL管理员用户为SuperRoot;

use mysql
update user set user='SuperROOT' where user='root';
select user,host from mysql.user;
FLUSH PRIVILEGES;

1

4.使用MySQL内置MD5加密函数加密用户user1的密码为(P@ssw0rd1!);

使用命令查看当前数据库现有用户

select host,user,authentication_string from mysql.user;

使用命令update user set password=password(MD5('P@ssw0rd1!')) where user='user1';更新密码

3

登陆数据库时不能直接使用P@ssw0rd1!登陆,需要先进行加密,用加密后的密文登陆。

使用管道命令将密码用openssl进行加密。-n表示不输入回车符

echo -n P@ssw0rd1! | openssl md5

然后用密文3684311f2ab8cdb11eb6bdc159bd880d登陆数据库

3

5.赋予user1用户对数据库所有表只有select,insert,delete,update权限;

#查看权限
show grants for 'user1'@'localhost';
#修改权限
grant select,insert,delete,update on *.* to 'user1'@'localhost';
#刷新权限
flush privileges;

1

6.对忘记MySQL数据库SuperRoot管理员密码进行重置操作;

先修改/etc/my.cnf文件,在[mysqld]下方添加一行skip_grant_tables

1

然后保存退出,重启MySQL服务

直接输入mysql,即可不用密码登陆数据库

进入后修改mysql数据库中的user表,用UPDATE编辑user表

use mysql
update user set password=password('P@ssw0rd1!') where user='SuperRoot' and host='localhost';

然后退出mysql,删除my.cnf中刚刚插入的skip_grant_tables

重启MySQL服务,再使用新的密码登陆MySQL

1

7.禁用LOCAL INFILE命令防止非授权用户访问本地文件;

修改my.cnf文件,在[mysqld]下添加一行local-infile=0

8.为防止数据库操作信息泄露,请禁止使用MySQL命令行历史记录;

#先删除历史记录文件(如果存在)
rm -f $HOME/.mysql_history
#将MYSQL_HISTFILE变量设置为/dev/null
ln -s /dev/null $HOME/.mysql_history

9.为了分析数据库运行过程中的一些异常活动,请开启MySQL二进制日志。

修改my.cnf文件,在[mysqld]下添加一行log-bin = mysql-bin

1

修改完后重启MySQL服务.进入数据库,使用命令show variables like '%log_bin%';查看MySQL的二进制日志是否开启

1