我可以通过Sequel Pro连接到DB,但不能通过命令行连接

Kal*_*ope 3 mysql database ssh sequelpro

我可以用Sequel Pro连接到我的数据库,但我无法通过命令行.我已经按照他们的指示:http://www.sequelpro.com/docs/Connecting_to_a_MySQL_Server_on_a_Remote_Host#Do_I_need_to_use_the_Terminal_for_SSH_connections.3F

在他们的命令中,我从Sequel Pro的连接窗口和SSH选项卡中替换以下内容:

ssh -L 1234:mysqlhost:3306 sshuser@sshhost

mysqlhost => MySQL Host
sshuser => SSH User
sshhost => SSH Host
Run Code Online (Sandbox Code Playgroud)

当提示输入密码时,我使用"SSH密码"中的密码

我不确定Sequel Pro在幕后做的不同.

Joh*_*ess 7

来自Sequel Pro文档的那条指令并非完整的故事; 它只是告诉你如何建立一个隧道.您需要第二步实际使用它来连接MySQL服务器.

实际过程分为两步:

  1. 创建隧道.

    ssh -N -L 1234:mysqlhost:3306 sshuser@sshhost
    
    Run Code Online (Sandbox Code Playgroud)

    -N我加入只是告诉ssh,你只能建立一个隧道,你不想启动的shell sshhost.运行此命令看起来似乎什么都不做:它应该是什么样子.

    只要该ssh命令正在运行,本地计算机上与端口1234的连接将通过隧道传输sshhost到端口3306(MySQL端口)mysqlhost.

  2. 使用隧道连接到MySQL.

    您现在需要运行mysql命令行客户端.ssh您刚刚运行的命令仍在运行,因此最简单的方法是打开一个新的终端窗口或选项卡,然后运行:

    mysql -P 1234 -u mysqluser -p
    
    Run Code Online (Sandbox Code Playgroud)

    连接到您的数据库.该-P 1234部分是此命令中唯一不同寻常的部分,它只是使mysql客户端使用您在第一个命令中设置的端口进行连接以进行隧道连接.

完成隧道后,关闭原始终端窗口或使用Ctrl-C停止ssh进程.

  • 这几乎完全适合我,但在第2步我必须指定主机是127.0.0.1,如`mysql -u user -h 127.0.0.1 -p`,否则它将无效. (2认同)