MySQL连接报错-->Host 'X.X.X.X' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
MySQL连接报错-->Host 'X.X.X.X' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
错误信息
fail: Microsoft.EntityFrameworkCore.Database.Connection[20004]
An error occurred using the connection to database 'TestDb' on server 'X.X.X.X'.
fail: Microsoft.EntityFrameworkCore.Update[10000]
An exception occurred in the database while saving changes for context type 'Test.API.Infrastructure.TestContext'.
MySql.Data.MySqlClient.MySqlException (0x80004005): Host 'X.X.X.X' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.Open()
Host 'X.X.X.X' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
该错误的其它扩展信息
错误说明
意味着某一客户端尝试连接此MySQL服务器,
但是失败次数大于配置允许失败的次数,
则MySQL会无条件强制阻止此客户端连接
功能与作用
一般来说建议数据库服务器不监听来自网络的连接,
仅仅通过sock连接,这样可以防止绝大多数针对mysql的攻击;
如果必须要开启mysql的网络连接,则最好设置此值,以防止穷举密码的攻击手段.
如何进入MySQL
关键命令-->mysql -u root -p
[root@iZ2ze77grk2a8yrd97ft1uZ ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
//经验+1
我刚开始直接使用的是Linux服务器的用户名.{root}和密码.
其实应该使用MySQL数据库的用户名.{MySQL_Uid}和MySQL数据库的密码.
成功进入的一个提示↓
[root@iZ2ze77grk2a8yrd97ft1uZ ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 27624
Server version: 5.7.33 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
解决方案-->1(治标不治本)(重启服务参数会再次重置为默认值)
连接数量-->查看
mysql> show global variables like '%max_connect_errors%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| max_connect_errors | 100 |
+--------------------+-------+
1 row in set (0.00 sec)
连接数量-->修改
mysql> set global max_connect_errors=150;
Query OK, 0 rows affected (0.00 sec)
由于我在测试环境中,所以我采用的是该方法
解决方案-->2(重启服务参数会再次重置为默认值)
修改配置文件,这样每次服务重启,不用每次使用命令再次执行修改参数了
vim /etc/my.cnf
在节点.{mysqld}下修改参数
[mysqld]
max_connect_errors = 1000
解决方案-->3(重置最大错误连接数)
#MySQL版本5.6.5及以前默认值为 10
#MySQL版本5.6.6及以后默认值为 100
flush hosts;
#执行完flush hosts查询
select *from performance_schema.host_cache limit 1 \G;
*************************** 1. row ***************************
IP: X.X.X.X
HOST: NULL
HOST_VALIDATED: YES
SUM_CONNECT_ERRORS: 0
COUNT_HOST_BLOCKED_ERRORS: 0
COUNT_NAMEINFO_TRANSIENT_ERRORS: 0
COUNT_NAMEINFO_PERMANENT_ERRORS: 1
COUNT_FORMAT_ERRORS: 0
COUNT_ADDRINFO_TRANSIENT_ERRORS: 0
COUNT_ADDRINFO_PERMANENT_ERRORS: 0
COUNT_FCRDNS_ERRORS: 0
COUNT_HOST_ACL_ERRORS: 0
COUNT_NO_AUTH_PLUGIN_ERRORS: 0
COUNT_AUTH_PLUGIN_ERRORS: 0
COUNT_HANDSHAKE_ERRORS: 0
COUNT_PROXY_USER_ERRORS: 0
COUNT_PROXY_USER_ACL_ERRORS: 0
COUNT_AUTHENTICATION_ERRORS: 0
COUNT_SSL_ERRORS: 0
COUNT_MAX_USER_CONNECTIONS_ERRORS: 0
COUNT_MAX_USER_CONNECTIONS_PER_HOUR_ERRORS: 0
COUNT_DEFAULT_DATABASE_ERRORS: 0
COUNT_INIT_CONNECT_ERRORS: 0
COUNT_LOCAL_ERRORS: 0
COUNT_UNKNOWN_ERRORS: 0
其它
#为了避免数据太多,我们只需要查看第一条数据就行了
select *from performance_schema.host_cache limit 1 \G;
#或者这样写↓
use performance_schema;
select * from host_cache limit 1 \G;
#输出...
*************************** 1. row ***************************
IP: X.X.X.X
HOST: NULL
HOST_VALIDATED: YES
SUM_CONNECT_ERRORS: 193
COUNT_HOST_BLOCKED_ERRORS: 2973
COUNT_NAMEINFO_TRANSIENT_ERRORS: 0
COUNT_NAMEINFO_PERMANENT_ERRORS: 1
COUNT_FORMAT_ERRORS: 0
COUNT_ADDRINFO_TRANSIENT_ERRORS: 0
COUNT_ADDRINFO_PERMANENT_ERRORS: 0
COUNT_FCRDNS_ERRORS: 0
COUNT_HOST_ACL_ERRORS: 0
COUNT_NO_AUTH_PLUGIN_ERRORS: 0
COUNT_AUTH_PLUGIN_ERRORS: 0
COUNT_HANDSHAKE_ERRORS: 195
摘抄文档
作者:linux快速入门培训
链接:https://www.imooc.com/article/44354
来源:慕课网
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2019-04-14 dynamic 类型不能访问属性