Documentation technique : Debian
Documentation basée sur la distribution Debian

> > > Utiliser mysql en ligne de commande

Utiliser mysql en ligne de commande

Accéder et utiliser Mysql en ligne de commande peut se révéler pratique pour diverses opération de traitement en masse, ou de sauvegarde / restauration notamment.

Modifier le mot de passe administrateur

Afin de modifier le mot de passe administrateur du serveur MySQL, il suffit de lancer la commande suivante [1] :

  1. dpkg-reconfigure mysql-server-5.1

Deux écrans de configuration apparaitront permettant de choisir puis de confirmer le mot de passe.

Importer une base de donnée MySQL

Afin d’importer une base de donnée sur un serveur MySQL, il suffit d’avoir à disposition un compte autorisé à créer des bases de données ainsi qu’un fichier préalable exporté. Il suffit ensuite de lancer la commande :

  1. mysql -u utilisateur -p base_exportee < base_exportee.sql

Si vous avez exporté l’ensemble des bases de données de votre serveur dans le même fichier (voir plus bas dans cet article) en utilisant l’option --all-databases, la commande suivante permettra de ne réimporter qu’une seule base une_base :

  1. mysql --one-database une_base < serveur.sql

L’utilisation de l’option --one-database permet de ne réimporter que la base de donnée une_base contenue dans la sauvagarde serveur.sql.

Exporter des bases de donnée dans un fichier

La commande suivante exportera le contenu de l’ensemble des bases de données du serveur vers le fichier serveur.sql, le mot de passe de l’utilisateur (ici root) vous sera demandé :

  1. mysqldump --all-databases -u root -p > serveur.sql

Pour éviter la demande de mot de passe de l’utilisateur (utile lors de l’utilisation dans un script par exemple), il suffit de changer l’option -p en --password=mot_de_passe_root comme :

  1. mysqldump --all-databases -u root --password=mot_de_passe_root > serveur.sql

Pour n’exporter que le contenu d’une seule base, il est nécessaire de préciser son nom (par exemple ma_base ici) de la sorte :

  1. mysqldump -u root --password=mot_de_passe_root ma_base > ma_base.sql

Lister l’ensemble des bases de données du serveur

En SQL, pour connaitre l’ensemble des bases de données du serveur, la commande suivante est utilisée :

  1. SHOW DATABASES;

La commande mysql fournit la possibilité d’utiliser directement du SQL en utilisant l’option -e (execute) de la sorte :

  1. mysql -u root -p -e "show databases;"

Le résultat affiche quelque chose du genre :

  1. +------------------------+
  2. | DATABASE |
  3. +------------------------+
  4. | information_schema |
  5. | base1 |
  6. | base2 |
  7. | base3 |
  8. | base4 |
  9. | base5 |
  10. | base6 |
  11. +------------------------+

Télécharger

Cela affiche le résultats brut de mysql. Pour l’utilisation simple dans un script on utilisera les options -B (qui enlève le formatage en colonne) et -s (qui enlève l’entête de colone). Ainsi la commande :

  1. mysql -u root --password=mot_de_passe_root -e "show databases;" -B -s

Elle affiche un résultat utilisable par un script sans demander de mot de passe, comme :

  1. information_schema
  2. base1
  3. base2
  4. base3
  5. ...

Télécharger

Exemple : petit script de sauvegarde de chaque base de donnée dans son propre fichier

Le script suivant sauvegardera, en suivant ce qui a été dit au dessus, chaque base dans son propre fichier. Copiez / collez son contenu dans le fichier save_dbs.sh par exemple en changeant les variables mysql_user et mysql_pass avec ce que vous souhaitez utiliser :

  1. #!/bin/bash
  2. mysql_user=root
  3. mysql_pass=mot_de_passe_root
  4.  
  5. bases=`mysql -u $mysql_user --password=$mysql_pass -e "show databases;" -B -s 2> /dev/null`
  6.  
  7. if [ -z "$bases" ];then
  8. echo "Erreur d'accès ou pas de bases"
  9. exit 1
  10. fi
  11.  
  12. echo "Début de la sauvegarde"
  13. for base in $bases
  14. do
  15. echo "Sauvegarde de $base..."
  16. mysqldump -u $mysql_user --password=$mysql_pass "$base" > $base.sql
  17. done
  18.  
  19. echo "Sauvegarde terminée"

Télécharger

Vous pouvez ensuite lancer le script de la sorte pour le tester :

  1. sh save_dbs.sh

Ajouter des utilisateurs MySQL

Pour créer un utilisateur mysql, il suffit de se loguer à MySQL en tant qu’utilisateur root et de lancer ensuite la commande SQL de création d’utilisateur.

Dans un premier temps, on se connecte au serveur MySQL en root :

  1. mysql -u root -p

Le mot de passe vous sera demandé. Cette étape peut être évitée en remplaçant l’option -p par --password=mot_de_passe_root

Puis on peut lancer la commande SQL de création d’utilisateur ("nouvel_user" avec un mot de passe "nouvel_user_mot_de_passe" auquel on donne tous les droits (uniquement depuis la machine, en localhost) :

  1. GRANT ALL PRIVILEGES ON *.* TO 'nouvel_user'@'localhost' IDENTIFIED BY 'nouvel_user_mot_de_passe' WITH GRANT OPTION;

Pour sortir de la commande Mysql, il suffit de taper exit et de valider.

CF : documentation officielle de MySQL concernant la création d’utilisateurs.

Notes

[1Attention au nom du paquet en fonction de la version de votre distribution. Pour être sûr du nom de paquet à utiliser, testez avec la commande suivante

  1. apt-cache search mysql-server-5
  • Auteur :
  • Publié le :
  • Mis à jour : 17/02/15

2 commentaires


Qui êtes-vous ?
Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.