三、计数器清零
上面资源的统计,其实是通过数据库内部的一个计数器来完成的。不过在某些特定的情况下,可能需要对这个计数器进行清零的操作。如对某个账户设置了资源限制之后,数据库管理员可能需要进行测试,来判断这个计数器是否起作用。在进行测试时,就会耗用账户的资源。测试完成后给用户使用时,就需要对这个账户对应的计数器来一个清零的操作。否则的话,肯定会受到用户的抱怨。
在MySQL数据库中,可以为所有账户从全局重设当前的每小时资源使用数量,即重置计数器,或者单独重设某个特定的账户。如果数据库管理员需要为所有账户从全局角度将计数器重置为0,则可以执行Flush User_Resources语句。执行这个语句之后,会将所有账户的计数器重置为0。如果需要对某个具体账户的计数器进行调整,则这里可以使用Grant Usage语句来实现。
不过这里需要注意,计数器重置对账户连接数这个限制措施不会有影响。因为这个并不是按小时,而是指同一时间一个账户的连接数量。通常情况下,当服务器重新启动时所有的计数器都会清零。
四、具体应用解析
现在企业有一个基于B/S架构的OA系统。为了提高应用系统的安全与性能,就要限制资源的使用。如笔者为了防止病毒或者木马通过多次连接服务器,来消耗服务器的资源。笔者就做了一个“账户每小时可以连接服务器的次数”的限制措施。账户每小时最多可以连接服务器10次,也就是说平均没6分钟一次。其实这已经足够了。正常情况下,用户连接上服务器之后,一般是不会再断开了。也就是说,一小时就可能连接服务期一次。如果这个连接的次数设置的过多,或者不加限制,反而会给病毒或者木马程序可乘之机。