2012-02-02 151 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