it-swarm.com.de

Führen Sie die mysql-Abfrage auf dem Remote-Computer über ssh in der Befehlszeile aus

Hallo, ich versuche, MySQL-Abfrage in Remote-Maschine auszuführen 

ich habe es versucht 

ssh [email protected] "mysql -uroot -proot -e \"use test";""

ich kann diese Datenbank nicht verwenden

Bitte schlagen Sie einen Arbeitsbefehl vor

Vielen Dank

19
lk121

Versuche dies:

mysql -h Host -u root -proot -e "show databases;";
30
kun tang

Versuche dies:

ssh [email protected] "mysql database -e 'query to run on table_name; more queries to run;'"

Dasselbe kann mit [email protected] durchgeführt werden, wenn dieser Benutzer die Berechtigung hat, SQL-Abfragen auszuführen, und schon gar nicht erst mysql starten. Die Verwendung von -e ist die gleiche wie --execute, die ausgeführt wird, was immer Sie in den nachgestellten Anführungszeichen (einfach oder doppelt) eingeben und beenden. Das Standardausgabeformat ist dasselbe, wie Sie es mit --batch sehen würden. 

7
King-Wzrd

MySql scheint eine spezielle Befehlszeilensyntax zu haben, die die Datenbank enthält.

mysql -u Benutzer -p -e Datenbank 'SQL Query'

Diese Dokumentation ist ziemlich alt, aber ich habe sie zum Laufen gebracht

http://www.cyberciti.biz/faq/run-sql-query-directly-on-the-command-line/

Letzter Arbeitsbefehl mit ssh:

ssh user @ Host "mysql -u user -e 'show tables;' Name der Datenbank"

3
Vicky T

Dies funktionierte nach ein paar Tests für mich (im Grunde die gleiche Antwort wie bei @ King-Wzrd):

ssh -t kom "mysql -uroot -p -e 'show databases;'"
ssh -t kom "mysql -uroot -p < /home/ling/websites/jin_test/.deploy/tmp.sql"

Der "Trick" waren die Anführungszeichen um den Befehl.

Die Option t ermöglicht die interaktive Aufforderung des Kennworts über die Remote-Shell.

Das kom hier ist nur eine ssh-Konfigurationskennung, die in meiner ~/.ssh/config -Datei definiert ist (siehe mehr hier: https: // www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ ).

1
ling

Das endete für mich in einem Bash-Skript:

query='USE [database]; SELECT ...'   
mysql='mysql -u [username] -p[password] -e '"'""$query""'"
ssh [username]@[server] -t "$mysql"

Wenn Sie es sicherer machen möchten, fügen Sie eine Eingabeaufforderung für das Kennwort ein, anstatt es an einem möglicherweise sicheren Ort zu speichern.

0
OZZIE