guest@6admin.io:~$

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 .