数据库加固(Data)
1.以普通账户MySQL安全运行MySQL,禁止MySQL以管理员账号权限运行;
修改/etc/my.cnf
文件
在[mysqld]下方添加user=mysql
(如没有mysql用户需要自行创建)
修改完后重启MySQL服务
systemctl restart mysqld.service
2.删除默认数据库(test);
Drop database test;
3.改变默认MSQL管理员用户为SuperRoot;
use mysql |
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';
更新密码
登陆数据库时不能直接使用P@ssw0rd1!
登陆,需要先进行加密,用加密后的密文登陆。
使用管道命令将密码用openssl进行加密。-n表示不输入回车符
echo -n P@ssw0rd1! | openssl md5
然后用密文3684311f2ab8cdb11eb6bdc159bd880d
登陆数据库
5.赋予user1用户对数据库所有表只有select,insert,delete,update权限;
#查看权限 |
6.对忘记MySQL数据库SuperRoot管理员密码进行重置操作;
先修改/etc/my.cnf
文件,在[mysqld]
下方添加一行skip_grant_tables
然后保存退出,重启MySQL服务
直接输入mysql,即可不用密码登陆数据库
进入后修改mysql数据库中的user表,用UPDATE编辑user表
use mysql |
然后退出mysql,删除my.cnf中刚刚插入的skip_grant_tables
重启MySQL服务,再使用新的密码登陆MySQL
7.禁用LOCAL INFILE命令防止非授权用户访问本地文件;
修改my.cnf
文件,在[mysqld]
下添加一行local-infile=0
8.为防止数据库操作信息泄露,请禁止使用MySQL命令行历史记录;
#先删除历史记录文件(如果存在) |
9.为了分析数据库运行过程中的一些异常活动,请开启MySQL二进制日志。
修改my.cnf
文件,在[mysqld]
下添加一行log-bin = mysql-bin
修改完后重启MySQL服务.进入数据库,使用命令show variables like '%log_bin%';
查看MySQL的二进制日志是否开启