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
Essaye ça:
mysql -h Host -u root -proot -e "show databases;";
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
.
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"
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é.