MYSQL5.7设置账号密码复杂度密码有效期账号锁定等策略
Posted Shun Li
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL5.7设置账号密码复杂度密码有效期账号锁定等策略相关的知识,希望对你有一定的参考价值。
一、设置密码复杂度
①[root@localhost tmp]# mysql -uroot -p
②.测试修改密码
mysql>alter user 'root'@'localhost' identified by 'cnbi123';
③.查看一下当前修改后的密码策略,如果没有需要启动安全插件
mysql> SHOW VARIABLES LIKE "%password%";
④.启动安全插件
首先打开/etc/my.cnf,然后在[mysqld]的下方加入如下代码:
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
重启mysqld服务
[root@localhost tmp]# systemctl restart mysqld.service
⑤.登录
[root@localhost tmp]# mysql -uroot -p
⑥.查看一下当前修改后的密码策略
mysql> SHOW VARIABLES LIKE "%password%";
⑦.设置强密码策略,启动插件默认是强密码,下面是说明参数不用设置
参数说明:
validate_password_policy值
Policy | Tests Performed | |
0 or LOW | Length | |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters | |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
如果不想设置那么复杂,比如指向设置root密码为1234,设置方式:
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 8 |
+----------------------------+
1 row in set (0.00 sec)
validate_password_length参数默认为8,它有最小值的限制,最小值为:
validate_password_number_count
+ validate_password_special_char_count
+ (2 * validate_password_mixed_case_count)
其中:
validate_password_number_count
#指定了密码中数据的长度,
validate_password_special_char_count
#指定了密码中特殊字符的长度,
validate_password_mixed_case_count
#指定了密码中大小字母的长度。
这些参数,默认值均为1,所以validate_password_length最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。如下所示:
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 8 |
+----------------------------+
1 row in set (0.00 sec)
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 4 |
+----------------------------+
1 row in set (0.00 sec)
如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一个值,则validate_password_length将进行动态修改。
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 4 |
+----------------------------+
1 row in set (0.00 sec)
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
| 1 |
+--------------------------------------+
1 row in set (0.00 sec)
mysql> set global validate_password_mixed_case_count=2;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
| 2 |
+--------------------------------------+
1 row in set (0.00 sec)
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 6 |
+----------------------------+
1 row in set (0.00 sec)
二、设置密码90天过期
#设置全局密码过期时间default_password_lifetime,单位为天
①首先打开/etc/my.cnf,然后在[mysqld]的下方加入如下代码:
[mysqld]
default_password_lifetime=90
②重启mysqld服务
[root@localhost tmp]# systemctl restart mysqld.service
③登录mysql查看
mysql> SHOW VARIABLES LIKE "%password%";
#default_password_lifetime=0 时默认密码用不过期
除全局配置外,也可以创建用户时指定密码过期时间
①#创建用户test_passwd并设置密码过期时间为90天
mysql> CREATE USER 'test_passwd'@'localhost' identified by 'Atest_passwd123' PASSWORD EXPIRE INTERVAL 90 DAY;
mysql> select user,host,password_last_changed,password_lifetime from mysql.user where user='test_passwd';
②#创建用户test_passwd_never并设置密码用不过期
mysql> CREATE USER 'test_passwd2'@'localhost' identified by 'Atest_passwd123' PASSWORD EXPIRE NEVER;
mysql> select user,host,password_last_changed,password_lifetime from mysql.user where user='test_passwd2';
#创建用户test_passwd_default并设置密码过期时间遵循系统默认值
mysql> CREATE USER 'test_passwd_default'@'localhost' identified by 'Atest_passwd123' PASSWORD EXPIRE DEFAULT;
mysql> select user,host,password_last_changed,password_lifetime from mysql.user where user='test_passwd_default';
三、设置登录失败处理功能,失败登录5次锁定5分钟
设置方法:
①登录
[root@localhost tmp]# mysql -uroot -p
②输入一下命令,安装插件
mysql> install plugin CONNECTION_CONTROL soname 'connection_control.so';
mysql> install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';
查看:
mysql> show variables like '%connection_control%';
③修改my.cnf文件
vi /etc/my.cnf
在文件中,我们增加如下两行
connection-control-failed-connections-threshold=5 #登陆失败次数限制
connection-control-min-connection-delay=300000 #限制重试时间,此处为毫秒,注意按需求换算,此处为5分钟
④重启mysqld服务
[root@localhost tmp]# systemctl restart mysqld.service
⑤重新登录数据库,查看是否生效
mysql> show variables like '%connection_control%';
误删除mysql中的所用用户,如何重新设置root账号和密码
在练习mysql语句的时候,使用delete将数据库中的所有用户删除了,其中也包括root用户。并进行了flush privileges;这时候发现重新登入mysql已经不能正常登陆。对此我们要重新设置root账号和root密码。具体操作步骤如下:
删除用户操作:
mysql> delete frommysql.user; 删除所有用户 mysql> flushprivileges;
首先断掉与数据库相关联的所有链接,防止咋数据库重启的时候数据的丢失。
[[email protected] ~]# service mysqld stop
修改数据库配置文件
[[email protected] ~]# vim /etc/my.cnf
在配置文件中的[mysql]下的内容
在[mysql]
下一行中添加“skip-grant-tables”
保存并退出,重启mysql数据库
[[email protected]]# mysql
mysql> insertinto mysql.user (host, user, password , sll_cipher,x509_issuer, x509_subje c ) values (‘localhost‘, ‘root‘,password(‘123456‘),’’,’’);
退出数据库,再将mysql.cnf配置文件进行更改,删除刚才新添加的行即可。重新启动数据库即可。
[[email protected] ~]# service mysqld restart
即可完成对mysqlroot用户的添加!
第二种方式不修改mysql的配置文件;
service mysqld stop //停止mysql数据库服务 mysqld_safe--skip-grant-tables --skip-networking
另外终端
Mysql mysql> insertinto mysql.user (host, user, password,sll_cipher,x509_issuer,x509_subjec) values (‘localhost‘, ‘root‘,password(‘123456‘),’’,’’);
即可完成对数据库root用户的添加!
本文出自 “心空弥漫” 博客,请务必保留此出处http://aiyouwei.blog.51cto.com/11705634/1856266
以上是关于MYSQL5.7设置账号密码复杂度密码有效期账号锁定等策略的主要内容,如果未能解决你的问题,请参考以下文章