无法使用 Workbench 通过 SSH 连接到 MySQL 数据库

Fra*_*rio 10 mysql mysql-workbench

我正在尝试通过 SSH 隧道从我们的 Web 应用服务器之一使用 MySQL Workbench 连接到我的数据库。这是基本配置;请注意,出于安全原因,我更改了屏幕截图中的一些值。

工作台截图

问题是每次我尝试从我们的应用服务器之一通过 SSH 隧道进行连接时,都会收到以下错误:

无法使用用户 social_shop_prod 通过 computer.amazonaws.com 上的 SSH 隧道连接到 us-east-1.amazonaws.com。无法连接到 127.0.0.1 上的 MySQL 服务器。

但是,如果我通过以下命令行通过 SSH 使用相同的凭据:

mysql -u social_shop_prod -h us-east-1.amazonaws.com -p
Run Code Online (Sandbox Code Playgroud)

我可以成功连接并获得 MySQL 交互式命令提示符。

在这里与我的开发团队的其他成员进行了交谈,但我们都没有弄清楚为什么我无法使用 Workbench 从我们的应用服务器通过 SSH 建立隧道;但是当我通过 SSH 连接到我们的一个应用服务器并通过命令行连接到 MySQL 时;我可以成功连接。

为什么它试图通过 127.0.0.1 连接?我没有在配置中指定;我的主机文件也不会将下面显示的域重定向到该 IP。

非常感谢任何建设性的意见。

Cra*_*ein 5

由于您通过 SSH 隧道连接,这意味着来自 us-east-1.amazonaws.com 的 MySQL 端口 3306 正在您的计算机上本地打开。你电脑的ip地址是127.0.0.1或者localhost。当您连接到 us-east-1.amazonaws.com 上的 mysql 服务器时,您实际上是通过 127.0.0.1(即您的计算机)访问它。如果您打开了另一个隧道,或者在您的计算机上本地运行 MySQL,那么可能是其他 MySQL 服务器拒绝了您的身份验证尝试

您可以尝试一些测试:

1.你的Windows电脑监听的端口是什么

从命令提示符:netstat -a(列出所有打开的端口)

在 linux 中,它将是:netstat -tlpn

2. 基本连通性测试

从 DOS 命令提示符或 linux 控制台:telnet 127.0.0.1 3306

如果您超时,或者某些其他程序响应,那么您的隧道设置不正确。

3.更改MySQL Workbench在本地打开的端口号

我们假设 MySQL 工作台正在您的计算机上创建隧道。如果是这样,在 MySQL 工作台中,尝试通过另一个端口号(如 9000)建立隧道。

确保 9000 未从以下位置列为开放端口:netstat -a

如果您可以通过 ssh 访问 us-east-1.amazonaws.com

4. 尝试从 us-east-1.amazonaws.com 连接到 MySQL

mysql -u myuser -h 127.0.0.1 -p

正如 Rolando 所说,您需要验证是否使用正确的凭据进行连接。例如,如果您以 myuser@127.0.0.1 的身份进行连接,并且您的用户 myuser 没有主机,则您可能无法使用 user@127.0.0.1 进行连接。