在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:0(Windows)

在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:0(Windows)

我找到了类似的问题,但没有一个能帮我解决 Windows 机器的问题。我最初在 stack overflow 上发布了这个问题,但有人建议我在这里提问。

我能够通过本地计算机连接到 MySQL。但是,我将 MySQL 放在远程计算机上,当我尝试从本地连接到它时,出现以下错误:

在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:0

我使用 SQL Workbench 进行连接。我使用远程计算机的实际名称作为主机名并使用端口 139。我也在远程计算机上将 MySQL 作为服务启动。在谷歌上搜索错误时,我得到很多关于在/etc/hosts.allowmy.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 文档中也没有提到这一点。

参考:

  1. https://mariadb.com/kb/en/configuring-mariadb-for-remote-client-access/
  2. https://kb.synology.com/en-me/DSM/tutorial/Can_MariaDB_settings_be_customized_on_Synology_NAS

相关内容