暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL修改用户的连接数限制

运维笔谈 2024-11-04
20
点击上方蓝字”运维笔谈”,对话回复 “阿里云k8s” 可以获取《阿里云Kubernetes项目实战手册》PDF

最近一段时间比较忙,耽搁更新了,本周开始恢复。我们本地办公环境有个分析库是用来同步生产环境过来的数据。我建了一个只读的账号给运营那边查询,我们默认的连接是有限制的,他们需要更多连接数,我一个业余数据库用户,修改MySQL的用户连接数限制还是查了一会儿资料。

在MySQL中,我们是可以通过设置 max_user_connections 变量来限制单个用户可以同时建立的连接数。这个设置可以在全局级别、用户级别或者会话级别进行配置。

1.直接在创建用户的时候指定连接数限制

    #SQL
    CREATE USER 'ops'@'192.168.%' IDENTIFIED BY 'password';
    GRANT USAGE ON *.* TO 'ops'@'192.168.%' WITH MAX_USER_CONNECTIONS 20;
    复制

    MAX_USER_CONNECTIONS 20 表示ops这个用户最多只能有20个并发连接

    2.修改已经创建过的用户

      # SQL
      ALTER USER 'ops_old'@'192.168.%' WITH MAX_USER_CONNECTIONS 20;
      复制

      对于已存在的用户'ops_old'@'192.168.%',我们可以通过 ALTER USER
      语句加上 WITH MAX_USER_CONNECTIONS
      选项来修改其最大连接数。

      3.全局配置

      直接在MySQL的配置文件添加:

        [mysqld]
        max_user_connections = 20
        复制

        不过全局配置的模式会影响到所有的用户,非针对某个具体用户。

        4.配置完成之后,我们查看下用户的连接数限制

        我们可以直接查询mysql.user
        表来查看特定用户的max_user_connections
        值。如下SQL:

          # SQL
          SELECT User, Host, max_user_connections
          FROM mysql.user
          WHERE User = 'username' AND Host = 'host';
          复制

          注意不要过度的满足用户的连接数限制,放开容易影响数据库服务的稳定性的。

          • 每个连接都会占用一定的内存资源。如果连接数过多,可能会耗尽服务器的可用内存,导致系统变得非常缓慢甚至崩溃。

          • 处理大量连接会增加 CPU 的负载,尤其是在执行复杂查询或事务时。


          文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论