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] :
- 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 :
- 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
:
- 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é :
- 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 :
- 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 :
- 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 :
- SHOW DATABASES;
La commande mysql
fournit la possibilité d’utiliser directement du SQL en utilisant l’option -e
(execute) de la sorte :
- mysql -u root -p -e "show databases;"
Le résultat affiche quelque chose du genre :
- +------------------------+
- | DATABASE |
- +------------------------+
- | information_schema |
- | base1 |
- | base2 |
- | base3 |
- | base4 |
- | base5 |
- | base6 |
- +------------------------+
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 :
- 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 :
- information_schema
- base1
- base2
- base3
- ...
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 :
- #!/bin/bash
- mysql_user=root
- mysql_pass=mot_de_passe_root
- bases=`mysql -u $mysql_user --password=$mysql_pass -e "show databases;" -B -s |grep -v information_schema 2> /dev/null`
- if [ -z "$bases" ];then
- echo "Erreur d'accès ou pas de bases"
- exit 1
- fi
- echo "Début de la sauvegarde"
- for base in $bases
- do
- echo "Sauvegarde de $base..."
- mysqldump -u $mysql_user --password=$mysql_pass "$base" > $base.sql
- done
- echo "Sauvegarde terminée"
Vous pouvez ensuite lancer le script de la sorte pour le tester :
- 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
:
- 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) :
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.
Supprimer une base de données existante
Pour supprimer une base de données mysql, il suffit de se loguer au serveur avec un utilisateur ayant les droits de supprimer la base ou toutes les bases (root
ou autre) et de lancer ensuite la commande SQL de suppression.
Dans notre exemple, nous allons supprimer la base de données test
.
On se connecte dans un premier temps :
- mysql -u root -p
Puis on lance la commande suivante :
Vous devriez voir un message de succès du type :
- Query OK, 151 rows affected (0.73 sec)
Vous pouvez ensuite relancer la commande pour lister les bases de données pour vérifier que la suppression a été effective.