在 MySQL 中限制用户并发连接数,可以通过设置用户级别的最大连接数来实现。从 MySQL 5.5.3 版本开始,支持使用 资源控制 功能,通过
CREATE USER或
ALTER USER语句中的
MAX_USER_CONNECTIONS参数来限制某个用户的最大并发连接数量。
1. 创建用户时限制并发连接数
在创建新用户时,直接指定该用户允许的最大并发连接数。示例:创建一个最多允许 5 个并发连接的用户:
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass' MAX_USER_CONNECTIONS 5;
2. 修改已有用户的并发连接限制
对于已经存在的用户,可以使用ALTER USER命令修改其最大连接数。
示例:将用户
myuser@localhost的最大并发连接数改为 3:
ALTER USER 'myuser'@'localhost' MAX_USER_CONNECTIONS 3;
3. 验证连接限制是否生效
你可以通过查询mysql.user表来查看用户的连接限制配置。
执行以下 SQL 查看指定用户的设置:
SELECT User, Host, Max_user_connections FROM mysql.user WHERE User = 'myuser';注意:修改后可能需要刷新权限使更改生效:
FLUSH PRIVILEGES;
4. 实际连接行为说明
当用户达到MAX_USER_CONNECTIONS限制时,后续的连接请求会收到类似如下错误:
ERROR 1226 (42000): User 'myuser' has exceeded the 'max_user_connections' resource limit此时用户无法建立新的连接,直到已有连接断开释放资源。
每个连接独立计数,包括来自同一客户端的不同会话。这个限制是“每用户”的,并不依赖于主机或其他因素(除非在定义用户时指定了不同的 host)。
补充说明
确保全局参数max_user_connections已正确配置(默认值为 0,表示无限制)。
可以在
my.cnf配置文件中设置默认值(可选):
[mysqld] max_user_connections=100但更推荐在用户级别单独设置,以便精细化管理不同应用或用户的资源使用。
基本上就这些。只要用好
MAX_USER_CONNECTIONS,就能有效控制单个用户的并发连接数量,避免数据库被某个用户过度占用资源。
