2012-03-30 21 views
5

Mam serwer CentOS, który chcę skryptować z BASH, uruchamiając go na moim laptopie.Skrypty MySQL z BASH przez SSH

uruchomić skrypt lokalnie że: - loguje się na serwerze nad ssh i wykonuje pewne mysql oświadczenia - kopiuje pliki, które muszę gdzie muszę je

kopiowanie plików jest łatwe. Mogę to zrobić.

Ale jak połączyć się z serwerem MySQL za pośrednictwem portu SSH i wykonać polecenia? Myślę, że po prostu utknąłem na części łączącej. wykonywanie instrukcji, które mogę zbudować na zmiennej i wsadowym uruchomieniu.

Posiadam również parę kluczy SSH pub/priv z mojego laptopa na ten serwer.

jakiej pomocy?

+0

Czy to, co szukasz? http://www.wallpaperama.com/forums/_zwxwzy.html – mikevoermans

Odpowiedz

5

wystarczy użyć ssh, aby uruchomić mysql na serwerze zdalnym. Na przykład:

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

Wszystko w cudzysłowach będzie uruchamiane zdalnie przez ssh.

9

Możesz określić polecenia do uruchomienia na komputerze zdalnym, jako ostatni argument do ssh:

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

Problemem jest to, że będzie to uciążliwe do czynienia z różnymi „” ucieczce w . polecenia mysql (s)

lepszy sposób, moim zdaniem, jest otwarcie tunelu SSH do zdalnego komputera po podłączeniu:

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

to byłoby podłączyć lokalny port 12341, t o port 3306 (mysqld) zdalnej maszyny. Po nawiązaniu połączenia wykonane, można się z nim połączyć z lokalnym komputerze jak:

mysql -h 127.0.0.1 -p 12341 

Więc można umieścić SQL do pliku, a kot to w MySQL:

cat commands | mysql -h 127.0.0.1 -p 12341 

Don” t zapomnij zabić połączenia SSH po zakończeniu.

Zauważ, że tunelowanie wymaga serwera zdalnego mieć PermitTunnel „Tak” w to sshd_config.

5

Możesz robić co @WishCow powiedział czy można umieścić wszystkie oświadczenia MySQL w pliku .sql, skopiuj ten plik do serwera, a następnie zadzwonić mysql wykonać te instrukcje, coś takiego:

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'