![在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:0(Windows)](https://linux22.com/image/638455/%E5%9C%A8%E2%80%9C%E8%AF%BB%E5%8F%96%E5%88%9D%E5%A7%8B%E9%80%9A%E4%BF%A1%E5%8C%85%E2%80%9D%E6%97%B6%E4%B8%8E%20MySQL%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%B1%E5%8E%BB%E8%BF%9E%E6%8E%A5%EF%BC%8C%E7%B3%BB%E7%BB%9F%E9%94%99%E8%AF%AF%EF%BC%9A0%EF%BC%88Windows%EF%BC%89.png)
我找到了类似的问题,但没有一个能帮我解决 Windows 机器的问题。我最初在 stack overflow 上发布了这个问题,但有人建议我在这里提问。
我能够通过本地计算机连接到 MySQL。但是,我将 MySQL 放在远程计算机上,当我尝试从本地连接到它时,出现以下错误:
在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:0
我使用 SQL Workbench 进行连接。我使用远程计算机的实际名称作为主机名并使用端口 139。我也在远程计算机上将 MySQL 作为服务启动。在谷歌上搜索错误时,我得到很多关于在/etc/hosts.allow
和my.cnf
之类的东西中编辑文件的提示。但是,这些位置是为 Linux 计算机指定的。我的本地计算机和远程计算机都是 Windows 7 计算机,因此没有这些位置。
如能得到有关连接 MySQL 的任何帮助,我们将不胜感激。
答案1
http://www.heidisql.com/forum.php?t=10835
注意:设置 SSH 时,必须在 /etc/ssh/sshd_config 中设置以下选项:
AllowTcpForwarding yes
如果不这样做,您的数据包将在服务器上被悄悄丢弃。这将导致上述错误消息。
答案2
搞清楚了。'root' 指向本地计算机的根目录,而远程计算机上的根用户指向其自身。因此,我将其连接到管理员用户,连接正常,没有任何错误。感谢大家的回复和帮助。
答案3
我的用例:我尝试使用 MySQL Workbench 访问 Synology NAS 上的 MariaDB v10。
决议摘要:
我发现这对用户来说是一个简单的访问授予问题。
注意:请根据需要替换用户
步骤 1:登录 MySQL
mysql -u root -p
第 2 步:授予远程访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY '[Password]' WITH GRANT OPTION;
注意:我的 MariaDB 服务器有多个 IP,它们都带有前缀 192.168.1.*,这就是上述原因。如果您只有一个 IP,请随意使用它来代替这个。即:@'192.168.1.111.%'
步骤 3:应用更改
FLUSH PRIVILEGES;
快速检查一下
SELECT User, Host FROM mysql.user WHERE Host <> 'localhost';
这一步至关重要。就我而言,我到处更换防火墙,但实际情况是这样的。即使在下面的 MariaDB 文档中也没有提到这一点。
参考: