无法使用 PuTTY(Windows Vista)通过 SSH 隧道连接到 Linux 机器上的 MySQL

无法使用 PuTTY(Windows Vista)通过 SSH 隧道连接到 Linux 机器上的 MySQL

目标:

我正在尝试将数据库复制到运行 Windows Vista 的本地机器上。

设置:

  • 在 Windows Vista 上使用 MySQL 5.1 (mysql-essential-5.1win32)
  • 在 Linux 机器上:MySQL Ver 14.12 Distrib 5.0.51a,
  • 我在 PuTTY 上设置了 SSH 隧道,方法如下:
    • 源端口 3306,目标:localhost:3307
    • 我使用 3307,因为我在 3306 上运行着自己的 Windows Vista 数据库

我可以在 Linux 机器上本地登录数据库,但是,当我尝试使用 MySQL 管理员登录时

  • 服务器主机:127.0.0.1 端口 3307
  • 用户名:someUser
  • 密码:某个密码

失败并显示以下消息:MySQL 错误号 2003 无法连接到 127,0.0.1 上的 MySQL 服务器(10061)

我怎样才能解决这个问题?

答案1

听起来你搞反了。目的地不是你的环回,而是另一个网络上的远程机器。或者你使用远程而不是本地作为隧道。

尝试翻转 IP 地址,例如:

putty.exe -L 3307:mysql.yourdomain.com:3306 

其中 mysql.yourdomain.com 是具有您尝试连接的 MySQL 服务的主机的名称。当 putty 弹出连接对话框时,输入地址、连接并登录。然后使用管理员工具连接到 localhost:3307。

答案2

我刚刚在 Windows 7 上试过,但它对我来说也不起作用。端口将被转发,但不会重新映射。它将静止不动localhost:3306,在您的情况下与本地服务器发生冲突。PuTTY 文档也说这是正确的方法,但也许 Windows Vista 的新安全模型会阻止端口的重新映射。

我建议,如果你在本地使用端口 3306,不要通过隧道连接到本地主机(通常映射到127.0.0.1),但要通过隧道连接到您环回范围内的另一个 IP 地址(可能127.0.0.2)。如果您的本地 SQL 服务器配置良好,它只侦听127.0.0.1:3306,您的远程隧道 SQL 服务器可以侦听127.0.0.2:3306,因此无需重新映射端口。

答案3

您不想或不需要使用 PuTTY 来远程访问数据库。

如果您有权限从本地计算机连接到远程数据库,则您可以mysqldump --host=remotemachine --user=remotesqluser --password=remotepassword --databases databasename>database.dump在 Vista 上使用,然后将其加载到本地机器上mysql --port=3307 --host=127.0.0.1 --user=localsqluser --password=localpassword <database.dump- 如果您在本地运行 Linux,我只需将一个程序导入另一个程序,但我不知道 Vista 的 cmd.exe 是否支持这一点。

如果你不能远程连接,但具有 Linux 数据库的管理员访问权限,您可以使用grant select on databasename.* to 'remotesqluser'@'yourexternalIPaddress' identified by 'remotepassword';(我认为select您只需要)授予自己权限(在远程 MySQL 命令行)。获得访问权限后,您可以按上述方式复制数据库。revoke完成后,使用 放弃权限。

如果你做不到这些,你将要需要 PuTTY:连接到 Linux 机器并mysqldump在那里运行命令(使用--host=127.0.0.1)。使用您喜欢的任何方式将转储文件复制到您的 Windows Vista 机器 - 如果您有方便的 Web 服务器,可以使用 SCP、FTP 和 HTTP - 然后您可以像上面一样在本地加载数据库。完成后,不要忘记删除 Linux 机器上的转储文件。

笔记如果您的 mysqldump 选项设置不合理,您可能需要添加--extended-insert到命令中以加快速度(允许使用多行插入),以及数据库中是否有任何存储过程需要传输--routines

相关内容