MySQL : Mémento
Le mémo MySQL des commandes d’administration qui ne se tapent pas assez souvent pour les retenir, mais assez souvent pour savoir qu’elles existent.
Connexion
mysql -u root -p
mysql -u root -p -h localhost mon_schema
mysql -u root -p < dump.sql
Utilisateurs et droits
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mon_schema.* TO 'user'@'localhost';
GRANT SELECT, INSERT ON mon_schema.* TO 'readonly'@'%';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'user'@'localhost';
DROP USER 'user'@'localhost';
Backup et restore
# Backup complet d'une base
mysqldump -u root -p mon_schema > backup.sql
# Backup de toutes les bases
mysqldump -u root -p --all-databases > all.sql
# Backup avec DROP TABLE
mysqldump -u root -p --add-drop-table mon_schema > backup.sql
# Restore
mysql -u root -p mon_schema < backup.sql
Les requêtes d’administration
SHOW DATABASES;
SHOW TABLES;
SHOW TABLE STATUS;
SHOW PROCESSLIST;
SHOW VARIABLES;
SHOW ENGINE INNODB STATUS;
DESCRIBE table_name;
Optimisation
OPTIMIZE TABLE table_name;
ANALYZE TABLE table_name;
REPAIR TABLE table_name;
Le root perdu
Si vous avez perdu le mot de passe root, la procédure est:
# Arrêter MySQL
/etc/init.d/mysql stop
# Démarrer sans tables de privilèges
mysqld_safe --skip-grant-tables &
# Se connecter sans mot de passe
mysql -u root
# Dans mysql:
UPDATE mysql.user SET Password=PASSWORD('nouveau') WHERE User='root';
FLUSH PRIVILEGES;
# Redémarrer normalement
/etc/init.d/mysql restart
Voir aussi l’article sur la perte des identifiants pour la version détaillée.
[edit: 2026] MySQL a été remplacé par MariaDB sur la plupart des distros (même protocole, mêmes commandes) et le mysqld_safe --skip-grant-tables est toujours la procédure de récupération documentée. Le mémo survit parce que le protocole SQL survit.
[edit: 2026] L’implémentation Ansible de tout ceci: le rôle mariadb .