我尝试使用 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
目标端口,10080
和10006
- 本地工作站的端口。这将允许您通过服务器的本地主机接口连接到 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 连接的用户之间的差异,如果我理解正确的话,这是问题的一部分。