2012-03-30 193 views
5

我有一臺CentOS服務器,我想從BASH腳本在我的筆記本電腦上運行它。通過SSH從BASH腳本編寫MySQL

本地運行的腳本: - 登錄到服務器通過SSH和執行一些MySQL的語句 - 我需要,我需要他們

文件複製是很容易複製文件。我可以做到這一點。

但是,如何通過SSH端口連接到MySQL服務器並執行語句?我想我只是被困在連接部分。執行我可以建立在變量和批處理執行上的語句。

我從我的筆記本電腦到這臺服務器也有一個SSH pub/priv keypair。

有幫助嗎?

+0

這是什麼您正在尋找? http://www.wallpaperama.com/forums/_zwxwzy.html – mikevoermans 2012-03-30 22:18:22

回答

5

只需使用ssh在遠程服務器上運行mysql即可。例如,

ssh [email protected] 'mysql -uimauser -p imadb -e "select * from table"'

引號中的所有內容都將通過ssh遠程運行。

9

您可以指定命令到遠程機器上運行,作爲最後一個參數爲SSH:

ssh [email protected] 'mysql -u user ...' 

這裏的問題是,這將是應對在各種「」逃避麻煩。mysql命令(S)

一種更好的方式,在我看來,是打開一個SSH隧道到遠程機器上,當您連接:

ssh -L 12341:127.0.0.1:3306 [email protected] & 

這將連接當地的12341端口,T遠程機器的3306(mysqld)端口。連接完成後,你可以從你的本地計算機一樣連接到它:

mysql -h 127.0.0.1 -p 12341 

所以,你可以把你的SQL語句到一個文件,和貓它到MySQL:

cat commands | mysql -h 127.0.0.1 -p 12341 

別不要忘了在完成之後終止SSH連接。

注意隧道需要遠程服務器有PermitTunnel「是」在它的sshd_config中。

5

你可以做什麼@WishCow說,或者你可以把所有的MySQL語句在.sql文件,這個文件拷貝到服務器,然後調用MySQL來執行這些語句,像這樣:

echo "show databases;" > test.sql 
echo "use some_database;" >> test.sql 
echo "show tables;" >> test.sql 
scp test.sql [email protected]: 
ssh [email protected] 'mysql -u mysql-user -pmysql-pass < test.sql'