Commandes essentielles pour survivre en production MariaDB/MySQL.
Connexion
# Connexion localemysql-uroot-p
# Connexion avec paramètresmysql-hlocalhost-P3306-umyuser-pmydb
# Exécuter une commandemysql-e"SELECT version();"# Exécuter un fichier SQLmysqlmydb<script.sql
# Mode safe (pas de WHERE = pas d'UPDATE/DELETE)mysql--safe-updates
Commandes MySQL CLI
Commande
Description
SHOW DATABASES;
Lister les bases
USE dbname;
Sélectionner une base
SHOW TABLES;
Lister les tables
DESCRIBE table;
Structure d'une table
SHOW CREATE TABLE t;
DDL d'une table
SHOW INDEX FROM t;
Index d'une table
SHOW PROCESSLIST;
Requêtes en cours
SHOW VARIABLES;
Variables serveur
SHOW STATUS;
Statut serveur
\G
Affichage vertical
\c
Annuler la requête
\q ou exit
Quitter
Utilisateurs & Permissions
-- Créer un utilisateurCREATEUSER'myuser'@'localhost'IDENTIFIEDBY'password';CREATEUSER'myuser'@'%'IDENTIFIEDBY'password';-- Accès distant-- Accorder tous les droits sur une baseGRANTALLPRIVILEGESONmydb.*TO'myuser'@'localhost';-- Droits limitésGRANTSELECT,INSERT,UPDATE,DELETEONmydb.*TO'myuser'@'localhost';-- User read-onlyCREATEUSER'readonly'@'localhost'IDENTIFIEDBY'password';GRANTSELECTONmydb.*TO'readonly'@'localhost';-- Appliquer les changementsFLUSHPRIVILEGES;-- Voir les privilègesSHOWGRANTSFOR'myuser'@'localhost';-- Changer le mot de passeALTERUSER'myuser'@'localhost'IDENTIFIEDBY'newpassword';-- Supprimer un utilisateurDROPUSER'myuser'@'localhost';
KILL<process_id>;KILLQUERY<process_id>;-- Tue la requête mais garde la connexion
Verrous InnoDB
-- Transactions en attenteSELECT*FROMinformation_schema.innodb_lock_waits;-- Transactions activesSELECT*FROMinformation_schema.innodb_trx;-- Détails des locksSHOWENGINEINNODBSTATUS\G
Variables Importantes
-- ConnexionsSHOWVARIABLESLIKE'max_connections';SHOWSTATUSLIKE'Threads_connected';-- Buffer pool InnoDBSHOWVARIABLESLIKE'innodb_buffer_pool_size';SHOWSTATUSLIKE'Innodb_buffer_pool%';-- Slow queriesSHOWVARIABLESLIKE'slow_query%';SHOWVARIABLESLIKE'long_query_time';
Backup & Restore
# Dump une basemysqldump-uroot-pmydb>mydb.sql
# Dump avec compressionmysqldump-uroot-pmydb|gzip>mydb.sql.gz
# Dump toutes les basesmysqldump-uroot-p--all-databases>all_databases.sql
# Options recommandées productionmysqldump-uroot-p--single-transaction--routines--triggersmydb>mydb.sql
# Restoremysql-uroot-pmydb<mydb.sql
# Restore depuis gzipgunzip<mydb.sql.gz|mysql-uroot-pmydb
# Dump structure onlymysqldump-uroot-p--no-datamydb>schema.sql
# Dump data onlymysqldump-uroot-p--no-create-infomydb>data.sql
Maintenance
-- Vérifier une tableCHECKTABLEmytable;-- Réparer une tableREPAIRTABLEmytable;-- Optimiser (récupérer espace)OPTIMIZETABLEmytable;-- Analyser (stats)ANALYZETABLEmytable;
# Vérifier toutes les tablesmysqlcheck-uroot-p--all-databases
# Optimiser toutes les tablesmysqlcheck-uroot-p--all-databases--optimize
# Réparer toutes les tablesmysqlcheck-uroot-p--all-databases--repair
-- Arrêter la réplicationSTOPSLAVE;-- Démarrer la réplicationSTARTSLAVE;-- Reset la réplicationRESETSLAVEALL;-- Sauter une erreurSETGLOBALsql_slave_skip_counter=1;STARTSLAVE;
Binlogs
-- Lister les binlogsSHOWBINARYLOGS;-- Purger les anciensPURGEBINARYLOGSBEFORE'2024-11-01 00:00:00';PURGEBINARYLOGSTO'mysql-bin.000010';-- Voir le contenuSHOWBINLOGEVENTSIN'mysql-bin.000001'LIMIT10;
Configuration Rapide
-- Voir un paramètreSHOWVARIABLESLIKE'max_connections';-- Modifier (session)SETmax_connections=500;-- Modifier (global, jusqu'au restart)SETGLOBALmax_connections=500;-- Voir les paramètres non-defaultSHOWVARIABLESWHEREVariable_nameIN('innodb_buffer_pool_size','max_connections');
Troubleshooting Express
Problème
Commande
Connexions max
SHOW STATUS LIKE 'Threads_connected'; SHOW VARIABLES LIKE 'max_connections';
Requête bloquée
SHOW PROCESSLIST; KILL <id>;
Table corrompue
CHECK TABLE t; REPAIR TABLE t;
Réplication cassée
SHOW SLAVE STATUS\G
Disque plein binlogs
PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY;
Lock wait timeout
SHOW ENGINE INNODB STATUS\G
Buffer pool hit
SHOW STATUS LIKE 'Innodb_buffer_pool_read%';
Calcul Buffer Pool Hit Ratio
SELECT(1-((SELECTVARIABLE_VALUEFROMinformation_schema.GLOBAL_STATUSWHEREVARIABLE_NAME='Innodb_buffer_pool_reads')/(SELECTVARIABLE_VALUEFROMinformation_schema.GLOBAL_STATUSWHEREVARIABLE_NAME='Innodb_buffer_pool_read_requests')))*100AShit_ratio;-- Devrait être > 99%