通过SSH隧道的MySQL连接 - 如何指定其他MySQL服务器?

Mad*_*vin 54 mysql ssh-tunnel

我有大约50个数据库都设置在不同的主机名,要求我通过SSH隧道连接到它们.

例如:

  • SSH主机在 ssh.example.com

  • MySQL主持人在 mysql1.example.com

我已经设法使用autossh(运行Debian的Web服务器)创建隧道,但我似乎无法弄清楚如何连接到SSH隧道之外的特定MySQL主机名.

键入lsof -i -n | egrep '\<ssh\>'确认隧道正在工作(将端口3307发送到ssh.example.com端口3306)

因此,当我尝试时,我mysql -h 127.0.0.1 -P 3307拒绝Connection.不太奇怪,因为它不是MySQL服务器.

我向你们提问:

如何在mysql1.example.com创建SSH隧道后指定主机?我试过到处寻找,但似乎无法弄明白.

Mad*_*vin 106

解决了!当创建隧道时,事情是连接到正确的服务器 - 应该看到那个即将到来.

ssh -f user@ssh.example.com -L 3307:mysql1.example.com:3306 -N

然后mysql -h 127.0.0.1 -P 3307按预期工作.:)

  • 请注意:在`mysql`命令中使用`127.0.0.1`非常重要,因为如果使用`localhost`,则会忽略`P`参数.弄清楚这一点让我感到头疼. (14认同)
  • @abbood -N选项只是创建隧道,之后就没有了. (3认同)
  • 与 mysql 客户端连接时也可以使用 --protocol=tcp 。所以命令看起来像这样“mysql -P 3307 --protocol=tcp” (3认同)

小智 15

我有一个关于如何使用SSH隧道连接到MySQL的好博客.这里解释得很清楚.

连接SSH隧道的命令:

ssh -L [listening port]:[REMOTE_MYSQL_HOST]:[REMOTE_MYSQL_PORT] [SSH_USER]@[SSH_HOST]
Run Code Online (Sandbox Code Playgroud)

连接MySQL的命令:

localhost:[listening port]
Run Code Online (Sandbox Code Playgroud)

  • 这是一个死链接 (3认同)

ket*_*nkk 7

如果您没有直接访问权限mysql-server,则使用jump-server.

从您的机器,您连接(ssh)跳转服务器,然后从那里连接到您的mysql-server.

这可以通过使用来避免ssh- tunneling.

假设你的

       jump server is `jump-ip`
       mysql server is `mysql-ip`
       your machine is `machine-ip`
Run Code Online (Sandbox Code Playgroud)

只需打开ssh客户端(Windows中的Putty或linux/ios中的终端).

类型:

    ssh -L [local-port]:[mysql-ip]:[mysql-port] [jump-server-user]@[jump-ip]
Run Code Online (Sandbox Code Playgroud)

在此之后,您可以使用localhostlocal-port直接访问远程计算机上的mysql-server.

例如.你的Jdbc url访问mysql数据库,在这种情况下,将是

jdbc:mysql://localhost:[local-port]/[database-name]
Run Code Online (Sandbox Code Playgroud)


Jav*_*eel 6

我使用此命令创建了到数据库的隧道

ssh  -L 10000:localhost:3306  user@<ip addess to connect DB> -N -f
Run Code Online (Sandbox Code Playgroud)

-L 是本地主机端口,它是用户定义的,您可以提供任何端口号

0 到 65535 之间。0 到 1023 被保留。

无论您是否对服务器使用基于密钥的身份验证,您都应该

像这样提及关键。

ssh -i <path of the private key>  -L 10000:localhost:3306  user@<ip addess to connect DB> -N -f
Run Code Online (Sandbox Code Playgroud)