一、 密码策略配置
1. 空闲连接超时时间,分钟
interactive_timeout=60
wait_timeout=60;
2. 密码过期策略,天
default_password_lifetime=90
3. 密码重用策略
# 60天内不能修改成过去使用过的前6次密码
password_reuse_interval=60
password_history=6
4. 密码验证策略
# 修改密码时验证旧密码
password_require_current=ON
5. 设置密码强度
# 需要安装validate_password组件
# install component 'file://component_validate_password';
# 查看密码相关的配置
show variables like '%validate_password%';
validate_password.check_user_name=ON
validate_password.policy=MEDIUM
# 密码长度
validate_password.length=8
# 必须包含1个大写和1个小写
validate_password.mixed_case_count=1
# 必须包含1个数字
validate_password.number_count=1
# 必须包含1个特殊字符
validate_password.special_char_count=1
6. 登录失败锁定策略
# 需要安装connection_control插件
# install plugin connection_control soname 'connection_control';
# install plugin connection_control_failed_login_attempts soname 'connection_control';
# 查看登录失败锁定策略
show variables like '%connection_control%';
# 连续3次登录失败
connection_control_failed_connections_threshold=3
# 锁账号30分钟
connection_control_min_connection_delay=1800000
二、可能碰到的问题
1. too many connection
- 分析
SQL> show FULL PROCESSLIST
Id User Host db Command Time State
611296 governance 192.168.x.x:63862 Connect 671 Waiting in connection_control plugin
611360 governance 192.168.x.x:64170 Connect 530 Waiting in connection_control plugin
611440 governance 192.168.x.x:62612 Connect 134 Waiting in connection_control plugin
611361 governance 192.168.x.x:64174 Connect 524 Waiting in connection_control plugin
-- 因为增加了密码策略后,原先程序中的密码不符合密码策略,或者密码过期等原因,
-- 导致未调整密码的程序不停的尝试连接数据库,导致数据库连接耗尽
- 解决方法
--- 修改密码使其符合复杂度要求
SQL> alter user 'governance'@'%' identified by '密码';
--- 使某用户的密码永不过期
SQL> alter user 'governance'@'%' password expire never;
--- 注意:调整对应程序的密码
--- 拼装kill,用于杀死wating的进程
SQL> select concat('kill ', id, ';') from information_schema.PROCESSLIST where user='governance';
...
concat('kill ', id, ';')
kill 924;
kill 942;
kill 945;
kill 931;
...
-- 复制kill命令,并运行
SQL> kill 924
版权声明:本文为blvyoucan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。