连接RDS MySQL时报错has more than 'max_user_connections'或has exceeded the 'max_user_connections'

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洞察和审计功能计费详情

开启步骤
  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中,选择自治服务 > SQL洞察和审计

  3. 开通SQL洞察和审计。

会话管理

使用会话管理功能,可直观地查看实例当前的全部会话、活跃会话和异常会话,并展示实例被访问的用户、主机、执行时间和状态等。详情请参见会话管理

开启步骤
  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中,选择自治服务>一键诊断

  3. 单击一键诊断页签。

  4. 一键诊断页面,选择会话管理,可查看当前实例会话的用户、主机、执行时间和状态等。

通过SQL命令查看

说明

数据库连接已满,无法支持新会话连接,导致SQL不能执行。如有历史保留的DMS会话,可执行SQL查看。

用户可以通过ECS访问数据库或登录DMS去操作数据库,执行以下SQL命令查看当前执行慢的线程,针对比较慢的线程进行处理。更多信息请参见:

SHOW PROCESSLIST;

返回结果Host列为访问来源的IP地址。

image

解决方案

  1. 查看数据库实例会话连接详情。

    1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

    2. 在左侧导航栏中,选择自治服务(原CloudDBA) > 一键诊断

    3. 单击会话管理,在会话管理页签查看数据库实例的会话连接详情。详细内容请参见实例会话

  2. 查看数据库实例的max_user_connections配置。

    您可以通过以下两种方式查看max_user_connections参数值:

    • 在RDS控制台查看:

      1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

      2. 在左侧导航栏中,单击参数设置

      3. 可修改参数页签中查看max_user_connections参数值。

    • 登录RDS MySQL数据库,执行如下命令查看max_user_connections的参数值。

      show variables like 'max_user_connections';

  3. 在确认内存资源充足的情况下,将max_user_connections的参数值修改为更大的值。详情请参见修改最大连接数

  4. 如果上述方法不能解决问题,您还可以尝试以下方法: