2011-07-08 55 views
1

我在電腦A上運行mysql,並且可以連接到它,如A~ $ mysql -u punkish -p database等等。mysql over ssh over non-standard port

我有權訪問計算機B,該計算機上也運行着mysql。我可以通過端口2200建立SSH密鑰對ssh到B,而一旦在,我可以連接到數據庫,像這樣

A~ $ ssh -p 2200 [email protected] 
B~ $ mysql -u punkish -p database 

不過,我想設置通過SSH端口轉發我的電腦上,因此所有在我的計算機A的端口3307上爲mysql提出的請求實際上被髮送到B上的端口3306上。這將允許我使用想要連接到mysql的gui程序,但不能通過隧道進行。所以,我做了以下

A~ $ ssh -p 2200 -L 3307:B:3306 [email protected] 
B~ $ 

上面記錄我正確的B.我不知道隧道是否建立,但我假設它是。但是,下面的失敗(在另一個終端

A~ $ mysql -P 3307 -u punkish -p 
Enter password: 
ERROR 1045 (28000): Access denied for user 'punkish'@'localhost' (using password: YES) 

這裏是有趣的事情 - 我有另一個叫續集專業(桌面MySQL客戶端的Mac OS X的GUI程序),並且能夠進行連接到MySQL @ B,在SSH就好了。所以,我知道什麼工作......我只是不知道怎麼回事,所以我可能能夠啓用另一個GUI程序。

+0

也許這會更適合超級用戶(http://superuser.com/)? – Eddie

回答

1

的MySQL通常會嘗試使用一個插座文件,如果你沒有指定主機名,那麼作爲你的mysql命令的一部分,指定-h 127.0.0.1(注意,我沒有說localhost,它以不同的方式處理它們),這基本上強制TCP連接而不是套接字文件連接

+0

好的。我實際上已經嘗試過,但失敗了,但無論如何都試過了。我得到了一個不同的錯誤,如下所示:A〜$ mysql -P 3307 -p -h 127.0.0.1 -u punkish 輸入密碼: 錯誤2013(HY000):在'讀取初始通信數據包'時丟失與MySQL服務器的連接,系統錯誤:0' – punkish

+0

不知道。由於我對隧道設置一無所知,這是我能提供的最好的。嘗試運行'nmap -Pn -p3307 localhost'以確保該端口實際上正在偵聽。 –

+0

我在Mac OS X上,據我所知,它上面沒有'nmap'。 – punkish