日期:2014-05-16  浏览次数:20908 次

一个简单的patch--MySQL禁止新连接

1、?? 问题背景

这个patch基于这样的需求:

a)???????? MySQL刚刚启动时,有些情况下DBA希望能够先做一些操作,然后再允许应用连接进来。

b)???????? 在一个全长连接高并发的服务出现一些特别耗费资源,导致影响整机服务的连接,kill以后客户端马上又连上来,“杀不掉”

?

因此考虑如果有个开关能够暂时禁止普通用户连接,能够满足上述两个需求。

?

2、?? 基本功能

基本功能包括以下:

a) 提供一个变量,当设置为on时,只允许有SUPER权限的用户连接;

b) my.cnf中能够直接配置初始值, 使得启动时只有权限满足的用户才能连接;

c) 正常执行过程中能够动态修改。

d) ON修改为OFF的时候,不影响现存的连接。

e) 拥有SUPER以上权限的才能通过命令行修改此值。

?

???????? 从描述看来需求确实简单,其实看代码更简洁。

????????http://bugs.mysql.com/file.php?id=18015&text=1

基于5.5.22。用别的版本的同学可以自己改,有效代码只有十几行。

?