mysql 的max_connections和max_user_connections 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 的max_connections和max_user_connections 的区别相关的知识,希望对你有一定的参考价值。

----查看max_user_connections 默认值

  mysql> show variables like max_user_connections;
+----------------------+-------+
 | Variable_name        | Value |
 +----------------------+-------+
 | max_user_connections | 0     |
 +----------------------+-------+

1 row in set (0.00 sec)

---设置 max_user_connections
mysql> set  @@global.max_user_connections=1;

Query OK, 0 rows affected (0.03 sec)
mysql>  select @@max_user_connections;
 +------------------------+
 | @@max_user_connections |
 +------------------------+
 |                      1 |
 +------------------------+
 1 row in set (0.00 sec)
上面参数设置完后窗口,要重新登陆一下

[email protected] ~]# mysql -uroot -pmysql
然后再开一个窗口登陆就会报如下错误:
[email protected] ~]# mysql -uroot -pmysql
 Warning: Using a password on the command line interface can be insecure.

ERROR 1203 (42000): User root already has more than max_user_connections active connections



另外在登陆一个用户u2,正常登陆,但是在登陆一个u2用户,就会报错:
[email protected] mysql]# mysql -uu2 -pu2
 Warning: Using a password on the command line interface can be insecure.
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 147
 Server version: 5.6.27-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial)
 Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 Type help; or \h for help. Type \c to clear the current input statement.


max_user_connections 针对用户设计的




下面我们来看看max_connections 的作用
mysql> select @@max_connections;
 +-------------------+
 | @@max_connections |
 +-------------------+
 |               151 |
 +-------------------+
 1 row in set (0.00 sec)
 mysql>  set  @@global.max_connections=2;
 Query OK, 0 rows affected (0.00 sec)
 mysql> select @@max_connections;
 +-------------------+
 | @@max_connections |
 +-------------------+
 |                 2 |
 +-------------------+
 1 row in set (0.00 sec)
上面参数设置完后窗口,要重新登陆一下
[[email protected] mysql]# mysql -uroot -pmysql
在开一个窗口session2正常登陆:
[[email protected] mysql]# mysql -uroot -pmysql
再开第三个窗口,session3 登陆的时候报错
[[email protected] ~]# mysql -uroot -pmysql
 Warning: Using a password on the command line interface can be insecure.
 ERROR 1040 (HY000): Too many connections
 [[email protected] ~]# mysql -uu2 -pu2
 Warning: Using a password on the command line interface can be insecure.
 ERROR 1040 (HY000): Too many connections


实验完毕后,改回原来的参数
mysql>  set  @@global.max_user_connections=0;
 Query OK, 0 rows affected (0.00 sec)

 mysql>  select @@max_user_connections;
 +------------------------+
 | @@max_user_connections |
 +------------------------+
 |                      0 |
 +------------------------+
 1 row in set (0.00 sec)
 mysql>  set  @@global.max_connections=200;
 Query OK, 0 rows affected (0.00 sec)
 mysql> select @@max_connections;
 +-------------------+
 | @@max_connections |
 +-------------------+
 |               200 |
 +-------------------+
 1 row in set (0.00 sec)


结论:

max_user_connections:限制每个用户的session连接个数,例如max_user_connections=1 ,那么用户u1只能连接的session数为1,如果还有用户u2,还是可以连接,但是连接数仍然为1
max_connections :是对整个服务器的用户限制,整个服务器只能开这么多session,而不考虑用户!

 

以上是关于mysql 的max_connections和max_user_connections 的区别的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 最大连接数(max_connections)上限214问题

mysql的max_connections越大越好?

mysql查看和修改最大连接数

MySQL参数最大连接数max_connections

centos7 mariadb mysql max_connections=214 无法修改的问题

CentOS中设置Mysql的最大连接数max_connections(用于解决too many connections的问题)