无法使用“127.0.0.1”连接到 Sequel Pro,但可以使用“localhost”通过终端连接

问题描述

我有一个在 Docker 上运行的项目,我可以通过终端连接到数据库:

mysql -h localhost -P 33060 --protocol=tcp -u 'notmyrealusername' -p 

这很好用,我可以显示数据库中的表。

但是,尝试通过 SequelPro 连接时,出现以下错误:

Unable to connect to host 127.0.0.1,or the request timed out.

Be sure that the address is correct and that you have the necessary privileges,or try increasing the connection timeout (currently 10 seconds).

MySQL said: Protocol mismatch; server version = 11,client version = 10

注意项目运行的是MySQL 5.7.34,我电脑上的版本是8.0.23。

操作系统:Mac OS Catalina

我尝试过的:

this thread 开始,我也尝试过 2200 的端口,而且,SequelPro 不会让我使用 127.0.0.1。所以,我不能尝试第二个。

我还向 'notmyrealusername'@'127.0.0.1' 和 'notmyrealusername'@'localhost' 授予了所有权限,但这似乎也没有解决。

回答菲利普的问题:

  • 是的,如果我尝试 mysql -h 127.0.0.1,则会得到同样的错误:

ERROR 2007 (HY000):协议不匹配;服务器版本 = 11,客户端 版本 = 10

问题: 有谁知道如何在 SequelPro 上连接到“localhost”而不是“127.0.0.1”,或者为什么我似乎无法连接到 SequelPro 上的这个数据库,当使用相同的数据时,我可以通过终端轻松连接?

预先感谢您提供的所有帮助/建议!

谢谢!

解决方法

我终于找到了解决方案。对于任何想知道的人,这里的关键是我正在使用 Docker。在这种情况下,如 this forum post 中所述,我们需要:

使用运行数据库的机器的 IP 地址( 真实的,而不是本地主机)作为主机地址。

如何?

  • 转到您的终端并使用命令 ifconfig 。您将获得大量数据,但您要查找的是本地网络 IP 地址。这通常看起来像 192.x.x.x10.x.x.x

  • 然后,在 Sequel Pro 或您使用的任何 GUI 中,使用此地址 (192....) 而不是 localhost。

我希望这可以帮助某人并节省您的时间:)

快乐编码!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...