MySQL数据库的一些设置
分享个人在学习生活中总结的一些学习记录。
一、MySQL设置密码过期策略
在xshell界面通过mysql -uroot -p指令进入登录mysql的界面,或者在数据库连接工具如Navicat等,登录mysql之后,在命令行界面输入如下的命令:
use mysql; #选择mysql数据库
select user,host,password_expired,password_last_changed,password_lifetime from user; #查看mysql用户的密码是否过期及过期时间
update user set password_lifetime = 30 where user='test'; #将test用户的密码过期时间设置为30天
flush privileges; #刷新系统权限相关表
如下图:
此时test用户的密码过期时间就被设置为30天。其他用户的密码过期时间设置同上,此外还可以通过数据库连接工具如:Navicat等使用root用户登录,找到mysql数据库中的user表直接对该表的数据进行修改。(谨慎修改)。
二、MySQL数据库设置登录密码次数限制
要给mysql数据库设置该策略,需要先安装插件。登录mysql之后,在命令行界面输入以下两条命令来安装插件(注:mysql> 之后的才是指令,其余的均为信息提示,下同):
mysql> INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
Query OK, 0 rows affected (0.40 sec)
mysql> INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';
Query OK, 0 rows affected (0.01 sec)
#查看该插件的配置参数
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)
#各参数解释
参数含义:
connection_control_failed_connections_threshold #单个用户登录失败(由于密码错误引起)次数上限,默认3次
connection_control_max_connection_delay #失败上限之后再次尝试登录前最大等待时间,单位ms
connection_control_min_connection_delay #失败上限之后再次尝试登录前最小等待时间,默认1秒(1000ms)
#上述3个参数均可以利用 set global 的方式在线修改。
以上是该插件的默认配置,可以自定义设置自己想要设置的策略,操作如下:
mysql> set global connection_control_failed_connections_threshold=5; #单个用户密码错误登录失败次数上限设置为5次
Query OK, 0 rows affected (0.00 sec)
mysql> set global connection_control_min_connection_delay=30000; #失败上限之后30s之后才能再次尝试登录
Query OK, 0 rows affected (0.00 sec)
#查看设置情况
mysql> show variables like "connection_control%";
+-------------------------------------------------+------------+
| Variable_name | Value |
+-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 5 |
| connection_control_max_connection_delay | 2147483647 |
| connection_control_min_connection_delay | 30000 |
+-------------------------------------------------+------------+
3 rows in set (0.00 sec)
上述配置完成后,即可实现用户登录mysql密码错误一定次数之后,再次输入错误密码,该连接将会被挂起无响应。此外,可以通过如下SQL查看受限用户清单,包括来源用户、IP和登录失败次数
mysql> use information_schema;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from connection_control_failed_login_attempts;
Empty set (0.00 sec)
#以下指令为卸载该插件的操作
mysql> UNINSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
mysql> UNINSTALL PLUGIN CONNECTION_CONTROL;
总结
MySQL的设置由于自己还在学习中,先暂时写这两种配置,以后学到了其他的配置,再对本文章进行更新。