mysql中max_connections与max_user_connections使用区别
问题描述:把max_connections和max_user_connections参数进行分析测试,顾名思义,max_connections就是负责数据库全局的连接数,max_user_connections可以限制单个用户的最大连接数。
1.临时修改max_user_connections全局参数,当max_user_connections为0时,对数据库下所有参数没有做限制,但不能说明数据库下的用户并没有开启这个参数
- mysql> set global max_user_connections=1;
- Query OK, 0 rows affected (0.00 sec)
新开多个窗口测试连接,连接失败
- [root@rhel7 ~]# /usr/local/mysql8/bin/mysql -utest01 -p123 -h192.168.163.21 -P33306
- mysql: [Warning] Using a password on the command line interface can be insecure.
- ERROR 1203 (42000): User test01 already has more than 'max_user_connections' active connections
2.对单个用户进行连接限制
重启释放刚才设置临时设置的参数
- mysql> restart
- -> ;
- 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)
设置单个用户的连接限制,官方文档给的语句,
- 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时,连接失败
- [root@rhel7 ~]# /usr/local/mysql8/bin/mysql -ufrancis -pfrank -S /data/mysql8/db_dxpt08/mysql.sock
- mysql: [Warning] Using a password on the command line interface can be insecure.
- ERROR 1226 (42000): User 'francis' has exceeded the 'max_user_connections' resource (current value: 3)
测试成功的用户查看当前连接信息,这里连接用户可以看到最大用户连接数为2,但是root观察的全局max_user_connections还是0
- mysql> show variables like '%max_user_connections%';
- +----------------------+-------+
- | Variable_name | Value |
- +----------------------+-------+
- | max_user_connections | 2 |
- +----------------------+-------+
- 1 row in set (0.00 sec)
3.如果想要查看修改参数在哪里设置,就需要user表中查看这些
- mysql> select * from user where user='francis'\G
- *************************** 1. row ***************************
- Host: localhost
- User: francis
- Select_priv: N
- Insert_priv: N
- Update_priv: N
- Delete_priv: N
- Create_priv: N
- Drop_priv: N
- Reload_priv: N
- Shutdown_priv: N
- Process_priv: N
- File_priv: N
- Grant_priv: N
- References_priv: N
- Index_priv: N
- Alter_priv: N
- Show_db_priv: N
- Super_priv: N
- Create_tmp_table_priv: N
- Lock_tables_priv: N
- Execute_priv: N
- Repl_slave_priv: N
- Repl_client_priv: N
- Create_view_priv: N
- Show_view_priv: N
- Create_routine_priv: N
- Alter_routine_priv: N
- Create_user_priv: N
- Event_priv: N
- Trigger_priv: N
- Create_tablespace_priv: N
- ssl_type:
- ssl_cipher: 0x
- x509_issuer: 0x
- x509_subject: 0x
- max_questions: 20
- max_updates: 10
- max_connections: 5
- max_user_connections: 2
- plugin: mysql_native_password
- authentication_string: *63DAA25989C7E01EB96570FA4DBE154711BEB361
- password_expired: N
- password_last_changed: 2022-06-13 10:46:16
- password_lifetime: NULL
- account_locked: N
- Create_role_priv: N
- Drop_role_priv: N
- Password_reuse_history: NULL
- Password_reuse_time: NULL
- Password_require_current: NULL
- User_attributes: NULL
- 1 row in set (0.01 sec)
4.附上官方给的两种修改max_user_connections方式
- 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;
- mysql> ALTER USER 'francis'@'localhost' WITH MAX_QUERIES_PER_HOUR 100;
- 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使用区别的更多相关文章
- mysql 的max_connections和max_user_connections 的区别
----查看max_user_connections 默认值 MySQL> show variables like 'max_user_connections'; +-------------- ...
- 用count(*)还是count(列名) || Mysql中的count()与sum()区别
Mysql中的count()与sum()区别 首先创建个表说明问题 CREATE TABLE `result` ( `name` varchar(20) default NULL, `su ...
- (转)MySQL中In与Exists的区别
背景:总结mysql相关的知识点. 如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件. select * from user where exists s ...
- MySQL中interactive_timeout和wait_timeout的区别【转】
在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: ERROR 2013 (HY000): Lost connection to MySQL s ...
- Mysql中函数和存储过程的区别
Mysql中函数和存储过程的区别 存储过程: 1. 可以写sql语句 2. inout,out构造返回值 3. 调用:call:存储过程名称 4. 可以 ...
- mysql中in和exist的区别
mysql中in和exists的区别 -- in写法select * from A where A.id in (select bid from B ) and A.name in (select ...
- MySQL中 utf8与utf8mb4的区别
MySQL中 utf8与utf8mb4的区别 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在 ...
- MySQL 中NULL和空值的区别
平时我们在使用MySQL的时候,对于MySQL中的NULL值和空值区别不能很好的理解.注意到NULL值是未知的,且占用空间,不走索引,DBA建议建表的时候最好设置字段是NOT NULL 来避免这种低效 ...
- mysql中char与varchar的区别分析(补充一句,int和integer没区别)
转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...
随机推荐
- JdGrid排序问题
JdGrid排序问题 js代码 function gridList() { var $gridList = $("#gridList"); $gridList.dataGrid({ ...
- 99-oracle-asmdevices.rules(udev方式创建asm磁盘)
一.创建asm磁盘的几种方式 创建asm方式很多主要有以下几种 1.Faking方式 2.裸设备方式 3.udev方式(它下面有两种方式) 3.1 uuid方式. 3.2 raw方式(裸设备方式) 4 ...
- python中faker模块的使用
Faker 安装 pip install Faker 基本使用 from faker import Faker #创建对象,默认生成的数据为为英文,使用zh_CN指定为中文 fake = Faker( ...
- Python 报错 ValueError list.remove(x) x not in list 解决办法
平时开发 Python 代码过程中,经常会遇到这个报错: ValueError: list.remove(x): x not in list 错误提示信息也很明确,就是移除的元素不在列表之中. 比如: ...
- java第十二周作业
1.定义一个点类Point, 包含2个成员变量x.y分别表示x和y坐标,2个构造器Point()和Point( intx0,y0),以及一个movePoint (int dx,intdy)方法实现点的 ...
- 原生实现C#和Lua相互调用-Unity3D可用
引言 本篇简单介绍如何在C#中执行Lua脚本,传递数据到Lua中使用,以及Lua中调用C#导出的方法等.在Unity中开发测试,并打IL2CPP的Android包在模拟器上运行通过.Lua版本 ...
- 『现学现忘』Git基础 — 10、配置Git用户签名说明
目录 1.为什么要创建用户签名 2.为什么要在Git中配置这些信息 3.创建用户签名的方式 4.总结 1.为什么要创建用户签名 作为版本控制系统的客户端,每台客户机对版本库的所有提交操作,都需要注明操 ...
- VulnHub-Earth 打靶记录
目录 VulnHub-Earth 打靶记录 知识点 目标探测 信息收集 Shell反弹&信息二次收集 提权 权限维持 VulnHub-Earth 打靶记录 搭建靶场的时候一定要使用NATser ...
- .NET Core企业微信网页授权登录
1.开发前准备 参数获取 corpid 每个企业都拥有唯一的corpid,获取此信息可在管理后台"我的企业"-"企业信息"下查看"企业ID" ...
- InnoDB数据存储结构
MySQL服务器上 存储引擎 负责对表中数据的读取和写入工作,不同存储引擎中 存放的格式 一般是不同的,甚至有的存储引擎(Memory)不用磁盘来存储数据. 页 (Page) 是磁盘和内存之间交互的基 ...