如何在 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 实例?

我可以在单个 Amazon RDS 实例上创建多少个数据库

如何通过 SSL 上的 PHP 连接到 Amazon MySQL RDS 实例

如何水平扩展 Amazon RDS 实例?