2012-02-02 150 views
3

我可以用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 [email protected] 

mysqlhost => MySQL Host 
sshuser => SSH User 
sshhost => SSH Host 

并提示输入密码的时候,我用从一个“SSH密码”

我不确定Sequel Pro在幕后做了些什么。

+0

所以,你运行该命令,然后*然后*会发生什么,或者你还做了什么?您只需使用该SSH命令设置隧道。 – 2012-02-04 03:46:54

回答

7

来自Sequel Pro文档的说明并不完全是这样;它只是告诉你如何建立一个隧道。你需要第二步实际上使用它连接到一个MySQL服务器。

实际过程分两步:

  1. 创建隧道。

    ssh -N -L 1234:mysqlhost:3306 [email protected] 
    

    ,我添加的-N只是告诉ssh你是建立一个隧道,你不希望在sshhost启动一个shell。运行这个命令看起来好像什么都不做:这就是它的样子。

    只要ssh命令运行在本地计算机上连接到端口1234将通过sshhostmysqlhost隧道端口3306(MySQL的端口)。

  2. 使用隧道连接到MySQL。

    您现在需要运行mysql命令行客户端。你刚刚运行的ssh命令仍在运行,所以你做最简单的事情是打开新的终端窗口或选项卡,并运行:

    mysql -P 1234 -u mysqluser -p 
    

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

当你与隧道完成,要么关闭原来的终端窗口或使用按Ctrl-C停止ssh过程。

+0

这怎么能用于在bash脚本中的服务器上创建数据库?如果你想在这里查看我的问题,那就太棒了:http://stackoverflow.com/questions/12905077/create-mysql-database-through-ssh-in-a-bash-script – Spoeken 2012-10-15 23:06:45

+2

这对我来说几乎完全适用,但在步骤2我不得不指定主机是127.0.0.1,比如'mysql -u user -h 127.0.0.1 -p',否则它不起作用。 – jkeesh 2014-01-03 06:24:55