文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MYSQL5.7设置账号密码复杂度、密码有效期、账号锁定等策略

2023-09-05 05:51

关注

一、设置密码复杂度

①[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%';

 

来源地址:https://blog.csdn.net/qq_27619943/article/details/127648691

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