2013-08-19 134 views
2

我有機會通過SSH MySQL數據庫來查詢MYSQL數據庫,的MySQL-Python代碼通過SSH隧道

有人能告訴我到MySQL的Python代碼,可以讓我做到這一點?

我要救我的本地Windows電腦上我的查詢結果,

感謝,

+0

你嘗試過使用[paramiko](https://github.com/paramiko/paramiko)嗎? – Air

+0

Paramiko是最好的蟒蛇模塊來做SSH隧道。我在這裏添加了代碼來完成你所需要的:https://github.com/paramiko/paramiko/blob/master/demos/forward.py – yeaske

回答

0

您可以使用SSH端口轉發來做到這一點。其實第一款谷歌命中看起來步行通過這個確切事情:

http://www.howtogeek.com/howto/ubuntu/access-your-mysql-server-remotely-over-ssh/

而且因爲你使用的是Windows,那意思就是用膩子:

https://intranet.cs.hku.hk/csintranet/contents/technical/howto/putty-portforward.jsp

然後,您連接到本地主機:3306你的Python腳本,SSH將轉發到其他機器上,你將最終連接到遠程MySQL實例。

+0

我道歉;它似乎我的問題不清楚, 我可以手動ssh到數據庫並運行查詢, 我想知道如果你可以帶我到一個示例MySQL-PYTHON代碼將爲我做這個? 具有整個連接+查詢的東西[示例代碼] 謝謝 – user2333346

+0

沒有什麼特別的事情要做,只需在python中打開一個mysql連接並執行一些操作即可。這是ssh端口轉發的美妙之處,它使得它看起來像mysql服務器在本地運行。 – hexist

+0

但是我怎樣才能直接輸出到我的本地計算機> output.txt,不會輸出存儲在服務器上? – user2333346

0

您需要打開SSH隧道到您的SQL服務器,然後您可以運行paramiko來本地連接到本地使用的端口。這在* nix系統中很容易完成,我相信你也可以在Windows下載ssh命令行。嘗試膩子或plink,請參閱here。我做的是我運行一個shell腳本,像這樣的話,我執行我的paramiko python腳本,然後我殺

ssh -N [email protected] -i ~/.ssh/my_ssh_key.pem -L 5433:localhost:5432 
python paramiko_connect.py 
kill pkill -f my_ssh_key.pem # kill using the pattern, 
#see ''ps aux | grep my_ssh_key.pem'' to see what it will kill 

-N表示不執行任何命令,-L是本地端口從隧道,然後是遠程服務器端口,假設您已經連接到該服務器。

爲我的postgres服務器工作像我的魅力&我也嘗試過在MySQL上。