如何在 Amazon RDS 数据库服务器实例上运行命令“mysqladmin flush-hosts”?
Posted
技术标签:
【中文标题】如何在 Amazon RDS 数据库服务器实例上运行命令“mysqladmin flush-hosts”?【英文标题】:how to run command "mysqladmin flush-hosts" on Amazon RDS database Server instance? 【发布时间】:2011-12-22 07:07:14 【问题描述】:我遇到了数据库服务器故障,说主机由于许多连接错误而被阻止。它要求我使用 'mysqladmin flush-hosts' 解除阻止
我应该如何以及在哪里运行这个命令到我们的 amazon rds 数据库服务器?
谢谢
【问题讨论】:
【参考方案1】:对于普通 MySQL,只需以“root”管理超级用户身份连接,然后发出命令:
FLUSH HOSTS
即使在连接过多的情况下,MySQL 也应该保留一个连接,以便超级用户可以连接。
mysqladmin
客户端通常以 root 身份连接并发出上述 SQL。
【讨论】:
li谢谢,这正是我需要的:一点上下文。 fwiw mysqladmin 也可以与 RDS 一起使用(只要您使用的是有权这样做的用户(即 root)——我不是)。 这是一个很好的答案,但不适用于 AWS。 为什么不呢?不能在 AWS 上运行 FLUSH HOSTS 吗? 这对我来说效果很好,但要考虑到在 RDS 中,管理员用户很少被称为root
。创建实例时,系统会要求您输入帐户名,该帐户是管理员帐户。
除此之外,我还运行了以下命令以确保处理任何损坏:mysqlcheck --auto-repair --all-databases -h HOST -u USER -p
【参考方案2】:
登录到您拥有的可以访问相关 RDS 实例并安装并运行 mysqladmin 的任何其他 EC2 实例
mysqladmin -h <RDS ENDPOINT URL> -P 3306 -u <USER> -p flush-hosts
系统将提示您输入密码
【讨论】:
它不需要来自任何 EC2 实例。它也可以从本地机器完成。 mysql 安装在哪里。 这不适用于从 beanstalk EC2 实例到 RDS mysql 主机。使用 mysqladmin 命令连接到主机会产生错误:mysqladmin: connect to server at 'challengefinder-rds.crstas8123.us-west-1.rds.amazonaws.com' failed error: 'Host 'ip-10-170- 12-12.us-west-1.compute.internal' 因为很多连接错误而被阻塞;使用“mysqladmin flush-hosts”解除阻止 您可以使用另一台计算机 - 只需将您的 IP 地址添加到该 RDS 实例的安全组,然后您就可以从您的工作站使用 mysqladmin。【参考方案3】:当 Amazon RDS 实例因为 max_connect_errors 的值被超过而被阻止时,您不能使用产生连接错误的主机来发出“flush hosts”命令,因为 MySQL 服务器正在运行实例上此时正在阻止来自该主机的连接。
因此,您需要从 另一个 EC2 实例或有权访问该 RDS 实例的远程服务器发出“刷新主机”命令。
mysqladmin -h [YOUR RDS END POINT URL] -P 3306 -u [DB USER] -p flush-hosts
如果这涉及启动新实例或创建/修改安全组以允许外部访问,则只需登录 RDS 用户界面并重新启动被阻止的 RDS 实例可能会更快。
【讨论】:
重启实例对我来说是最简单的。【参考方案4】:我通过从 AWS 管理控制台重新启动 RDS 实例来修复此错误。高温
[编辑:大声笑反对]
【讨论】:
非常感谢。我尝试了上面的解决方案,但由于同样的错误,我也无法使用 mysqladmin 登录!【参考方案5】:在 Amazon RDS 上,FLUSH HOSTS;
可以从默认用户(RDS 信息中的“主用户名”)执行,这很有帮助。
【讨论】:
【参考方案6】:由于主机被阻止。尝试从其他主机连接它并执行 mysqladmin flush-hosts 命令。
mysqladmin -h <RDS ENDPOINT URL> -P <PORT> -u <USER> -p flush-hosts
【讨论】:
【参考方案7】:您必须通过安装了 mysql 的计算机连接您的 RDS 我使用了我的一个托管 VPS 使用 SSH
在我登录我的 VPS 后(我使用 putty)这很简单,在提示符中我输入了以下命令:
mysqladmin -h [YOUR RDS END POINT URL] -P 3306 -u [DB USER] -p flush-hosts
【讨论】:
【参考方案8】:您可以在 RDS Admin 上重新启动数据库。
【讨论】:
【参考方案9】:您可以使用以下命令刷新主机本地 MySQL:
mysqladmin -u [username] -p flush-hosts
**** [MySQL password]
或
mysqladmin flush-hosts -u [username] -p
**** [MySQL password]
虽然 Amazon RDS 数据库服务器在网络上,但请使用以下命令,就像刷新网络 MySQL 服务器一样:
mysqladmin -h <RDS ENDPOINT URL> -P <PORT> -u <USER> -p flush-hosts
mysqladmin -h [YOUR RDS END POINT URL] -P 3306 -u [DB USER] -p flush-hosts
附加建议 您可以通过编辑永久解决阻止许多连接错误问题 my.ini文件[Mysql配置文件]
更改变量 max_connections = 10000;
或
使用命令行登录 MySQL -
mysql -u [username] -p
**** [MySQL password]
将以下命令放入 MySQL 窗口
SET GLOBAL max_connect_errors=10000;
set global max_connections = 200;
使用命令检查真实性-
show variables like "max_connections";
show variables like "max_connect_errors";
【讨论】:
在 RDS 上,无法在本地运行任何命令,因为您无法登录到数据库主机。通过网络也无法正常工作,因为mysqladmin也无法连接,原因相同。 ("error: 'Host 'your.client.ip.address' 由于许多连接错误而被阻止") 您可以重新启动rds服务器(如果需要也可以拍摄快照)然后问题将得到解决。【参考方案10】:今天在客户 rds 上使用 Heidi Sql 客户端时遇到此错误。
我们只是在 ec2 上使用 'mysqlroot' 与相关 rds 对话以进行连接,然后发出 'flush hosts;'命令。
【讨论】:
以上是关于如何在 Amazon RDS 数据库服务器实例上运行命令“mysqladmin flush-hosts”?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 chromebook 访问 Amazon RDS 实例?
Amazon RDS 在 Reader 实例和 Writer 实例之间切换服务器
如何从我的 springboot 应用程序的 Docker 映像连接到 Amazon RDS 实例?