docker部署的mysql,报错1040 “Too many connections”,解决方法

注意事项:此方法仅适用于在Linux系统使用docker创建的mysql容器


前言

docker部署的mysql,报错“Too many connections”。在最近的线上环境测试过程中,需要持续监控数据库的数据变动。然而,由于线上的MySQL数据库是通过Docker部署的,因此在本地进行连接时频繁遭遇到“Too many connections”(“连接过多”)的问题。


一、出现连接过多的原因是什么?

使用Docker后,默认将MySQL的连接数设置为151,连接数较小容易报错,我们需要修改连接数的最大值。

二、解决步骤

1.重启mysql容器

无法进入数据库,需要先重启docker创建的mysql容器,再重新创建容器,才可以进行最大连接数的修改。

# 1.停止MySQL容器
docker stop mysql

# 2.启动MySQL容器
docker start mysql

2.在终端中,通过命令进入mysql目录进行修改

#查询运行中的mysql容器信息,一般容器名为mysql
docker ps --format "table {
   
   {.ID}}\t{
   
   {.Image}}\t{
   
   {.Ports}}\t{
   
   {.Status}}\t{
   
   {.Names}}"

#[容器名] 替换为查询到的真实容器名,进入mysql容器
docker exec -it [容器名] /bin/bash

#查看最大连接数
SHOW VARIABLES LIKE '%max_connect%';

#设置最大连接数
SET GLOBAL max_connections = 1000;

#查看最大连接数是否修改成功
SHOW VARIABLES LIKE '%max_connect%';

步骤示例:

输入两次exit退出到root目录下,重写启动mysql容器,下面有mysql容器信息说明容器已经重启。


总结

使用docker创建mysql容器需要修改最大连接数,不然在后续服务频繁查询mysql数据库会频繁遭遇到“Too many connections”(“连接过多”)的问题。