43

我收到以下错误

ERROR 2013 (HY000): Lost connection to MySQL server at 
'reading authorization packet', system error: 0

尝试连接到我的 MySQL 服务器时。

我在做什么:

  • 我在 MySQL 中有主从复制,它正在工作,只是使用 F5 添加了负载平衡功能。
  • 我已经根据他们的站点配置了 F5。

但是当我尝试使用 F5 配置的 IP 连接到我的 MySQL 服务器时,我得到

ERROR 2013 (HY000): Lost connection to MySQL server at 
'reading authorization packet', system error: 0 

有任何想法吗?


我的进度更新:
- 我遇到了同样的错误,我在 /var/log/secure 中没有任何条目,就好像有人会尝试从我创建负载平衡服务器的 ip 进行身份验证一样。
mysql 错误日志中没有条目。
命令 - 不返回任何内容

mysql> SHOW GLOBAL STATUS LIKE 'Aborted_connections';
Empty set (0.00 sec)

我已经更改了我的my.cnf文件并添加了

[mysqld]
skip-name-resolve

将其connect_timeout更改为 10。
因此,我在 F5 上创建的服务器似乎没有得到任何响应,
我终于说服 F5 管理员将 F5 服务器的日志传递给我,并且我已经提取了我需要的所有内容。
这是输出:

  Jan 28 15:46:39 tmm debug tmm[6459]: Rule /Common/iRule-f5_mysql_proxy <CLIENT_ACCEPTED>: BIG-IP MySQL Proxy -- clientside initial connection
Jan 28 15:46:39 tmm debug tmm[6459]: Rule /Common/iRule-f5_mysql_proxy <CLIENT_ACCEPTED>: BIG-IP MySQL Proxy -- clientside responding with server WELCOME packet
Jan 28 15:46:39 tmm debug tmm[6459]: Rule /Common/iRule-f5_mysql_proxy <CLIENT_DATA>: BIG-IP MySQL Proxy -- clientside authenticated flag not set
Jan 28 15:46:39 tmm err tmm[6459]: Rule /Common/iRule-f5_mysql_proxy <CLIENT_DATA>: BIG-IP MySQL Proxy -- mysql client: attempting to do something before authentication
Jan 28 15:46:39 tmm debug tmm[6459]: Rule /Common/iRule-f5_mysql_proxy <LB_SELECTED>: BIG-IP MySQL Proxy -- serverside selected pool /Common/foss-mysql-slave_pool node SLAVE-IP
Jan 28 15:46:39 tmm debug tmm[6459]: Rule /Common/iRule-f5_mysql_proxy <CLIENT_CLOSED>: BIG-IP MySQL Proxy -- clientside connection closed from MASTER-IP(XXXXXXX)
Jan 28 15:46:39 tmm debug tmm[6459]: Rule /Common/iRule-f5_mysql_proxy <SERVER_CLOSED>: BIG-IP MySQL Proxy -- serverside connection closed from node SLAVE-IP(XXXXXXXX)

为了安全起见,我已经更换了IP!

就像一个额外的- 我认为这是问题所在 - 我的 mysql 版本是5.1.69-log Thx All

4

13 回答 13

24

从文档

更罕见的是,当客户端尝试与服务器建立初始连接时,可能会发生这种情况。在这种情况下,如果您的 connect_timeout 值仅设置为几秒钟,您可以通过将其增加到 10 秒来解决问题,如果您的距离很长或连接速度较慢,可能会更长。您可以通过使用 SHOW STATUS LIKE 'aborted_connections' 来确定您是否遇到这种更不常见的原因。对于服务器中止的每次初始连接尝试,它将增加一。您可能会在错误消息中看到“读取授权数据包”;如果是这样,那也表明这是您需要的解决方案。

尝试在my.cnf文件中增加connect_timeout

另一种风格:

MySQL:在“读取初始通信数据包”时失去与 MySQL 服务器的连接

  1. 在某些时候,远程客户端不可能连接到 MySQL 服务器。

  2. 客户端(Windows 平台上的某些应用程序)给出了一个模糊的描述,例如Connection unexpectedly terminated.

  3. 使用 MySQL 客户端远程登录时出现以下错误:

    ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

在 FreeBSD 上会发生这种情况,因为在“在修复此问题/etc/hosts.allow.之前添加以下行”中未找到匹配项:ALL:ALL

mysqld: ALL: allow

在非 FreeBSD Unix 系统上,检查文件是值得的/etc/hosts.allow/etc/hosts.deny.如果您限制连接,请确保此行位于/etc/hosts.allow

mysqld: ALL

或检查主机是否列在/etc/hosts.deny.

在 Arch Linux 中,可以将类似的行添加到/etc/hosts.allow

mysqld: ALL
于 2014-03-18T11:15:37.297 回答
10

这通常是由中止的连接引起的。您可以通过检查状态来验证这一点:

mysql> SHOW GLOBAL STATUS LIKE 'Aborted_connects';

如果此计数器随着您丢失连接而不断增加,则表明您在连接过程中遇到了问题。

在许多情况下似乎有效的一种补救措施是增加超时。建议值为 10 秒:

mysql> SET GLOBAL connect_timeout = 10;

连接超时的另一个常见原因是在验证客户端时需要进行反向 DNS 查找。建议使用 my.cnf 中的 config 变量运行 MySQL:

[mysqld]
skip-name-resolve

这意味着您的 GRANT 语句需要基于 IP 地址而不是主机名。


我还在 f5.com 网站上找到了 2012 年的这份报告(现在受登录保护,但我是通过 Google 缓存获得的)

