max_user_connections是指用户最大连接数。如果出现has more than 'max_user_connections' active connections或User 'xxx' has exceeded the 'max_user_connections' resource等有关用户最大连接数已满的报错,您可以参照本文进行操作,解决报错问题。
问题现象
通过DMS控制台或者数据库客户端无法连接RDS MySQL数据库,且提示“max_user_connections”相关错误信息。
问题原因
RDS MySQL数据库的连接数已满,导致不能正常连接。
获取访问来源
控制台功能查看
SQL洞察和审计
开启SQL洞察和审计功能后会自动记录来自数据库内核的SQL语句,以及SQL语句的执行账号、IP地址、执行详情等信息,对实例性能没有影响。详情请参见SQL洞察和审计。
SQL洞察和审计功能为收费功能,计费详情请参见SQL洞察和审计功能计费详情。
开启步骤
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中,选择 。
开通SQL洞察和审计。
会话管理
使用会话管理功能,可直观地查看实例当前的全部会话、活跃会话和异常会话,并展示实例被访问的用户、主机、执行时间和状态等。详情请参见会话管理。
开启步骤
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中,选择自治服务>一键诊断。
单击一键诊断页签。
在一键诊断页面,选择会话管理,可查看当前实例会话的用户、主机、执行时间和状态等。
通过SQL命令查看
数据库连接已满,无法支持新会话连接,导致SQL不能执行。如有历史保留的DMS会话,可执行SQL查看。
用户可以通过ECS访问数据库或登录DMS去操作数据库,执行以下SQL命令查看当前执行慢的线程,针对比较慢的线程进行处理。更多信息请参见:
SHOW PROCESSLIST;
返回结果Host列为访问来源的IP地址。
解决方案
查看数据库实例会话连接详情。
查看数据库实例的max_user_connections配置。
您可以通过以下两种方式查看max_user_connections参数值:
在RDS控制台查看:
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中,单击参数设置。
在可修改参数页签中查看max_user_connections参数值。
登录RDS MySQL数据库,执行如下命令查看max_user_connections的参数值。
show variables like 'max_user_connections';
在确认内存资源充足的情况下,将max_user_connections的参数值修改为更大的值。详情请参见修改最大连接数。
如果上述方法不能解决问题,您还可以尝试以下方法:
优化数据库实例的连接问题,详情请参见如何处理RDS MySQL连接数被打满的情况。
重启数据库实例释来放连接,详情请参见重启实例。