gpt4 book ai didi

mysql - Yet another "Lost connection to mysql server at ' reading initial communication packet', 系统错误 : 0"issue

转载 作者:太空狗 更新时间:2023-10-29 12:30:19 24 4
gpt4 key购买 nike

这似乎是一个重复的帖子,但我已经检查了相关帖子中发布的所有解决方案,但没有一个对我有用。所以请允许我更准确地陈述问题。

我有一台服务器,上面安装了 MySQL。我有一个密码为 P 的用户 X。

如果我连接到服务器(ssh 或其他)并尝试在本地运行 MySQL (mysql --user=X --password==P),它会完美登录,并且我可以访问对一切:

    mysql> show grants;
...
+------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'X'@'%' IDENTIFIED BY |
|PASSWORD 'somehash' WITH GRANT OPTION |
+------------------------------------------------------+

现在,如果我转到配置文件:(sudo vim/etc/mysql/my.cnf) 我会看到以下内容:

bind-address = 0.0.0.0
port = 3306

然后我转到主机允许文件 (sudo vim/etc/hosts.allow) 我看到了:

mysqld: ALL

然后我去hosts allow file (sudo vim/etc/hosts.deny): 文件是空的(除了一些注释)。

不过,当我尝试连接 MySQL Workbench 时,我遇到了问题。我是这样做的。我去添加一个新连接,添加 URL、用户名、通行证和端口,然后单击测试连接,我得到的消息就是这个问题的标题。我尝试使用随机的(不存在的)用户密码组合,但仍然得到相同的响应。

顺便说一句,我也试着注释掉 bind-address。此外,该服务器通常可供 PostgreSQL 等其他服务访问。

最佳答案

不是解决服务器防火墙问题的方法,而是一种解决方法,因为您可以通过 ssh 连接到数据库服务器:

你可以尝试从你的mysql服务器ssh远程端口转发到你的本地机器,然后将mysql客户端连接到本地端口。每当我在防火墙后面时,我都会使用这种方法。作为奖励,通过此连接传输的数据也非常安全。

例如,如果您使用 ssh 连接到远程计算机

ssh hal@remote.machine.com -i ~/.ssh/hal.key

然后你可以像这样设置端口转发:

ssh -L 54321:127.0.0.1:3306 hal@remote.machine.com -i ~/.ssh/hal.key -f -N -M -S ~/.ssh/tunnel_54321_remote_machine_mysql

然后您就可以像在本地连接数据库一样连接到数据库(以命令行 mysql 客户端为例):

mysql -h 127.0.0.1 -P 54321 -u my_user -p my_database

这会提示您输入密码。

关闭隧道:

ssh -S ~/.ssh/tunnel_54321_remote_machine_mysql hal@remote.machine.com -i ~/.ssh/hal.key

我最初是从 postgres docs 了解到这个方法的.

关于mysql - Yet another "Lost connection to mysql server at ' reading initial communication packet', 系统错误 : 0"issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29462656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com