除非您运行 BIG-IP 11.1 和 MySQL 5.1(我测试过的版本),否则代理很可能无法工作。MySQL 协议有变化的习惯。

我建议您联系F5 支持并确认您使用的是受支持的版本组合。

于 2014-03-11T21:03:45.800 回答
5

我为这个错误做了很多努力。尝试了我在互联网上找到的每一个答案。

最后,我将电脑连接到手机的热点,一切正常。我发现我公司的互联网阻止了与 MySQL 的连接。

这不是一个完整的解决方案,但也许有人面临同样的问题。值得检查连接。

于 2017-08-24T22:18:09.767 回答
4

我通过多次停止 mysql 解决了这个问题。

$ mysql.server stop
Shutting down MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/xxx.local.pid).
$ mysql.server stop
Shutting down MySQL
.. SUCCESS! 
$ mysql.server stop
ERROR! MySQL server PID file could not be found! (note: this is good)
$ mysql.server start

一切从这里开始。我怀疑mysql已经启动了不止一次。

于 2017-11-28T02:22:10.417 回答
3

我的情况是服务器不接受来自该 IP 的连接。该服务器是来自 Google Apps Engine 的 SQL 服务器,您必须配置可以连接到服务器的允许远程主机。

将(新)主机添加到 GAE 管理页面解决了该问题。

于 2014-09-14T21:36:44.843 回答
3

我有一个 mac,但会假设这部分的所有 linux 都是相同的......

就我而言,我得到了这个:

2018-12-03 11:13:27 - Start server: 
2018-12-03 11:13:27 - Server start done.
2018-12-03 11:13:27 - Checking server status...
2018-12-03 11:13:27 - Trying to connect to MySQL...
2018-12-03 11:13:27 - Lost connection to MySQL server at 'reading authorization packet', system error: 0 (2013)
2018-12-03 11:13:27 - Assuming server is not running

我跑了这个:

sudo killall mysqld

然后通过 mysqlworkbench 再次启动 mysql,尽管在你的情况下它可能是这样的:

mysql.server start

*旁注:我尝试运行mysql.server stop并得到了这个Shutting down MySQL .... SUCCESS!,但运行后ps aux | grep mysql我发现它并没有真正关闭......

于 2018-12-03T16:24:45.817 回答
2

我在 localhost 中使用了几个 mysql 连接(连接到不同的数据库集)。

在我关闭计算机并且 mysql 未正确关闭后,这发生在我身上。启动我的机器后,我能够成功连接到多个数据库连接,除了一个(我在机器关闭之前经常使用它)。根据这篇文章中的说明,我将 connect_timeout 加倍,但我无法连接到那个数据库连接。

我重新启动了机器,现在可以成功连接。这将帮助您解除封锁,但如果可以在不重新启动机器的情况下修复它,那就太好了。

另一个问题是:在我看来,connection_timeout 似乎与延迟相关的问题,但当等式中没有网络时,我立即在 localhost 中收到错误。

于 2017-05-18T18:52:29.017 回答
2

就我而言,它发生在与 MySQL 服务器的大量连接(15,000 个连接)并且可用内存约为 120M 时。在我向服务器添加更多内存后,错误消失了。

于 2017-10-11T20:00:08.487 回答
2

我为这个错误挠了 3 天。我尝试调整数据库的权限,来自用户表中不同 IP 的新用户,以多种不同方式调整绑定地址,将我的 my.cnf 文件与已知的工作服务器进行比较,防火墙更改,上游防火墙更改,主机.allow/deny ...他们都没有工作。

然后我看的不是 mysql/error.log (它是空的),而是我的 journalctl -xe 日志,并且看不到,它无法读取我的 /etc/hosts.allow 和我的 /etc/hosts.deny 文件。

chmod 644 hosts.allow chmod 644 hosts.deny。

现在一切都好起来了。

于 2021-03-08T18:05:43.960 回答
1

另一种可能性是从 TCP 包装器(/etc/hosts.deny 和 /etc/hosts.allow)重置连接。只需检查从 telnet 到端口 3306 的内容 - 如果什么都没有,那么中间有什么东西阻止了通信的发生。

于 2014-06-11T08:26:58.707 回答
1

我创建了我的帐户只是为了将这一点信息添加到这个旧问题中,因为在网络上我没有找到任何关于我最终找到的问题原因的参考。

(在此处添加它是因为这是 Google 搜索结果的最高结果,在将 PHP 添加为搜索词时也是如此)

在 PHP 7.4 中,当您 fork 一个具有活动 MySQL 连接的进程(我知道,这是谁做的??)时,连接将变得混乱并吐出 OP 的错误。只需在分叉后在每个分叉进程中重新初始化/重新创建连接,这将解决它。

希望这对任何人都有帮助。

于 2021-12-28T09:36:20.837 回答
0

我得到了两个错误:主要reading initial communication packet reading authorization packet一次。这似乎是随机的,但有时我能够在重新启动后建立连接,但一段时间后错误又回来了。

在客户端中避免使用 5GHz WiFi 似乎已经解决了这个问题。这对我有用(服务器始终连接到 2.4GHz)。

我尝试了从服务器版本、odbc 连接器版本、防火墙设置、安装一些 Windows 更新(然后卸载它们)、这里发布的一些答案等所有内容......今天失去了我的整个睡眠时间。超级累的一天等着我。

于 2019-11-08T10:13:08.683 回答
-1

如果您在使用 DevDesktop 时遇到此问题 - 只需重新启动 DevDesktop!

于 2019-06-20T14:27:52.533 回答