mysql全局变量之max_connections & max_user_connections详解
2015-05-18 11:03
302 查看
之前在网上看到很多关于max_conections & max_user_conenctions变量的解释,但是感觉都有些不太准确,要不就是说的很模糊,因此详读了mysql的官方文档6.3.4 Setting Account Resource Limits章节,并结合实验进行验证。
仅供参考:如有遗误,望请海涵!
实验步骤如下:
1. 启动mysql
2. 创建测试环境所需的用户
3. 查看及验证max_connections变量的意义
4. 查看及验证max_user_connections变量的意义
启动mysql,命令如下:
windows:C:\net start mysql
linux: #service mysqld start
创建测试环境所需的用户
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> create user keyman@'127.0.0.1' identified by 'keyman';
mysql> create user harry@'127.0.0.1' identified by 'harry';
mysql> flush privileges;
查看及验证max_connections变量的含义
1) 打开4个命令窗口[window1 & window2 & window3 & window4]
2)window1上执行如下命令
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> select @@max_connections;
+-------------------+
| max_connections |
+-------------------+
| 0 |
+-------------------+
//可以看到此时的值(默认值)是0,即不做限制
mysql> set @@global.max_connections=2;
mysql> select @@max_connections;
+-------------------+
| max_connections | +-------------------+
| 2 |
+-------------------+ mysql> exit [windows | linux] : mysql -uroot -p
Enter password:****** 3) window2上执行如下命令
[windows | linux] : mysql -ukeyman -p
Enter password:****** mysql>
4) window3上执行如下命令
[windows | linux] : mysql -uharry -p Enter password:***** ERROR 1040(08004):Two many connections
//由于max_connections的值设置为2,因此此时无法在进行连接,但是此时仍然不明确 //为什么无法连接,继续测试以进一步验证无法连接的原因。
5)window3上执行如下命令
注意:4)步骤无法登陆mysql,此步骤可直接在4)的基础之上执行如下命令,也可以再新打开一个命令窗口。
[windows | linux] : mysql -ukeyman -p
Enter password:******
mysql>
//奇迹发生了,keyman用户竟然连接上了。 6)window4上执行如下命令 [windows | linux] : mysql -ukeyman -p
Enter password:******
mysql>
//奇迹再次发生,keyman用户的第三个连接竟然又连接上了。
综上6步,max_connections变量的意义显而易见。
查看及验证max_user_connections变量的含义 1) 打开三个命令窗口[window1 & window2 & window3 & window4] 2)window1上执行如下命令
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> select @@max_user_connections;
+------------------------+
| max_user_connections | +------------------------+
| 0 |
+------------------------+
//可以看到此时的值(默认值)是0,即不做限制
mysql> set @@global.max_user_connections=2; mysql> select @@max_user_connections;
+------------------------+
| max_user_connections | +------------------------+
| 2 |
+------------------------+ mysql> exit [windows | linux] : mysql -uroot -p
Enter password:****** 3) window2上执行如下命令 [windows | linux] : mysql -uroot -p Enter password:****** mysql>
4) window3上执行如下命令
[windows | linux] : mysql -uroot -p Enter password:****** ERROR 1203(42000):User root already has more then 'max_user_connections' active connections
//由于max_connections的值设置为2,因此此时无法在进行连接,但是此时仍然不明确 //为什么无法连接,继续测试以进一步验证无法连接的原因。
5)window3上执行如下命令
注意:4)步骤无法登陆mysql,此步骤可直接在4)的基础之上执行如下命令,也可以再新打开一个命令窗口。
[windows | linux] : mysql -ukeyman -p
Enter password:******
mysql>
//奇迹发生了,keyman用户竟然连接上了 6) window4上执行如下命令
[windows | linux] : mysql -uharry -p
Enter password:******
mysql>
//奇迹再次发生了,harry用户竟然连接上了
综上6步,max_user_connections变量的意义显而易见。
将max_user_connections变量的值与用户关联
1) 打开三个命令窗口[window1 & window2 & window3 & window4] 2)window1上执行如下命令
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> select @@max_user_connections;
+------------------------+
| max_user_connections | +------------------------+
| 0 |
+------------------------+
//mysql> show grants;命令也可以查看。
//可以看到此时的值(默认值)是0,即不做限制
mysql> grant usage on *.* to keyman@'127.0.0.1' with max_user_connections 2; mysql> select @@max_user_connections;
+------------------------+
| max_user_connections | +------------------------+
| 2 |
+------------------------+ mysql> exit [windows | linux] : mysql -ukeyman -p
Enter password:****** 3) window2上执行如下命令 [windows | linux] : mysql -ukeyman -p Enter password:****** mysql>
4) window3上执行如下命令
[windows | linux] : mysql -ukeyman -p Enter password:****** ERROR 1203(42000):User keyman already has more then 'max_user_connections' active connections
//由于max_connections的值设置为2,因此此时无法在进行连接,但是此时仍然不明确 //为什么无法连接,继续测试以进一步验证无法连接的原因。
5)window3上执行如下命令
注意:4)步骤无法登陆mysql,此步骤可直接在4)的基础之上执行如下命令,也可以再新打开一个命令窗口。
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> select @@max_user_connections; +------------------------+
| max_user_connections | +------------------------+
| 0 |
+------------------------+ //经过验证,在三个窗口中同时登陆root账户,没有任何问题。
如果你坚持看完了这篇文章,那么很荣幸能够和你分享 最终结论。见证奇迹的时刻:
结论1:max_connections变量的意义是 限制当前mysql server中 允许同时连接的不同用 户数,并不对相同用户的多次连接进行限制
结论2:max_user_connections变量的意义是 限制当前mysql server中 允许同时连接的相 同用户的连接数,不对连接的不同用户数进行限制
结论3:对max_connections变量的设置,由于是设置的全局变量,因此均是对所有用户生效 结论4:对max_user_connections的设置,分为以下两种情况; 1. 针对所有用户有效
mysql> set @@global.max_user_connections=2;
2. 针对单个用户有效
mysql> grant usage on *.* to keyman@127.0.0.1 with max_user_connections 2;
//此时的设置将仅对keyman用户有效。
注:与max_user_connections参数类似的还有max_queries_per_hour,max_updates_per_hour 及max_connections_per_hours,见名知意,用法同上。
本文出自 “Keyman” 博客,请务必保留此出处http://keyman.blog.51cto.com/9807984/1652220
仅供参考:如有遗误,望请海涵!
实验步骤如下:
1. 启动mysql
2. 创建测试环境所需的用户
3. 查看及验证max_connections变量的意义
4. 查看及验证max_user_connections变量的意义
启动mysql,命令如下:
windows:C:\net start mysql
linux: #service mysqld start
创建测试环境所需的用户
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> create user keyman@'127.0.0.1' identified by 'keyman';
mysql> create user harry@'127.0.0.1' identified by 'harry';
mysql> flush privileges;
查看及验证max_connections变量的含义
1) 打开4个命令窗口[window1 & window2 & window3 & window4]
2)window1上执行如下命令
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> select @@max_connections;
+-------------------+
| max_connections |
+-------------------+
| 0 |
+-------------------+
//可以看到此时的值(默认值)是0,即不做限制
mysql> set @@global.max_connections=2;
mysql> select @@max_connections;
+-------------------+
| max_connections | +-------------------+
| 2 |
+-------------------+ mysql> exit [windows | linux] : mysql -uroot -p
Enter password:****** 3) window2上执行如下命令
[windows | linux] : mysql -ukeyman -p
Enter password:****** mysql>
4) window3上执行如下命令
[windows | linux] : mysql -uharry -p Enter password:***** ERROR 1040(08004):Two many connections
//由于max_connections的值设置为2,因此此时无法在进行连接,但是此时仍然不明确 //为什么无法连接,继续测试以进一步验证无法连接的原因。
5)window3上执行如下命令
注意:4)步骤无法登陆mysql,此步骤可直接在4)的基础之上执行如下命令,也可以再新打开一个命令窗口。
[windows | linux] : mysql -ukeyman -p
Enter password:******
mysql>
//奇迹发生了,keyman用户竟然连接上了。 6)window4上执行如下命令 [windows | linux] : mysql -ukeyman -p
Enter password:******
mysql>
//奇迹再次发生,keyman用户的第三个连接竟然又连接上了。
综上6步,max_connections变量的意义显而易见。
查看及验证max_user_connections变量的含义 1) 打开三个命令窗口[window1 & window2 & window3 & window4] 2)window1上执行如下命令
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> select @@max_user_connections;
+------------------------+
| max_user_connections | +------------------------+
| 0 |
+------------------------+
//可以看到此时的值(默认值)是0,即不做限制
mysql> set @@global.max_user_connections=2; mysql> select @@max_user_connections;
+------------------------+
| max_user_connections | +------------------------+
| 2 |
+------------------------+ mysql> exit [windows | linux] : mysql -uroot -p
Enter password:****** 3) window2上执行如下命令 [windows | linux] : mysql -uroot -p Enter password:****** mysql>
4) window3上执行如下命令
[windows | linux] : mysql -uroot -p Enter password:****** ERROR 1203(42000):User root already has more then 'max_user_connections' active connections
//由于max_connections的值设置为2,因此此时无法在进行连接,但是此时仍然不明确 //为什么无法连接,继续测试以进一步验证无法连接的原因。
5)window3上执行如下命令
注意:4)步骤无法登陆mysql,此步骤可直接在4)的基础之上执行如下命令,也可以再新打开一个命令窗口。
[windows | linux] : mysql -ukeyman -p
Enter password:******
mysql>
//奇迹发生了,keyman用户竟然连接上了 6) window4上执行如下命令
[windows | linux] : mysql -uharry -p
Enter password:******
mysql>
//奇迹再次发生了,harry用户竟然连接上了
综上6步,max_user_connections变量的意义显而易见。
将max_user_connections变量的值与用户关联
1) 打开三个命令窗口[window1 & window2 & window3 & window4] 2)window1上执行如下命令
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> select @@max_user_connections;
+------------------------+
| max_user_connections | +------------------------+
| 0 |
+------------------------+
//mysql> show grants;命令也可以查看。
//可以看到此时的值(默认值)是0,即不做限制
mysql> grant usage on *.* to keyman@'127.0.0.1' with max_user_connections 2; mysql> select @@max_user_connections;
+------------------------+
| max_user_connections | +------------------------+
| 2 |
+------------------------+ mysql> exit [windows | linux] : mysql -ukeyman -p
Enter password:****** 3) window2上执行如下命令 [windows | linux] : mysql -ukeyman -p Enter password:****** mysql>
4) window3上执行如下命令
[windows | linux] : mysql -ukeyman -p Enter password:****** ERROR 1203(42000):User keyman already has more then 'max_user_connections' active connections
//由于max_connections的值设置为2,因此此时无法在进行连接,但是此时仍然不明确 //为什么无法连接,继续测试以进一步验证无法连接的原因。
5)window3上执行如下命令
注意:4)步骤无法登陆mysql,此步骤可直接在4)的基础之上执行如下命令,也可以再新打开一个命令窗口。
[windows | linux] : mysql -uroot -p
Enter password:******
mysql> select @@max_user_connections; +------------------------+
| max_user_connections | +------------------------+
| 0 |
+------------------------+ //经过验证,在三个窗口中同时登陆root账户,没有任何问题。
如果你坚持看完了这篇文章,那么很荣幸能够和你分享 最终结论。见证奇迹的时刻:
结论1:max_connections变量的意义是 限制当前mysql server中 允许同时连接的不同用 户数,并不对相同用户的多次连接进行限制
结论2:max_user_connections变量的意义是 限制当前mysql server中 允许同时连接的相 同用户的连接数,不对连接的不同用户数进行限制
结论3:对max_connections变量的设置,由于是设置的全局变量,因此均是对所有用户生效 结论4:对max_user_connections的设置,分为以下两种情况; 1. 针对所有用户有效
mysql> set @@global.max_user_connections=2;
2. 针对单个用户有效
mysql> grant usage on *.* to keyman@127.0.0.1 with max_user_connections 2;
//此时的设置将仅对keyman用户有效。
注:与max_user_connections参数类似的还有max_queries_per_hour,max_updates_per_hour 及max_connections_per_hours,见名知意,用法同上。
本文出自 “Keyman” 博客,请务必保留此出处http://keyman.blog.51cto.com/9807984/1652220
相关文章推荐
- mysql 的max_connections和max_user_connections 的区别
- MySQL中的max_connections和max_user_connections 及 MySQL服务器最大连接数的合理设置
- 解析mysql中max_connections与max_user_connections的区别
- 合理设置max_user_connections以避免MySQL宕机
- 解析mysql中max_connections与max_user_connections的区别
- [MySQL]记录一次线上故障处理过程--> has more than 'max_user_connections' active connections
- [MySQL]记录一次线上故障处理过程--> has more than 'max_user_connections' active connections
- mysql调整max_connections和max_user_connections及php模拟并发测试
- 解析mysql中max_connections与max_user_connections的区别
- MySQL的max_user_connections拒绝连接的一次踩雷经验
- MySQL中的max_connections和max_user_connections 及 MySQL服务器最大连接数的合理设置
- mysql 的max_connections和max_user_connections 的区别
- Nginx关于location 的匹配规则详解,Nginx location 匹配优先级,Nginx的location匹配规则和全局变量
- 基于JavaScript 声明全局变量的三种方式详解
- MySQL 5.5 服务器变量详解(一)
- AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象
- PHP 全局变量global详解
- Firefox - 附加软件 - Firebug - DOM视图 - 借助Show User-defined Properties选项查看javascript全局变量
- Max_user_connections 与Max_connections 与max_connect_errors
- Max_connect_errors – MySQL性能参数详解