MySQL 无法通过 SSH 隧道连接--连接被拒绝

MySQL 无法通过 SSH 隧道连接--连接被拒绝

我尝试使用 SSH 隧道从我的 MySQL GUI(如果需要的话,Sequel Pro)连接到 MySQL。但是,我不断收到以下错误(mysql.log):

[注意] 中止与数据库“example”的连接 98:用户“example_user”主机“localhost”(读取通信数据包时出错)

我的连接设置如下:

  • SSH 主机:example.com
  • SSH 端口:22
  • SSH 用户:example_user
  • SSH 密码:********
  • 数据库主机:127.0.0.1
  • 数据库用户:example_user
  • 数据库密码:*******
  • 数据库名称:示例
  • 数据库端口:3306

我可以毫无问题地连接到 SSH。我也可以从 SSH 内部连接到 MySQL(使用mysql -u example_user -p -h 127.0.0.1

但是隧道不起作用。我AllowTcpForwarding yes在 sshd_config 中有。MySQL 配置中有bind-address = 127.0.0.1

我在我的服务器中使用 16.04 LTS 和 MySQL 社区版。

我做错什么了?这是我第一次看到这个问题。

答案1

您可以在工作站上通过命令创建多个隧道,例如:

ssh -L 10080:127.0.0.1:80 -L 10006:127.0.0.1:3306 user@server

有:127.0.0.1- ip 地址隧道的目标连接服务器,80以及3306目标端口,1008010006- 本地工作站的端口。这将允许您通过服务器的本地主机接口连接到 MySql 服务器和 Http 服务器。在工作站上运行命令以连接到 MySql 服务器。您可以连接到 PhpMyAdmin Web 界面,该界面仅允许从 127.0.0.1 连接。要做到这一点,只需在浏览器中mysql -p -u db_user -P 10006 -h 127.0.0.1 database_name输入地址即可。http://127.0.0.1:10080

答案2

我遇到了类似的问题,并且根据这个回答,解决方案是删除“任何”用户。

看来 MySQL 看到了通过 localhost 和 127.0.0.1 连接的用户之间的差异,如果我理解正确的话,这是问题的一部分。

相关内容