Vous avez installé MySQL, le service tourne, systemctl status mysql affiche active (running). Maintenant, il faut entrer dedans. Comment lister les bases existantes ? Voir la structure d’une table ? Exécuter une requête, exporter un résultat en CSV, ou lancer un script SQL automatisé ?
mysql est le client en ligne de commande officiel de MySQL. C’est l’outil quotidien de l’administrateur : exploration des bases et des tables, exécution de requêtes, import/export de données, et scripting en mode batch. Contrairement à psql (PostgreSQL), les commandes d’exploration passent par des instructions SHOW et des vues INFORMATION_SCHEMA plutôt que par des méta-commandes.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Se connecter à MySQL en local (socket Unix) et en réseau (TCP/IP,
login-path) - Explorer la structure d’une instance avec
SHOW,DESCRIBEetINFORMATION_SCHEMA - Formater la sortie : mode vertical (
\G), pager, export vers fichier avectee - Importer et exporter des données avec
LOAD DATA,SELECT INTO OUTFILEetmysqlimport - Scripter des tâches d’administration avec le mode batch (
-e, redirection,source)
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »Le client mysql est l’outil que vous utiliserez dans toutes ces situations :
- Vous venez d’installer MySQL et voulez vérifier ce qui existe sur l’instance
- Vous devez créer une base et des tables pour une nouvelle application
- Vous administrez un serveur et avez besoin de connaître la taille des bases, les connexions actives ou les variables critiques
- Vous devez importer un fichier CSV ou exporter des résultats pour un collègue
- Vous automatisez des tâches d’administration dans un script shell (migration, rapport, nettoyage)
- Vous devez diagnostiquer un problème de performance ou de connexion en production
Ce guide ne couvre pas…
Section intitulée « Ce guide ne couvre pas… »Prérequis
Section intitulée « Prérequis »- MySQL installé et le service actif (voir le guide Installation)
- Un compte avec les droits suffisants (
rootou un compte d’administration créé lors de l’installation)
Vérification rapide :
mysql --versionmysql Ver 8.4.5 for Linux on x86_64 (MySQL Community Server - GPL)Se connecter à MySQL
Section intitulée « Se connecter à MySQL »Connexion locale (socket Unix)
Section intitulée « Connexion locale (socket Unix) »La méthode la plus courante sur le serveur lui-même. La connexion passe par un socket Unix — pas de réseau, pas de chiffrement nécessaire :
mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 12Server version: 8.4.5 MySQL Community Server - GPL
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>Le prompt mysql> indique que vous êtes connecté. Contrairement à PostgreSQL, MySQL n’a pas de prompt différent pour les superusers.
Pour se connecter directement à une base spécifique :
mysql -u root -p labdbConnexion réseau (TCP/IP)
Section intitulée « Connexion réseau (TCP/IP) »Pour une connexion depuis un autre serveur ou en forçant TCP (utile quand le socket n’est pas accessible) :
mysql -h 192.168.122.70 -P 3306 -u labadmin -p labdb| Option | Description |
|---|---|
-h | Adresse du serveur (hostname ou IP) |
-P | Port (3306 par défaut) |
-u | Nom d’utilisateur |
-p | Demander le mot de passe (sans espace après -p) |
labdb | Base de données à sélectionner au démarrage |
Fichier d’options ~/.my.cnf
Section intitulée « Fichier d’options ~/.my.cnf »Plutôt que de taper les options de connexion à chaque fois, créez un fichier ~/.my.cnf :
[client]user=labadminpassword=MotDePasseFort!2026host=127.0.0.1port=3306Protégez immédiatement les permissions :
chmod 600 ~/.my.cnfSur Unix, MySQL ignore les fichiers de configuration world-writable — le chmod 600 est donc indispensable, pas optionnel.
Ensuite, une simple commande suffit :
mysql labdbmysql_config_editor : identifiants chiffrés (login-path)
Section intitulée « mysql_config_editor : identifiants chiffrés (login-path) »MySQL fournit un outil dédié pour stocker les identifiants de manière sécurisée :
mysql_config_editor set --login-path=lab --host=127.0.0.1 --user=labadmin --passwordL’outil demande le mot de passe et le stocke chiffré dans ~/.mylogin.cnf. Pour l’utiliser :
mysql --login-path=lab labdbPour lister les profils enregistrés :
mysql_config_editor print --all[lab]user = labadminpassword = *****host = 127.0.0.1Le mot de passe est masqué — il n’est jamais affiché en clair.
\s et status : vérifier sa connexion
Section intitulée « \s et status : vérifier sa connexion »Une fois connecté, vérifiez toujours où vous êtes :
\s--------------mysql Ver 8.4.5 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id: 12Current database: labdbCurrent user: root@localhostSSL: Not in useCurrent pager: stdoutUsing outfile: ''Using delimiter: ;Server version: 8.4.5 MySQL Community Server - GPLProtocol version: 10Connection: Localhost via UNIX socketServer characterset: utf8mb4Db characterset: utf8mb4Client characterset: utf8mb4Conn. characterset: utf8mb4UNIX socket: /var/run/mysqld/mysqld.sockBinary data as: HexadecimalUptime: 2 hours 15 min 32 secConnection: Localhost via UNIX socket confirme la connexion locale. Current database: labdb montre la base active.
Explorer l’instance
Section intitulée « Explorer l’instance »Contrairement à PostgreSQL qui utilise des méta-commandes (\l, \dt, \d), MySQL s’appuie sur des instructions SHOW et des vues dans INFORMATION_SCHEMA.
SHOW DATABASES
Section intitulée « SHOW DATABASES »Lister toutes les bases de données de l’instance :
SHOW DATABASES;+--------------------+| Database |+--------------------+| information_schema || labdb || mysql || performance_schema || sys |+--------------------+| Base | Rôle |
|---|---|
information_schema | Catalogue virtuel — métadonnées sur toutes les tables, colonnes, index |
mysql | Tables système : comptes, privilèges, data dictionary |
performance_schema | Instrumentation interne : requêtes, verrous, I/O, threads |
sys | Vues simplifiées au-dessus de performance_schema (lisibles par un humain) |
labdb | Votre base de données applicative |
USE : changer de base de données
Section intitulée « USE : changer de base de données »USE labdb;Database changedToutes les requêtes suivantes s’exécutent dans le contexte de labdb — pas besoin de préfixer les noms de tables.
SHOW TABLES et SHOW COLUMNS
Section intitulée « SHOW TABLES et SHOW COLUMNS »Lister les tables de la base active :
SHOW TABLES;+-----------------+| Tables_in_labdb |+-----------------+| clients || commandes || deploiements || environnements || services |+-----------------+Voir les colonnes d’une table :
SHOW COLUMNS FROM clients;+-------------+--------------+------+-----+-----------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------+--------------+------+-----+-----------+----------------+| id | int | NO | PRI | NULL | auto_increment || nom | varchar(100) | NO | | NULL | || email | varchar(200) | NO | UNI | NULL | || equipe | varchar(50) | YES | | NULL | || inscription | date | YES | | curdate() | |+-------------+--------------+------+-----+-----------+----------------+L’alias DESCRIBE (ou DESC) produit le même résultat :
DESC clients;SHOW CREATE TABLE : le DDL exact
Section intitulée « SHOW CREATE TABLE : le DDL exact »Pour voir la requête CREATE TABLE exacte, y compris le moteur de stockage, le charset et les contraintes :
SHOW CREATE TABLE clients\G*************************** 1. row *************************** Table: clientsCreate Table: CREATE TABLE `clients` ( `id` int NOT NULL AUTO_INCREMENT, `nom` varchar(100) NOT NULL, `email` varchar(200) NOT NULL, `equipe` varchar(50) DEFAULT NULL, `inscription` date DEFAULT (curdate()), PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ciC’est la commande la plus utile pour reproduire une table sur un autre serveur ou comprendre sa configuration exacte (moteur InnoDB, charset utf8mb4, collation).
SHOW INDEX : les index d’une table
Section intitulée « SHOW INDEX : les index d’une table »SHOW INDEX FROM clients\G*************************** 1. row *************************** Table: clients Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: id Collation: A Cardinality: 10 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment:Index_comment: Visible: YES Expression: NULL*************************** 2. row *************************** Table: clients Non_unique: 0 Key_name: email Seq_in_index: 1 Column_name: email Collation: A Cardinality: 10 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment:Index_comment: Visible: YES Expression: NULLINFORMATION_SCHEMA : requêtes sur le catalogue
Section intitulée « INFORMATION_SCHEMA : requêtes sur le catalogue »INFORMATION_SCHEMA est un standard SQL implémenté par MySQL. Il expose les métadonnées sous forme de tables virtuelles interrogeables avec du SQL classique :
Taille des bases :
SELECT table_schema AS base, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS taille_mbFROM information_schema.TABLESGROUP BY table_schemaORDER BY taille_mb DESC;+--------------------+-----------+| base | taille_mb |+--------------------+-----------+| mysql | 2.67 || labdb | 0.22 || sys | 0.02 || information_schema | 0.00 || performance_schema | 0.00 |+--------------------+-----------+Taille détaillée par table :
SELECT table_name, ROUND((data_length + index_length) / 1024, 2) AS taille_ko, table_rows AS lignes_estimeesFROM information_schema.TABLESWHERE table_schema = 'labdb'ORDER BY (data_length + index_length) DESC;+----------------+-----------+-----------------+| table_name | taille_ko | lignes_estimees |+----------------+-----------+-----------------+| deploiements | 48.00 | 20 || commandes | 48.00 | 15 || services | 32.00 | 8 || clients | 32.00 | 10 || environnements | 32.00 | 4 |+----------------+-----------+-----------------+Lister les colonnes d’une table :
SELECT column_name, data_type, is_nullable, column_defaultFROM information_schema.COLUMNSWHERE table_schema = 'labdb' AND table_name = 'clients'ORDER BY ordinal_position;+-------------+-----------+-------------+----------------+| column_name | data_type | is_nullable | column_default |+-------------+-----------+-------------+----------------+| id | int | NO | NULL || nom | varchar | NO | NULL || email | varchar | NO | NULL || equipe | varchar | YES | NULL || inscription | date | YES | curdate() |+-------------+-----------+-------------+----------------+Performance Schema et sys : diagnostic en direct
Section intitulée « Performance Schema et sys : diagnostic en direct »Performance Schema instrumente le serveur en temps réel. La base sys offre des vues simplifiées par-dessus :
Connexions actives :
SELECT * FROM sys.session\GRequêtes les plus lentes (top 10) :
SELECT query, exec_count, avg_latency, rows_examined_avgFROM sys.statements_with_runtimes_in_95th_percentileLIMIT 10;Tables les plus accédées :
SELECT table_schema, table_name, rows_fetched, rows_inserted, rows_updated, rows_deletedFROM sys.schema_table_statisticsWHERE table_schema = 'labdb'ORDER BY rows_fetched DESC;Tableau récapitulatif des commandes d’exploration
Section intitulée « Tableau récapitulatif des commandes d’exploration »| Commande | Description |
|---|---|
SHOW DATABASES; | Lister les bases de données |
USE <base>; | Changer de base active |
SHOW TABLES; | Lister les tables de la base active |
SHOW COLUMNS FROM <table>; | Colonnes, types, clés, défauts |
DESC <table>; | Alias de SHOW COLUMNS |
SHOW CREATE TABLE <table>\G | DDL complet (moteur, charset, contraintes) |
SHOW INDEX FROM <table>\G | Index, cardinalité, type |
SHOW TABLE STATUS\G | Taille, moteur, lignes estimées |
SHOW VARIABLES LIKE 'pattern'; | Variables de configuration serveur |
SHOW GLOBAL STATUS LIKE 'pattern'; | Compteurs de statut serveur |
SHOW PROCESSLIST; | Connexions actives et requêtes en cours |
Formatage et affichage
Section intitulée « Formatage et affichage »Mode tableau (par défaut) et mode vertical (\G)
Section intitulée « Mode tableau (par défaut) et mode vertical (\G) »Le mode par défaut affiche les résultats en tableau horizontal. Pour les résultats larges (beaucoup de colonnes), le mode vertical avec \G est beaucoup plus lisible :
-- Mode tableau (défaut)SELECT * FROM clients WHERE id = 1;+----+---------+-------------------+--------+-------------+| id | nom | email | equipe | inscription |+----+---------+-------------------+--------+-------------+| 1 | Alice | alice@devops.lab | SRE | 2026-01-15 |+----+---------+-------------------+--------+-------------+-- Mode verticalSELECT * FROM clients WHERE id = 1\G*************************** 1. row *************************** id: 1 nom: Alice email: alice@devops.lab equipe: SREinscription: 2026-01-15Le \G remplace le ; en fin de requête — ne mettez pas les deux.
Pager et tee : sortie vers un fichier
Section intitulée « Pager et tee : sortie vers un fichier »Pour paginer les résultats longs (comme less en shell) :
pager less -S;SHOW GLOBAL STATUS;nopager;Pour capturer toute la session dans un fichier (requêtes + résultats) :
tee /tmp/session-mysql.log-- vos requêtes ici...noteeLe fichier /tmp/session-mysql.log contiendra l’intégralité de vos commandes et leurs résultats — utile pour documenter une session de diagnostic.
Options de formatage en ligne de commande
Section intitulée « Options de formatage en ligne de commande »| Option | Effet |
|---|---|
-t ou --table | Force le mode tableau (défaut en interactif) |
-E ou --vertical | Force le mode vertical pour toutes les requêtes |
-N ou --skip-column-names | Supprime les en-têtes de colonnes |
-B ou --batch | Mode batch (pas de tableau, valeurs séparées par tabulation) |
--xml | Sortie en XML |
--html | Sortie en HTML |
Exécuter du SQL
Section intitulée « Exécuter du SQL »Requêtes interactives
Section intitulée « Requêtes interactives »Tapez votre SQL suivi de ; ou \G :
SELECT nom, equipe, inscription FROM clients ORDER BY inscription;+---------+----------+-------------+| nom | equipe | inscription |+---------+----------+-------------+| Alice | SRE | 2026-01-15 || Bob | Backend | 2026-02-20 || Claire | Frontend | 2026-03-10 || David | SRE | 2026-03-28 || Eva | DevOps | 2026-04-01 |+---------+----------+-------------+Les requêtes multi-lignes sont supportées — MySQL attend le ; final :
SELECT c.nom, COUNT(d.id) AS nb_deployFROM clients cJOIN deploiements d ON d.responsable = c.nomGROUP BY c.nomORDER BY nb_deploy DESC;Mode batch : -e et redirection
Section intitulée « Mode batch : -e et redirection »Pour exécuter une requête depuis le shell (scripts, cron, CI/CD) :
mysql -u root -p labdb -e "SELECT nom, equipe FROM clients;"+---------+----------+| nom | equipe |+---------+----------+| Alice | SRE || Bob | Backend || Claire | Frontend || David | SRE || Eva | DevOps |+---------+----------+Pour un résultat sans tableau (exploitable par un script) :
mysql -u root -p labdb -BNe "SELECT COUNT(*) FROM clients;"5| Option | Effet |
|---|---|
-B | Mode batch (séparateur tabulation, pas de bordures) |
-N | Pas d’en-têtes de colonnes |
-e "..." | Exécuter la requête et quitter |
Pour rediriger un fichier SQL complet :
mysql -u root -p labdb < /tmp/rapport.sqlsource : exécuter un fichier SQL depuis le client
Section intitulée « source : exécuter un fichier SQL depuis le client »Depuis le prompt mysql> :
source /tmp/01-sample-data.sqlOu avec le raccourci :
\. /tmp/01-sample-data.sqlC’est l’équivalent MySQL de \i dans psql. Le fichier est lu et exécuté ligne par ligne.
Créer et gérer des objets
Section intitulée « Créer et gérer des objets »Créer une base et des tables
Section intitulée « Créer une base et des tables »CREATE DATABASE mon_projet CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE mon_projet;
CREATE TABLE utilisateurs ( id INT AUTO_INCREMENT PRIMARY KEY, login VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(200) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB;Transactions : BEGIN, COMMIT, ROLLBACK
Section intitulée « Transactions : BEGIN, COMMIT, ROLLBACK »MySQL avec InnoDB supporte les transactions ACID :
BEGIN;INSERT INTO clients (nom, email, equipe) VALUES ('Test Rollback', 'test@lab.dev', 'QA');SELECT COUNT(*) AS total FROM clients;+-------+| total |+-------+| 11 |+-------+L’insertion est visible dans la transaction. Annulons :
ROLLBACK;SELECT COUNT(*) AS total FROM clients;+-------+| total |+-------+| 10 |+-------+autocommit : comprendre le comportement par défaut
Section intitulée « autocommit : comprendre le comportement par défaut »Par défaut, MySQL exécute chaque requête dans sa propre transaction — c’est le mode autocommit :
SELECT @@autocommit;+--------------+| @@autocommit |+--------------+| 1 |+--------------+Chaque INSERT, UPDATE ou DELETE est immédiatement commité. Pour grouper des opérations dans une transaction, utilisez BEGIN / START TRANSACTION :
START TRANSACTION;-- vos modifications ici...COMMIT; -- ou ROLLBACK;Supprimer des objets
Section intitulée « Supprimer des objets »DROP supprime un objet :
DROP TABLE IF EXISTS utilisateurs;DROP DATABASE IF EXISTS mon_projet;IF EXISTS évite une erreur si l’objet n’existe pas — recommandé dans les scripts.
Importer et exporter des données
Section intitulée « Importer et exporter des données »LOAD DATA INFILE : import depuis un fichier sur le serveur
Section intitulée « LOAD DATA INFILE : import depuis un fichier sur le serveur »LOAD DATA INFILE est la méthode la plus rapide pour charger des données massives. Le fichier doit être sur le serveur :
LOAD DATA INFILE '/tmp/clients.csv'INTO TABLE clientsFIELDS TERMINATED BY ','ENCLOSED BY '"'LINES TERMINATED BY '\n'IGNORE 1 ROWS(nom, email, equipe);SELECT INTO OUTFILE : export vers un fichier sur le serveur
Section intitulée « SELECT INTO OUTFILE : export vers un fichier sur le serveur »SELECT nom, email, equipeINTO OUTFILE '/tmp/export_clients.csv'FIELDS TERMINATED BY ','ENCLOSED BY '"'LINES TERMINATED BY '\n'FROM clients;Le fichier est créé sur le serveur avec les permissions de l’utilisateur MySQL (mysql). Pour ajouter un en-tête CSV, combinez avec UNION :
SELECT 'nom', 'email', 'equipe'UNION ALLSELECT nom, email, equipeINTO OUTFILE '/tmp/export_clients_header.csv'FIELDS TERMINATED BY ','ENCLOSED BY '"'LINES TERMINATED BY '\n'FROM clients;mysqlimport : import en ligne de commande
Section intitulée « mysqlimport : import en ligne de commande »mysqlimport est un wrapper shell autour de LOAD DATA INFILE. Le nom du fichier doit correspondre au nom de la table :
mysqlimport -u root -p --local --fields-terminated-by=',' \ --lines-terminated-by='\n' --ignore-lines=1 \ labdb /tmp/clients.csvmysqlimport retire l’extension du fichier et utilise le nom restant comme nom de table. Ici, /tmp/clients.csv → table clients de la base labdb.
mysqldump : export SQL complet
Section intitulée « mysqldump : export SQL complet »Pour exporter une base entière (structure + données) en SQL :
mysqldump -u root -p labdb > /tmp/labdb_backup.sqlPour n’exporter que la structure (sans les données) :
mysqldump -u root -p --no-data labdb > /tmp/labdb_schema.sqlPour exporter une seule table :
mysqldump -u root -p labdb clients > /tmp/clients_backup.sqlLe guide Sauvegarde et restauration explore en détail toutes les options de mysqldump.
MySQL Shell (mysqlsh) : l’alternative moderne
Section intitulée « MySQL Shell (mysqlsh) : l’alternative moderne »MySQL Shell est le client nouvelle génération fourni par Oracle. Il apporte des fonctionnalités absentes du client mysql classique :
| Fonctionnalité | mysql (classique) | mysqlsh |
|---|---|---|
| Mode SQL | Oui | Oui |
| Mode JavaScript | Non | Oui |
| Mode Python | Non | Oui |
| Complétion avancée | Basique | Oui (tables, colonnes, fonctions) |
| Export parallèle | Non | util.dumpInstance() multi-thread |
| Import parallèle | Non | util.loadDump() multi-thread |
| AdminAPI (InnoDB Cluster) | Non | Oui |
| X Protocol | Non | Oui (port 33060) |
Pour l’installer :
sudo apt install mysql-shell # Debian/Ubuntusudo dnf install mysql-shell # RHEL/RockyConnexion en mode SQL :
mysqlsh --sql -u root -p -h localhostRequêtes d’administration courantes
Section intitulée « Requêtes d’administration courantes »Variables et statut
Section intitulée « Variables et statut »-- Voir une variable de configurationSHOW VARIABLES LIKE 'innodb_buffer_pool_size';
-- Voir un compteur de statutSHOW GLOBAL STATUS LIKE 'Threads_connected';
-- Plusieurs variables à la foisSHOW VARIABLES WHERE Variable_name IN ('max_connections', 'wait_timeout', 'interactive_timeout');Connexions actives
Section intitulée « Connexions actives »SHOW PROCESSLIST;+----+---------+-----------+-------+---------+------+----------+------------------+| Id | User | Host | db | Command | Time | State | Info |+----+---------+-----------+-------+---------+------+----------+------------------+| 12 | root | localhost | labdb | Query | 0 | starting | SHOW PROCESSLIST |+----+---------+-----------+-------+---------+------+----------+------------------+Pour une vue plus complète (requêtes longues, verrous) :
SHOW FULL PROCESSLIST\GEspace disque par base
Section intitulée « Espace disque par base »SELECT table_schema AS 'Base', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Taille (Mo)', COUNT(*) AS 'Tables'FROM information_schema.TABLESGROUP BY table_schemaORDER BY SUM(data_length + index_length) DESC;Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
ERROR 1045 (28000): Access denied for user 'root'@'localhost' | Mot de passe incorrect | Vérifier le mot de passe ou réinitialiser (voir guide Installation) |
ERROR 2002 (HY000): Can't connect to local MySQL server through socket | Service MySQL non démarré ou socket absent | sudo systemctl start mysql |
ERROR 2003 (HY000): Can't connect to MySQL server on 'host' | Connexion réseau refusée | Vérifier bind_address et le pare-feu |
ERROR 1049 (42000): Unknown database 'xxx' | La base n’existe pas | SHOW DATABASES; pour lister les bases disponibles |
ERROR 3948 (42000): Loading local data is disabled | local_infile désactivé | SET GLOBAL local_infile = ON; + reconnecter avec --local-infile=1 |
Le prompt affiche -> au lieu de mysql> | Requête non terminée (manque ;) | Tapez ; pour terminer ou \c pour annuler |
À retenir
Section intitulée « À retenir »- Le client
mysqlest l’outil d’administration quotidien — les commandesSHOWetINFORMATION_SCHEMAremplacent les méta-commandes de psql. - La connexion locale passe par un socket Unix — pas besoin de réseau ni de mot de passe sur certaines configurations.
mysql_config_editorstocke les identifiants chiffrés dans~/.mylogin.cnf— préférez-le au mot de passe en clair dans~/.my.cnf.- Le mode vertical
\Gremplace le;et rend les résultats larges lisibles. - Le mode batch (
-BNe) produit une sortie exploitable par les scripts shell — indispensable pour l’automatisation. - Le DDL MySQL provoque un COMMIT implicite — pas de
ROLLBACKpossible après unCREATE TABLEou unDROP TABLE. MySQL 8.4 supporte l’atomic DDL (un DDL échoué est entièrement annulé), mais ce n’est pas du DDL transactionnel à la PostgreSQL. LOAD DATA INFILEest la méthode la plus rapide pour les imports massifs.mysql_config_editorsécurise les identifiants pour les scripts automatisés.- La base
sysoffre des vues simplifiées au-dessus deperformance_schema— utilisez-la en premier pour le diagnostic.