1.密码复杂度
MySQL5.6.6版本之后增加了密码强度验证插件validate_password,
我们可以去mysql安装目录下的/lib/plugin 目录下查看是否有该插件
默认情况下,mysql是未启用该插件的
添 加 : install plugin validate_password soname 'validate_password.so';
插件安装成功
默认配置:
卸载:
mysql> uninstall plugin validate_password;
2.定期更换口令
首先无论是全局变量default_password_lifetime 还是 User表中的字段password_lifetime,它们的单位都是天。
当password_lifetime为null的时候,则代表该用户当前口令的有效期使用的是全局变量default_password_lifetime的值。
当password_lifetime为一个具体的值的时候,则代表使用的是字段password_lifetime的值。
对于default_password_lifetime 和password_lifetime而言,值为0则代表有效期为永远。
修改my.cnf配置文件,重启mysql生效。
show variables like 'default_password_lifetime';
3.登录失败处理
connection_control 参数
可以使用插件connection_control 和connection_control_failed_login_attempts共同实现。
show variables like 'connection_control%';
参数解释如下:
connection_control_failed_connections_threshold:
在服务器增加后续连接尝试的延迟之前,允许客户端进行的连续失败连接尝试次数。
connection_control_min_connection_delay:
对于超出阈值的每个连续连接失败,要添加的延迟量。connection_control_max_connection_delay: 要添加的最大延迟。
上述参数中,关于时间参数的单位为毫秒,其作用如下:
例如,connection_control_failed_connections_threshold和connection_control_min_connection_delay 的值分别为3和1000,客户端的前三个连续失败连接尝试没有延迟,第四次失败尝试有1000毫秒的延迟,第五次失败尝试有2000毫秒的延迟,以此类推,直到允许的最大延迟connection_control_max_connection_delay。
注意:max_connect_errors不是登录失败处理设置
它的作用是:
如果MySQL服务器连续接收到了来自于同一个主机的请求,而且这些连续的请求全部都没有成功的建立连接就被中断了,当这些连续的请求的累计值大于max_connect_errors的设定值时,MySQL服务器就会阻止这台主机后续的所有请求。
4.超时退出
show global variables like 'interactive_timeout'; show global variables like 'wait_timeout';
在初级教程中,说的是wait_timeout参数,这个参数的单位是秒,默认值是28800。这个超时时间,指的是某个和数据库的连接,在限制时间内没有发起任何请求,这个连接就会被清理掉。
但实际上相关的参数是两个,从官方文档上来看,interactive_time和wait_timeout是一样的,都是指不活跃的连接超时时间,连接线程启动的时候wait_timeout 会根据是交互模式还是非交互模式被设置为这两个值中的一个。
交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口, 在黑窗口下进行各种sql操作,当然走的肯定是tcp协议。
非交互式操作:就是你在你的项目中进行程序调用。比如一边是tomcat web服务器, 一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接。那么这时候就是非交互式操作。
当使用交互模式时,使用interactive_timeout 参数,而非交互模式时,则使用wait_timeout 参数。