IT技术博客大学习 共学习 共进步

控制mysql用户连接数据库数目

虎子的BLOG 2010-09-12 23:53:50 浏览 2,884 次

对于MySQL用户权限一般都喜欢用grant all privileges on huzi.* to ‘xxx’@'localhost’ identified by ‘xxx’ 来授权用户。之前由于程序的BUG 并发index.php就可以把数据库给弄死,由于程序是加密,也不提供太多技术支持,再笨的攻击者随便就可以让网站陷入瘫痪。官方提供的技术支持是rewrite  可是,弄了这个以后 后台登录发布广告又成了问题,真是垃圾程序 。那时候只有通过域名分开  访问www.xxx.com的用户通过iptables 的connlimit模块来限制并发连接数据库的数目。后来想想,Mysql自己应该也可以控制 用户的连接数目 ,大家 desc mysql.user 就可以看出来了,有两个参数 ,这两个可以针对global 也可以针对某个用户的会话 ,参数是 max_connections  max_user_connections

max_connections  默认值是0 也是无限连接的意思 (受my.cnf 的max_connections限制 ),我们可以使用

update user set max_connections=’2′ where user=’huzi’;

这样 ,每小时huzi只能连接两次数据库,这个有点BT,直接pass

那就看max_user_connections  这个我们理解为 用户最大的连接数目,针对用户本身

update user set max_user_connections=’9′ where user=’huzi’;

我设置了huzi这个用户最大的连接数目为9

下面我用工具连接,我连接第六次提示

进入 mysql shell看看线程数目

9个连接

建议继续学习

  1. MySQL数据库负载很高连接数很多怎么处理 (阅读 3,304)
  2. 被 Apache 的 MaxClients 困住了 (阅读 2,782)