mysql出现unblock with 'mysqladmin flush

朋友发来消息,说一个系统应用登录的时候提示连接超时,让帮忙处理一下。
问他应用和数据库是否都正常,回复说数据库好像没有问题,但是应用日志报无法连接数据库。

数据库版本是:5.5.53

让他telnet数据库是否是通的,回复说不通,并发来了信息提示:

?
1
2
3
4
5
# telnet  8.8.9.9 3306
Trying 8.8.9.9...
Connected to 8.8.9.9.
Escape character is '^]'.
gHost 'kapp' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'Connection closed by foreign host.

可以看出,产生的原因是:

同一个ip在短时间内产生太多(超过mysql数据库max_connect_errors的最大值)中断的数据库连接而导致的阻塞

让他查看以下参数并发来结果:

?
1
2
3
4
5
6
> show variables like 'max_connect_errors';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_connect_errors | 2     |
+--------------------+-------+

  

max_connect_errors是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。
max_connect_errors的值与性能并无太大关系,默认是10,不知道为何改为了2。意味着如果某一客户端尝试连接此MySQL服务器,但是失败(如密码错误等等)2次 ,则MySQL会无条件强制阻止此客户端连接。
如果希望重置此计数器的值,则必须重启MySQL服务器或者执行mysql> flush hosts; 命令。当这一客户端成功连接一次MySQL服务器后,针对此客户端的max_connect_errors会清零。
如果max_connect_errors设置过小,则网页可能提示无法连接数据库服务器。

以下是解决方案,再贴一下吧。

解决方法1:修改max_connect_errors的值
(1)进入Mysql数据库查看max_connect_errors:
> show variables like '%max_connect_errors%';
(2)修改max_connect_errors的值:
> set global max_connect_errors = 100;
(3)查看是否修改成功
> show variables like '%max_connect_errors%';

解决方法2:使用mysqladmin flush-hosts 命令清理一下hosts文件
(1)在查找到的目录下使用命令修改:mysqladmin -u xxx -p flush-hosts
或者
> flush hosts;

解决方法3:重启mysqld
也可以在重启之前,在配置文件中将该参数调大。
# vi /etc/my.cnf
max_connect_errors = 100

(0)

相关推荐

  • 解决报错:错误1130- Host xxx is not allowed to connect to this MariaDb server

    在云服务器上面搭建了MariaDb(MariaDB是MySQL源代码的一个分支),但是远程链接不上. 首先,你要确保服务器安全组3306端口已经开放. 在确保端口开放的情况下,如果出现错误代码1130 ...

  • python学习笔记-MySQL数据库连接相关

    import pymssql #引入pymssql模块 server = "localhost" user = "root" password = " ...

  • MySQL checkpoint机制详解

    MySQL为了保证数据会做很多checkpoint动作.特别是InnoDB采用Write Ahead Log策略来防止宕机导致的数据丢失:即事务提交时,先写重做日志,再修改内存数据页的方式脏数据刷新等 ...

  • Can''''t connect to MySQL server on localhost (10061)解决方法

    首先检查MySQL 服务没有启动>如果没有启动,则要启动这个服务. 有时候安装mysql后使用mysql命令时报错 Can't connect to MySQL server on localh ...

  • MySQL查看最大连接数和修改最大连接数

    MySQL查看最大连接数和修改最大连接数

  • Mysql—mysqladmin 命令详解

    mysqladmin是一个执行管理操作的客户端程序.它可以用来检查服务器的配置和当前状态.创建和删除数据库等. mysqladmin工具的使用格式:mysqladmin [option] comman ...

  • Python+MySQL随机试卷及答案生成程序

    一.背景 本文章主要是分享如何使用Python从MySQL数据库中面抽取试题,生成的试卷每一份都不一样. 二.准备工作 1.安装Python3 下载地址:https://www.python.org/ ...

  • UC头条:MySQL数据库定时备份到其他电脑

    最近我的一个学弟问了我一个问题,说他要实现一个功能,他老师给他提出来一个问题,让他的项目实现定时备份数据库到其他电脑,确保安全.他就来问我,还好我之前弄过,虽然我是干前端的,哈哈哈,之前学的比较杂. ...

  • Docker定时备份MySQL数据到七牛云

    前言:我Linux服务器安装了docker,docker容器跑了springboot项目,用到了mysql数据库.所以必须准备程序,数据备份功能,万一哪天系统挂了,数据丢了,我可以随时恢复.因为没钱开 ...

  • 面试被问MySQL 主从复制,怎么破?

    一.前言 随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作. 此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来,多台数据库分摊请求 ...

  • mysql进阶学习二之搭建主从

    前面说了主从复制的原理,现在我们搭建主从结构 1. 提前准备 我准备了两台主机,主节点是远程的centos7,从节点是本机windows 主从复制的原理在上一篇已经说了:主节点中mysql创建一个用户 ...

  • mysql进阶学习三之mycat读写分离和分库分表

    前面已经配置了mysql的主从复制,其实很容易,主节点写入了数据,从节点进行同步,所以写操作使用主节点,读操作使用从节点,这样就有效降低了数据库的压力 但是我们用java程序不可能去连接多个数据源,执 ...

  • VB远程访问MYSQL代码图解

    首先需要安装MySQL Connector/ODBC 地址:http://dev.mysql.com/downloads/connector/odbc/ 根据自己的系统(运行环境: Win7/XP/W ...

  • (9条消息) CentOS 8 设置 MySQL 8 允许远程访问

    (9条消息) CentOS 8 设置 MySQL 8 允许远程访问