首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用MySQL工作台与TCP/IP在SSH上连接失败

尝试使用MySQL工作台与TCP/IP在SSH上连接失败
EN

Database Administration用户
提问于 2011-06-26 14:02:57
回答 20查看 247.4K关注 0票数 50

在MySQL工作台中,我无法通过PC /IP连接从PC连接。到底怎么回事?

我在Ubuntu mysql.myhost.com上创建了一个Ubuntu5.1数据库。我可以在本地访问。TCP (PC)提供通过MySQL通过ssh建立连接。它运行在命令行mysql工作良好的远程服务器上的3306端口上。

我使用了以下会话详细信息:

  • 连接方法:基于SSH的TCP/IP。
  • SSH主机名: mysql.myhost.com:3306
  • SSH用户名:我的linux登录
  • SSH公钥文件:我的本地公钥文件
  • MySQL主机名: 127.0.0.1 MySQL
  • 服务器端口: 3306
  • 用户名: root

当我试图连接时,会收到一条错误消息:“通过mysql.myhost.com的SSH隧道与用户根目录连接到mysql.myhost.com,未能连接到127.0.0.1:3306的mysql.myhost.com。”

“无法在'127.0.0.1‘(10061)上连接到MySQL服务器

作为另一个测试,我使用Putty设置了端口3306的SSH隧道,我可以使用MySQL工作台连接OK,通过该隧道将连接到本地3306的连接转发到远程服务器,如前所述。但是我不能让"TCP/IP通过SSH“在Workbench中工作。

次要问题:当Workbench询问“SSH公钥文件的路径”时,它是否真的需要我的私钥文件?

EN

回答 20

Database Administration用户

发布于 2011-11-19 01:57:33

当我自己遇到这个错误时,我偶然发现了这个问题。我终于能弄清楚配置了。

  1. 我没有接触到/etc/mysql/my.cnf中的任何内容,它已经有bind_address = 127.0.0.1。所以只有本地主机才能连接。
  2. 我使用OpenSSH服务器。因此,在它的配置文件/etc/ssh/sshd_config中,我将负责TCP转发的param从no更改为yes,因此AllowTcpForwarding是。
  3. 最后,我在MySQL WorkBench中输入了以下内容。
    • SSH主机名: 192.168.0.8:22 (我的SSH服务器监听端口22)
    • SSH用户名: sshuser
    • SSH密钥文件:*C:\Users\windowsuser.ssh\id_rsa* (应该是私钥,尽管它是公开的)
    • MySQL主机名: 127.0.0.1 (不应更改此值,因为MySQL服务器默认仅绑定到本地主机,而我没有更改)
    • MySQL服务器端口: 3306 (也是默认的)
    • 用户名: root

剩下的唯一的事情就是正确地配置SSH服务器来处理密钥而不是密码。希望这能帮上忙。

票数 37
EN

Database Administration用户

发布于 2011-06-26 21:45:52

您可能需要检查mysql.user表中的用户。

运行以下查询:

代码语言:javascript
复制
SELECT user,host FROM mysql.user;

你应该看到这样的东西:

代码语言:javascript
复制
mysql> SELECT user,host,password FROM mysql.user;
+------------------+-------------+-------------------------------------------+
| user             | host        | password                                  |
+------------------+-------------+-------------------------------------------+
| root             | localhost   | *7A670E02260CDEEFF062DD08F3A6F6DA079998CB |
| ping             | %           | *124E1DB56CC8D6E2FEE8315BB2544BF04B980DB6 |
| admin            | 10.67.135.% | 1a6858054a41fede                          |
| icorbin          | 10.67.135.% | 366ed93a7396650e                          |
+------------------+-------------+-------------------------------------------+
4 rows in set (0.00 sec)

请注意

  • root@localhost只能从localhost登录。
  • ping@'%‘可以通过TCP/IP登录
  • admin@10.67.135.%只能通过TCP/IP从该网卡登录
  • icorbin@10.67.135.%只能通过TCP/IP从该网卡登录。

如果希望root用户通过TCP/IP进行连接,则必须为根用户指定IP地址或网卡。

就像这样:

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'whateverpassword';

如果root密码与root@localhost相同,则

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY PASSWORD '*7A670E02260CDEEFF062DD08F3A6F6DA079998CB ';

警告: root@'%‘通常不推荐。可以尝试root@'10.%‘或任何其他的根目录网卡。

试试看!!

票数 10
EN

Database Administration用户

发布于 2011-06-26 14:49:36

我认为TCP/IP OpenSSH方法的工作方式是建立MySQL连接的“正常”SSH连接(就像使用-L与OpenSSH命令行客户端进行隧道一样)。

因此,您需要指定一个连接到服务器上的SSH服务器,通过它建立隧道。在这里,您似乎在使用mysql.myhost.com:3306,这意味着您正在3306端口上运行这个SSH服务器(而不是MySQL)。

可以在127.0.0.1:3306上绑定MySQL服务器,在端口3306上为mysql.myhost.com在外部IP地址上绑定SSH服务器,但这是不可能的。我猜您的SSH服务器正在监听端口22 (默认情况)。

您可能应该使用mysql.myhost.com:22。(检查您可以通过正常的SSH客户端(如Putty )连接到它。)

票数 8
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/3489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档