【问题标题】:Could not connect: Lost connection to MySQL server at 'reading initial communication packet', system error: 0无法连接:在“读取初始通信数据包”时丢失与 MySQL 服务器的连接,系统错误:0
【发布时间】:2010-11-01 00:10:41
【问题描述】:

我正在运行一个 Rails 应用程序,所以现在我正在尝试远程连接到 MySQL,但我收到了这个错误:

无法连接:在“读取初始通信数据包”时丢失与 MySQL 服务器的连接,系统错误:0

【问题讨论】:

  • 我在使用parallel_tests gem 时偶尔会遇到这个问题,我可以通过在我的my.cnf 文件中增加max_connectionsmax_connect_errors 的值来减少/修复它。说它已经解决还为时过早,但我们会看到......

标签: mysql ruby database-connection


【解决方案1】:
mysqld-max: ALL : ALLOW 

为我解决了问题。

【讨论】:

    【解决方案2】:

    启用远程访问。

    MySQL 服务器默认不监听 TCP 端口 3306。要允许(远程)TCP 连接,请在/etc/mysql/my.cnf 中注释以下行:

    skip-networking
    

    记得通过添加以下行来编辑/etc/hosts.allow

    mysqld: ALL : ALLOW
    
    mysqld-max: ALL : ALLOW
    

    【讨论】:

    • 截至 2018 年 3 月 25 日在 Mac OS Sierra 10.12.16 上:我的文件 my.cnf,不在此处的位置(我 认为它在 @ 987654326@),不包含skip-networking这一行
    • 2018-03-25:GHOST:虽然创建一个``` /etc/hosts.allow``` 最初似乎对我有用,然后症状又回来了。 (使用 Capybara poltergeist phantomjs v 2.1.1 运行 Mac OS 10.12.6 的 Rails 4.2.5)
    【解决方案3】:

    操作系统:macOS

    MySQL 版本:5.7

    杀死当前mysql服务进程

    mysql.server stop
    

    然后重新开始

    mysql.server start
    

    这为我解决了问题。

    【讨论】:

      【解决方案4】:

      使用 OS X? mysqld重启后这个问题会消失一段时间然后重新出现吗?收到这些错误时检查 mysql 服务器日志。我看到一堆如下条目:

      2019-01-30T17:34:04.009979Z 0 [Warning] File Descriptor 1564 exceeded FD_SETSIZE=1024
      

      此错误指向潜在的解决方案: https://expressionengine.com/blog/mysql-5.7-server-os-x-has-gone-awayhttps://wilsonmar.github.io/maximum-limits/

      其中一个正在向 my.cnf 添加以下设置

      [mysqld]
      table_open_cache=250
      

      【讨论】:

      【解决方案5】:

      众所周知,除了我们都运行不同的操作系统(linux、osx、win$hit 等)之外,还有许多不同的方法可以在我们的机器上安装和配置 mySQL dbms(数据库管理系统)

      尤其是我的情况

      connect': Lost connection to MySQL server at 'reading initial communication packet', system error: 102 (Mysql2::Error)

      但是我什至没有 /etc/hosts.deny 我只有 /etc/hosts 因为我使用简单的 GUI OSX 应用程序在我的 OSX 机器上安装了 mySQL

      MySQL 实例状态为 NOT OK 以上图片仅供 MySQL OSX APP 参考。

      简单的服务器重启解决了这个问题。(在我的情况下,我必须重启我的机器,但这涉及重启 MySQL 服务器)

      我终于可以再次访问我的本地主机实例,无需更改,创建单个文件。

      希望这会有所帮助,我看到 Malcolm 的回答和 cmets 并让我觉得发布这个很好。

      【讨论】:

        【解决方案6】:

        似乎没有人回答这个问题,而且它似乎在最初提交近 7 年后再次成为一个问题。我在运行 Capybara(使用 phantomjs)的 Rails 应用程序上看到了这一点,我的集成规范(仅)会因此间歇性地失败。

        重启机器暂时解决了这个问题。

        然后我将我的 MySQL 安装完全内爆(请参阅 https://community.jaspersoft.com/wiki/uninstall-mysql-mac-os-x)并使用自制软件重新安装它。问题似乎已经消失,但如果它再次出现,我会更新此答案。

        彻底破坏您的 MySQL 安装(来自 https://community.jaspersoft.com/wiki/uninstall-mysql-mac-os-x):

        打开终端窗口 使用 mysqldump 将数据库备份到文本文件! 停止数据库服务器

        sudo rm /usr/local/mysql
        sudo rm -rf /usr/local/mysql*
        sudo rm -rf /Library/StartupItems/MySQLCOM
        sudo rm -rf /Library/PreferencePanes/My*
        

        编辑 /etc/hostconfig 并删除行 MYSQLCOM=-YES-

        rm -rf ~/Library/PreferencePanes/My*
        sudo rm -rf /Library/Receipts/mysql*
        sudo rm -rf /Library/Receipts/MySQL*
        sudo rm -rf /private/var/db/receipts/*mysql*
        

        【讨论】:

          【解决方案7】:

          重新启动服务器对我有用。无需更改设置。

          【讨论】:

          • 重启 MySQL 对我有用。不知道为什么这需要如此反对。
          • 我同意你的看法,因为我注意到了一些赞成票以及积极的 cmets,当然在我的情况下,我所要做的就是重新启动 mysqlserver
          • 我赞成答案和评论,因为这对我来说实际上是一个修复
          • 我注意到重新启动确实可以暂时修复症状,但它会再次出现。
          • 赞成,因为这是一个快速修复,但它肯定不能解决根本原因。
          【解决方案8】:

          您需要编辑您的mysql配置文件,默认情况下bind-adress设置为127.0.0.1

          打开:/etc/mysql/my.cnf

          bind-adress 更改为您将用于将自己连接到数据库服务器的 ip。

          【讨论】:

          • same here..没有解决..通常如果我重新启动服务器,它会备份并再次工作。检查/etc/hosts.deny,尝试127.0.0.1localhostliveserver-ip...
          【解决方案9】:

          您可能需要检查您的 /etc/hosts.deny 其中:

          ALL: ALL: DENY
          

          mysqld: ALL: DENY
          

          是你的敌人。

          【讨论】:

          • 这解决了它。是修复 my.cnf 并转发 3306 后的最后一道屏障。
          • 将此添加到您的 /etc/hosts.allow 以解决问题:mysqld: ALL 您可能只允许来自某些网络的客户端,例如:mysqld: 192.168.1.0/255.255.255.0
          • 天哪,你救了我。
          • 不幸的是,我在这个位置没有这样的文件。 $ cat /etc/hosts.denycat: /etc/hosts.deny: No such file or directory;我在 Mac OS Sierra 10.12.6
          • 窗口中的 /etc/hosts.deny 文件在哪里?
          【解决方案10】:

          谢谢你们的努力,我找到了解决方案,我想设置远程连接到 MySQL 这里是遇到同样错误的人的链接 http://benrobb.com/2007/01/15/howto-remote-root-access-to-mysql/

          【讨论】:

          • 堆栈溢出策略不鼓励通过链接回答;所有答案都是第一方答案
          【解决方案11】:

          从该主机检查

          shell> telnet IP 3306
          

          如果 MySQL 已启动且可访问,您将在 telnet 输出中看到 mysql 版本。 否则检查防火墙等,直到 telnet 成功。

          然后我建议你先连接本地 mysql 客户端,将 Rails 从问题 aria 中排除。

          【讨论】:

          • 你应该输入真实的IP地址而不是单词“IP”。在我的情况下,我得到了一个版本,当我想从同一台机器登录时,它可以正常工作,但是当我想从外部(比如从其他机器)登录时,我会得到上面帖子中所述的异常。
          猜你喜欢
          • 2021-05-07
          • 2011-04-04
          • 2022-01-16
          • 2011-08-10
          • 2015-03-17
          • 2013-11-08
          相关资源
          最近更新 更多