Mysql:mysql

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Client MySQL en ligne de commande
Voir aussi Mysql:GRANT · Mysql:show

Mysql:mysql regroupe des exemples d'utilisation du client en ligne de commande mysql pour exécuter des requêtes depuis un script shell.

Syntaxe

mysql -h hôte -u utilisateur -p[mot_de_passe] [base] -e "requête"
mysql -h hôte -u utilisateur -p[mot_de_passe] [base] < fichier.sql
  • -h : hôte du serveur MySQL
  • -u : utilisateur
  • -p : mot de passe (collé directement après -p, sans espace)
  • -e : exécute une requête SQL et quitte
  • -D : sélectionne la base (équivalent au nom de base en dernier argument positionnel)
  • -B : sortie au format tabulaire (batch)
  • -N : masque l'en-tête de colonnes
  • -s : mode silencieux
  • -t : force l'affichage en tableau (utile via un pipe SSH, qui ne détecte pas un terminal interactif)

Exemples

Exécuter une requête sur une base précise

mysql -h ip_serveur -u root -p<mot_de_passe> -D nom_base -B -e "SELECT colonne FROM table"

Équivalent en se connectant d'abord puis en changeant de base avec --exec :

mysql -h ip_serveur -u root -p<mot_de_passe> -B --exec="connect nom_base; SELECT colonne FROM table"

Rejouer un script SQL

mysql -u utilisateur -h ip_serveur -p<mot_de_passe> nom_base < script.sql

Forcer un affichage tabulaire à travers un tunnel SSH

ssh serveur "mysql -u utilisateur -p<mot_de_passe> -t -e 'SELECT * FROM table'"

Masquer le mot de passe dans la commande

Passer le mot de passe en clair sur la ligne de commande l'expose dans l'historique du shell et dans la liste des processus (ps aux). Sur les serveurs Plesk, le mot de passe root MySQL est stocké dans un fichier lisible uniquement par root, ce qui permet de l'injecter sans le taper :

mysql -u admin -p`cat /etc/psa/.psa.shadow`

Plus généralement, préférer un fichier ~/.my.cnf (chmod 600) contenant une section [client] avec user=/password=, ou l'invite interactive (-p sans valeur, saisie au clavier).

Voir aussi