web-dev-qa-db-fra.com

Exécuter une requête mysql sur une machine distante via ssh en ligne de commande

Salut, j'essaie d'exécuter une requête mysql dans une machine distante 

j'ai essayé avec ça 

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

je ne suis pas capable d'utiliser cette base de données

S'il vous plaît suggérer le travail de commande

Merci

19
lk121

Essaye ça:

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

Essaye ça:

ssh root@Host "mysql database -e 'query to run on table_name; more queries to run;'"

La même chose peut être faite avec user@Host si cet utilisateur est autorisé à exécuter des requêtes SQL et encore moins à lancer mysql en général. Utiliser -e est identique à --execute, qui exécutera tout ce que vous mettez entre les guillemets de fin (simple ou double) et quit. Le format de sortie standard serait le même que celui que vous verriez avec --batch

7
King-Wzrd

MySql semble avoir une syntaxe de ligne de commande spéciale qui inclut la base de données.

mysql -u utilisateur -p -e base de données 'SQL Query'

Cette documentation est plutôt ancienne mais je l'ai mise au travail

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

Commande de travail finale avec ssh:

ssh utilisateur @ hôte "mysql -u utilisateur -e 'show tables;' nom de la base de données"

3
Vicky T

Cela a fini par travailler pour moi dans un script bash:

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

Si vous voulez le rendre plus sûr, ajoutez une invite pour le mot de passe au lieu de le stocker dans un endroit potentiellement non sécurisé.

0
OZZIE