我正在运行一个 Rails 应用程序,所以现在我正在尝试远程连接到 MySQL,但我收到了这个错误:
无法连接:在“读取初始通信数据包”时丢失与 MySQL 服务器的连接,系统错误:0
我正在运行一个 Rails 应用程序,所以现在我正在尝试远程连接到 MySQL,但我收到了这个错误:
无法连接:在“读取初始通信数据包”时丢失与 MySQL 服务器的连接,系统错误:0
您可能想检查您的/etc/hosts.deny在哪里:
ALL: ALL: DENY
或者
mysqld: ALL: DENY
是你的敌人。
重新启动服务器对我有用。无需更改设置。
启用远程访问。
MySQL 服务器默认不监听 TCP 端口 3306。要允许(远程)TCP 连接,请注释以下行/etc/mysql/my.cnf
:
skip-networking
请记住/etc/hosts.allow
通过添加以下行进行编辑:
mysqld: ALL : ALLOW
mysqld-max: ALL : ALLOW
从该主机检查
shell> telnet IP 3306
如果 MySQL 已启动且可访问,您将在 telnet 输出中看到 mysql 版本。否则检查防火墙等,直到 telnet 成功。
然后我建议您首先连接本机 mysql 客户端以从问题 aria 中排除 Rails。
您需要编辑您的 mysql 配置文件,默认情况下bind-adress
设置为127.0.0.1
.
打开:/etc/mysql/my.cnf
将 更改为bind-adress
您将用于将自己连接到数据库服务器的 ip。
使用 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-away https://wilsonmar.github.io/maximum-limits/
其中之一是将以下设置添加到 my.cnf
[mysqld]
table_open_cache=250
mysqld-max: ALL : ALLOW
为我解决了这个问题。
众所周知,除了我们都运行不同的操作系统(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 实例状态不正常上图仅供 MySQL OSX APP 参考。
简单的服务器重新启动解决了这个问题。(在我的情况下必须重新启动我的机器,但这涉及重新启动 MySQL 服务器)
我终于能够再次很好地访问我的本地主机实例,无需更改,创建单个文件。
希望这会有所帮助,我看到Malcolm的回答和评论,让我觉得发布这个很好。
操作系统:macOS
MySQL版本:5.7
杀死当前的mysql服务进程
mysql.server stop
并再次开始
mysql.server start
这为我解决了这个问题。
似乎没有人回答这个问题,而且它似乎在最初提交近 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*
谢谢你们的努力,我找到了解决方案,我想设置远程连接到 MySQL 这里是有同样错误的人的链接 http://benrobb.com/2007/01/15/howto-remote-根访问到 mysql/