问题描述:把max_connections和max_user_connections参数进行分析测试,顾名思义,max_connections就是负责数据库全局的连接数,max_user_connections可以限制单个用户的最大连接数。

1.临时修改max_user_connections全局参数,当max_user_connections为0时,对数据库下所有参数没有做限制,但不能说明数据库下的用户并没有开启这个参数

  1. mysql> set global max_user_connections=1;
  2. Query OK, 0 rows affected (0.00 sec)

新开多个窗口测试连接,连接失败

  1. [root@rhel7 ~]# /usr/local/mysql8/bin/mysql -utest01 -p123 -h192.168.163.21 -P33306
  2. mysql: [Warning] Using a password on the command line interface can be insecure.
  3. ERROR 1203 (42000): User test01 already has more than 'max_user_connections' active connections

2.对单个用户进行连接限制

重启释放刚才设置临时设置的参数

  1. mysql> restart
  2. -> ;
  3. Query OK, 0 rows affected (0.01 sec)

mysql> show variables like '%max_user_conn%';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| max_user_connections | 0 |
+----------------------+-------+
1 row in set (0.01 sec)

设置单个用户的连接限制,官方文档给的语句,

  1. mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank'
    -> WITH MAX_QUERIES_PER_HOUR 20
    -> MAX_UPDATES_PER_HOUR 10
    -> MAX_CONNECTIONS_PER_HOUR 5
    -> MAX_USER_CONNECTIONS 2;

进行用户连接测试,会看到提示最大连接数为3时,连接失败

  1. [root@rhel7 ~]# /usr/local/mysql8/bin/mysql -ufrancis -pfrank -S /data/mysql8/db_dxpt08/mysql.sock
  2. mysql: [Warning] Using a password on the command line interface can be insecure.
  3. ERROR 1226 (42000): User 'francis' has exceeded the 'max_user_connections' resource (current value: 3)

测试成功的用户查看当前连接信息,这里连接用户可以看到最大用户连接数为2,但是root观察的全局max_user_connections还是0

  1. mysql> show variables like '%max_user_connections%';
  2. +----------------------+-------+
  3. | Variable_name | Value |
  4. +----------------------+-------+
  5. | max_user_connections | 2 |
  6. +----------------------+-------+
  7. 1 row in set (0.00 sec)

3.如果想要查看修改参数在哪里设置,就需要user表中查看这些

  1. mysql> select * from user where user='francis'\G
  2. *************************** 1. row ***************************
  3. Host: localhost
  4. User: francis
  5. Select_priv: N
  6. Insert_priv: N
  7. Update_priv: N
  8. Delete_priv: N
  9. Create_priv: N
  10. Drop_priv: N
  11. Reload_priv: N
  12. Shutdown_priv: N
  13. Process_priv: N
  14. File_priv: N
  15. Grant_priv: N
  16. References_priv: N
  17. Index_priv: N
  18. Alter_priv: N
  19. Show_db_priv: N
  20. Super_priv: N
  21. Create_tmp_table_priv: N
  22. Lock_tables_priv: N
  23. Execute_priv: N
  24. Repl_slave_priv: N
  25. Repl_client_priv: N
  26. Create_view_priv: N
  27. Show_view_priv: N
  28. Create_routine_priv: N
  29. Alter_routine_priv: N
  30. Create_user_priv: N
  31. Event_priv: N
  32. Trigger_priv: N
  33. Create_tablespace_priv: N
  34. ssl_type:
  35. ssl_cipher: 0x
  36. x509_issuer: 0x
  37. x509_subject: 0x
  38. max_questions: 20
  39. max_updates: 10
  40. max_connections: 5
  41. max_user_connections: 2
  42. plugin: mysql_native_password
  43. authentication_string: *63DAA25989C7E01EB96570FA4DBE154711BEB361
  44. password_expired: N
  45. password_last_changed: 2022-06-13 10:46:16
  46. password_lifetime: NULL
  47. account_locked: N
  48. Create_role_priv: N
  49. Drop_role_priv: N
  50. Password_reuse_history: NULL
  51. Password_reuse_time: NULL
  52. Password_require_current: NULL
  53. User_attributes: NULL
  54. 1 row in set (0.01 sec)

4.附上官方给的两种修改max_user_connections方式

  1. mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank'
  2. -> WITH MAX_QUERIES_PER_HOUR 20
  3. -> MAX_UPDATES_PER_HOUR 10
  4. -> MAX_CONNECTIONS_PER_HOUR 5
  5. -> MAX_USER_CONNECTIONS 2;
  6.  
  7. mysql> ALTER USER 'francis'@'localhost' WITH MAX_QUERIES_PER_HOUR 100;
  8. mysql> ALTER USER 'francis'@'localhost' WITH MAX_QUERIES_PER_HOUR 100;

