修改MySQL默认用户名
MySQL默认的管理员用户名是root,需要更改
update mysql.`user` set user = 'myroot' where user = 'root';
flush privileges;
敏感数据存储加密
通常数据库在存储用户的登录密码信息时,会加密存储,但除了密码外,针对身份证、手机号等敏感信息,也需要加密后存储到MySQL数据库中。
加密方法
SecretKey为加密秘钥
INSERT INTO `tablea`(`classID`, `stuName`) VALUES ('B', HEX(AES_ENCRYPT('张三','SecretKey')));
加密后查询
SELECT * FROM tablea WHERE AES_DECRYPT( UNHEX( stuName ), 'SecretKey' ) LIKE '%张%';
PHP加密方法
SecretKey为加密秘钥
$idcard = '123456';
$idcardMi = bin2hex(base64_decode(openssl_encrypt($idcard,'aes-128-ecb', 'SecretKey')));
PHP解密方法
$idcardMi = 'xxxx'; //密文
$idcardJieMi = openssl_decrypt(base64_encode(hex2bin($idcardMi)), 'aes-128-ecb', 'SecretKey');
MySQL开启SSL连接
参考文章《MySQL开启SSL连接》
开启审计
MySQL的审计功能,主要可以记录包括登录、连接、对表的增删改查等对数据库的所有操作,便于责任追溯,问题查找。
根据 MySQL 版本的不同有两种分为企业版和社区版:
A、企业版 MySQL Enterprise Edition(收费)自带AUDIT审计功能。
B、社区版 MySQL Community Server(免费)需要自己下载插件。
MariaDB官网下载对应版本的安装包, 从安装包中获得版本对应的.dll插件(linux系统.so插件),拷贝到到 自己的mysql插件库下,安装插件,开启审计功能,配置my.ini文件。
版本对应
MariaDB 10.0和MariaDB 10.1可以作为MySQL 5.6的有限替代。
MariaDB 10.2可以作为MySQL 5.7的有限替代。
版本对应关系:
下载mariadb,提取审计插件
下载mysql对应版本的mariadb的zip版本,解压后将\lib\plugin\
目录下的server_audit.dll
文件拷贝至mysql的插件目录(一般是\lib\plugin\
,可以通过SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
命令查询)
安装插件
打开mysql,执行如下SQL:
INSTALL PLUGIN server_audit SONAME 'server_audit.dll';
开启审计功能
set global server_audit_logging=on;
判断是否开启
用以下查看是否已经开启,开启后ON代表开启,OFF代表没有开启:
show variables like '%audit%';
配置my.ini
把下面内容复制进[msyqld]下
#开启审计功能
server_audit_logging=on
#指定审计日志文件存放路径,这里的路径要注意了,这个文件路径必须经是Mysql权限里
server_audit_file_path =D:\Soft\mysql-5.6.24-win32\oplogs
server_audit_file_rotate_size=20000000
#防止server_audit 插件被卸载,需要在配置文件中添加
server_audit=FORCE_PLUS_PERMANENT
重启
重启数据库。重启后对数据库的操作,就可以查询到相应记录了。
登录失败及账号锁定
从 MySQL8.0.19 开始,管理员可以配置用户当连续登录失败超过阈值时的锁定时间;
#创建用户test_lock连续失败3次后锁定两天
create user 'test_lock'@'%' IDENTIFIED BY RANDOM PASSWORD FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;
#修改用户test_lock连续失败2次后锁定3天
alter user 'test_lock'@'%' FAILED_LOGIN_ATTEMPTS 2 PASSWORD_LOCK_TIME 3;
解除锁定的方式
服务器重启;
执行flush privileges
;alter user 'test_lock'@'%' account unlock;