AWS RDS报1129 IP被拦截错误,Python脚本无法执行查询如何解决
问题原因
这个报错是因为你运行Python脚本的服务器IP触发了RDS MySQL的max_connect_errors阈值:短时间内该IP发起了超过阈值的失败连接请求,MySQL自动封禁了该IP的连接权限,所以Python的请求被拒,MySQL Workbench所在的IP没被封所以能正常连接。
解决步骤
第一步:解除当前IP封禁
你找不到mysqladmin命令是因为运行命令的设备没有安装MySQL客户端工具,而且AWS RDS是托管服务,不允许直接在RDS实例上执行系统命令,正确操作如下:
- 用可以正常连接RDS的MySQL Workbench登录到RDS实例,执行SQL命令:
FLUSH HOSTS;
执行完成后IP封禁会立刻解除。
第二步:排查Python脚本连接失败的根本原因,避免再次触发封禁
- 检查Python脚本里的RDS连接配置:确认用户名、密码、端口、数据库名是否完全正确,绝大多数场景都是配置写错导致反复失败连接触发封禁
- 检查运行Python脚本的服务器的安全组/出站规则,确认放行了到RDS实例3306端口的访问权限
- 检查Python脚本的连接逻辑:确认连接使用完成后有没有正确关闭连接,有没有短时间高频发起连接请求的逻辑,必要的话给连接逻辑加失败重试的间隔限制,避免短时间产生大量失败请求
可选:调整RDS的max_connect_errors阈值(不推荐随意调高,仅临时测试用)
如果需要临时降低触发封禁的敏感度,可以在RDS的参数组里修改max_connect_errors参数的值,调大后提交参数组变更,重启RDS实例即可生效。
内容的提问来源于stack exchange,提问作者user16592163
相关产品推荐
相关产品推荐