5.结论

1.max_connections可以负责全局最大连接数管理。

2.max_user_connections负责限制每个用户的最大连接数,设置数量不能超过max_connections。max_user_connections开启全局变量的时候,会影响所有用户,除外单独设置了max_user_connections参数的所有用户。

mysql中max_connections与max_user_connections使用区别的更多相关文章

  1. mysql 的max_connections和max_user_connections 的区别

    ----查看max_user_connections 默认值 MySQL> show variables like 'max_user_connections'; +-------------- ...

  2. 用count(*)还是count(列名) || Mysql中的count()与sum()区别

    Mysql中的count()与sum()区别   首先创建个表说明问题 CREATE TABLE `result` (   `name` varchar(20) default NULL,   `su ...

  3. (转)MySQL中In与Exists的区别

    背景:总结mysql相关的知识点. 如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件. select * from user where exists s ...

  4. MySQL中interactive_timeout和wait_timeout的区别【转】

    在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: ERROR 2013 (HY000): Lost connection to MySQL s ...

  5. Mysql中函数和存储过程的区别

    Mysql中函数和存储过程的区别 存储过程: 1.       可以写sql语句 2.       inout,out构造返回值 3.       调用:call:存储过程名称 4.       可以 ...

  6. mysql中in和exist的区别

    mysql中in和exists的区别 -- in写法select * from A where A.id in (select bid from  B ) and A.name in (select ...

  7. MySQL中 utf8与utf8mb4的区别

    MySQL中 utf8与utf8mb4的区别 一.简介 ​ MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在 ...

  8. MySQL 中NULL和空值的区别

    平时我们在使用MySQL的时候,对于MySQL中的NULL值和空值区别不能很好的理解.注意到NULL值是未知的,且占用空间,不走索引,DBA建议建表的时候最好设置字段是NOT NULL 来避免这种低效 ...

  9. mysql中char与varchar的区别分析(补充一句,int和integer没区别)

    转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...

随机推荐

  1. JdGrid排序问题

    JdGrid排序问题 js代码 function gridList() { var $gridList = $("#gridList"); $gridList.dataGrid({ ...

  2. 99-oracle-asmdevices.rules(udev方式创建asm磁盘)

    一.创建asm磁盘的几种方式 创建asm方式很多主要有以下几种 1.Faking方式 2.裸设备方式 3.udev方式(它下面有两种方式) 3.1 uuid方式. 3.2 raw方式(裸设备方式) 4 ...

  3. python中faker模块的使用

    Faker 安装 pip install Faker 基本使用 from faker import Faker #创建对象,默认生成的数据为为英文,使用zh_CN指定为中文 fake = Faker( ...

  4. Python 报错 ValueError list.remove(x) x not in list 解决办法

    平时开发 Python 代码过程中,经常会遇到这个报错: ValueError: list.remove(x): x not in list 错误提示信息也很明确,就是移除的元素不在列表之中. 比如: ...

  5. java第十二周作业

    1.定义一个点类Point, 包含2个成员变量x.y分别表示x和y坐标,2个构造器Point()和Point( intx0,y0),以及一个movePoint (int dx,intdy)方法实现点的 ...

  6. 原生实现C#和Lua相互调用-Unity3D可用

    引言     本篇简单介绍如何在C#中执行Lua脚本,传递数据到Lua中使用,以及Lua中调用C#导出的方法等.在Unity中开发测试,并打IL2CPP的Android包在模拟器上运行通过.Lua版本 ...

  7. 『现学现忘』Git基础 — 10、配置Git用户签名说明

    目录 1.为什么要创建用户签名 2.为什么要在Git中配置这些信息 3.创建用户签名的方式 4.总结 1.为什么要创建用户签名 作为版本控制系统的客户端,每台客户机对版本库的所有提交操作,都需要注明操 ...

  8. VulnHub-Earth 打靶记录

    目录 VulnHub-Earth 打靶记录 知识点 目标探测 信息收集 Shell反弹&信息二次收集 提权 权限维持 VulnHub-Earth 打靶记录 搭建靶场的时候一定要使用NATser ...

  9. .NET Core企业微信网页授权登录

    1.开发前准备 参数获取 corpid 每个企业都拥有唯一的corpid,获取此信息可在管理后台"我的企业"-"企业信息"下查看"企业ID" ...

  10. InnoDB数据存储结构

    MySQL服务器上 存储引擎 负责对表中数据的读取和写入工作,不同存储引擎中 存放的格式 一般是不同的,甚至有的存储引擎(Memory)不用磁盘来存储数据. 页 (Page) 是磁盘和内存之间交互的基 ...