概述
今天主要介绍下MySQL数据库密码策略及用户资源限制 ,下面实验基于mysql5.7来测试。
01
密码策略
在mysql 5.6对密码的强度进行了加强,推出了validate_password 插件。支持密码的强度要求。
1、安装插件
mysql> install plugin validate_password soname 'validate_password.so';mysql> show plugins;
![9206d49d321b91fdc8be7ef33aa8fcda.png](https://i-blog.csdnimg.cn/blog_migrate/5a91bec00a6969792605da18a853daf3.jpeg)
![ddb445af8f0f7373bfc3f487ff00d5c3.png](https://i-blog.csdnimg.cn/blog_migrate/78c4c493b87bbc2d8d022d21153ce236.jpeg)
2、添加配置
# cat /etc/my.cnf[mysqld]plugin-load=validate_password.sovalidate_password_policy=2validate-password=FORCE_PLUS_PERMANENT
3、检测配置
mysql> SHOW VARIABLES LIKE 'validate_password%';
02
策略详解
mysql> SHOW VARIABLES LIKE 'validate_password%';
![b36f07e9ea1064839864dcb6215505e0.png](https://i-blog.csdnimg.cn/blog_migrate/f7e469a8089779ac859156eeefd6683f.jpeg)
说明:
validate-password=ON/OFF/FORCE/FORCE_PLUS_PERMANENT: 决定是否使用该插件(及强制/永久强制使用)。
validate_password_dictionary_file:插件用于验证密码强度的字典文件路径。
validate_password_length:密码最小长度。
validate_password_mixed_case_count:密码至少要包含的小写字母个数和大写字母个数。
validate_password_number_count:密码至少要包含的数字个数。
validate_password_policy:密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。
validate_password_special_char_count:密码至少要包含的特殊字符数。
03
用户资源限制
1、max_user_connections
该参数作用是设置所有用户在同一时间连接MySQL实例的最大连接数限制。但这个参数无法对每个用户区别对待。
mysql> show global variables like '%max_user_connect%';mysql> set global max_user_connections=600;
![48ff67ae222432ee26835561b7cb72a9.png](https://i-blog.csdnimg.cn/blog_migrate/d61ccbf906302adf26275b3c36100839.jpeg)
2、max_queries_per_hour
该参数设置一个用户在一小时内可以执行查询的次数(基本包含所有语句)。
3、max_updates_per_hour
该参数设置一个用户在一小时内可以执行修改的次数(仅包含修改数据库或表的语句)。
4、max_connections_per_hour
该参数设置一个用户在一小时内可以连接MySQL的时间。
04
密码过期策略
mysql> show global variables like '%password%';
![6b17595db043a6a571cbd51856348d0d.png](https://i-blog.csdnimg.cn/blog_migrate/8ccd357381ebc0c73b51b9c6c01394e5.jpeg)
说明:
1)default_password_lifetime
设置所有用户密码过期时间,0为永不过期;
若为单独用户设置了密码过期策略,则会覆盖该参数;
alter user test3@'localhost' password expire interval 90 day;alter user test3@'localhost' password expire never; (永不过期)alter user test3@'localhost' password expire default; (默认过期策略)
2)手动强制过期
alter user test3@'localhost' password expire;
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
![db4d40d0281911c9e0ec210c01ea0f32.gif](https://i-blog.csdnimg.cn/blog_migrate/d8bb1484fe850e072cbe686968da06fa.gif)