Bases de données PDF Gratuit

Cours de MySQL en PDF (Intermédiaire)

MySQL en ligne de commande (CLI) : Ce qu'il faut savoir. MySQL en ligne de commande permet d'interagir directement avec le serveur MySQL pour exécuter des requêtes, automatiser des tâches et administrer des bases à distance.

🎯 Ce que vous allez apprendre (ligne de commande / CLI)

  • Installation de MySQL : Installer et configurer MySQL pour un usage en mode console.
  • Commandes de base : Maîtriser les commandes essentielles pour interagir avec le serveur.
  • Gestion des bases de données : Créer, sélectionner et supprimer des bases via la CLI.
  • Exécution de requêtes SQL : Rédiger et exécuter des requêtes simples et complexes.
  • Exécution de scripts SQL : Lancer des scripts externes et importer des fichiers .sql.
  • Gestion des privilèges et utilisateurs : Comprendre les rôles et attribuer des droits (y compris l'utilisateur root).

📑 Sommaire du document

  • Introduction à MySQL
  • Utilisation de MySQL en ligne de commande
  • Commandes de gestion des bases
  • Création et suppression de bases
  • Exécution de requêtes SQL
  • Exécution de scripts SQL
  • Gestion des privilèges et utilisateurs
  • Conclusion

👤 À qui s'adresse ce cours ?

  • Public cible : Développeurs et administrateurs de bases de données souhaitant approfondir l'utilisation de MySQL en ligne de commande.
  • Prérequis : Connaissances de base en SQL recommandées ; notions élémentaires d'administration système utiles pour les opérations avancées.

Avantages de MySQL en ligne de commande (CLI)

La ligne de commande offre un contrôle fin pour l'administration serveur et la réplication de tâches : scripts reproductibles, exécution distante et intégration dans des chaînes d'automatisation (CI/CD). Comparée à une interface graphique comme phpMyAdmin, la CLI est souvent plus performante pour le traitement de gros volumes de données et permet de conserver l'historique exact des commandes. Les administrateurs apprécient la granularité d'attribution des privilèges et la possibilité d'utiliser des outils UNIX standards en complément. La plupart des commandes MySQL en CLI sont compatibles avec MariaDB, alternative courante à MySQL.

Différences entre MySQL en ligne de commande et phpMyAdmin

La comparaison aide à choisir l'outil adapté selon les tâches : MySQL en ligne de commande privilégie l'automatisation et la performance, tandis que l'interface graphique facilite l'exploration visuelle et l'apprentissage. Le tableau ci‑dessous résume les avantages respectifs.

Atout MySQL en ligne de commande (CLI) Interface graphique (phpMyAdmin)
Vitesse & scalabilité Meilleure pour gros volumes et scripts automatisés Peut devenir lente sur de grandes bases
Automatisation Scriptable (shell, CI/CD, mysqldump sauvegarde) Limitée ; nécessite souvent intervention manuelle
Facilité d'utilisation Courbe d'apprentissage plus raide Interface intuitive pour tâches ad hoc
Sécurité Contrôle fin des accès, évite exposition web Exposition potentielle via serveur web si mal configurée

Configuration de l'environnement

Pour exécuter les commandes depuis n'importe quel terminal, ajoutez l'exécutable mysql au PATH.

Sur Linux :

export PATH="$PATH:/usr/local/mysql/bin"
# ou pour une session persistante, ajoutez la ligne dans ~/.profile ou ~/.bashrc

Sur Windows :

Ajoutez le dossier C:\Program Files\MySQL\MySQL Server X.Y\bin aux variables d'environnement système → PATH via le panneau de configuration. Les chemins exacts peuvent varier selon l'installation.

Connexion via terminal Unix

En environnement Unix/Linux, la connexion peut se faire via socket local ou TCP. Exemple de connexion depuis l'invite de commande :

# connexion via hôte TCP
mysql -u utilisateur -p -h localhost -P 3306

# connexion via socket local (par défaut si -h non précisé)
mysql -u utilisateur -p

Pour forcer l'usage du socket ou d'un chemin spécifique, ajoutez --socket=/var/run/mysqld/mysqld.sock. Ces options s'appliquent au client mysql et à l'invite de commande pour l'administration serveur.

Le client mysql est pleinement compatible avec MariaDB : les mêmes commandes d'invite de commande, la syntaxe SQL et de nombreuses options d'administration serveur fonctionnent de façon interchangeable entre MySQL et MariaDB.

Astuce — Monique Vidal : activez l'auto-complétion avec la touche Tab dans le client mysql pour compléter les noms de bases, tables et colonnes ; cela accélère la saisie et réduit les erreurs.

Maîtriser l'import et l'export de données en console

L'import/export en ligne de commande facilite les sauvegardes, la migration et l'exécution de scripts. Pour exporter une base, on utilise notamment mysqldump pour obtenir un fichier SQL contenant la structure et les données. Pour importer un fichier SQL, deux méthodes courantes existent : la redirection shell ou la commande interne SOURCE du client.

# Export / sauvegarde avec mysqldump
mysqldump -u user -p --databases ma_base > sauvegarde.sql

# Import via redirection shell (exécuté depuis le shell)
mysql -u user -p database < /chemin/vers/script.sql

Ou, après connexion au client mysql :

# depuis le client mysql (invite mysql>)
mysql> SOURCE /chemin/vers/script.sql;

L'importation via la CLI est adaptée aux gros jeux de données et aux opérations automatisées, en garantissant un meilleur contrôle des options de format et de verrouillage.

Surveillance du serveur en CLI

Commandes de diagnostic utiles depuis l'invite de commande du client mysql pour vérifier l'état du serveur et les connexions actives :

-- Affiche l'état général du serveur et quelques métriques
mysql> status;

-- Liste les threads et requêtes en cours, utile pour repérer les blocages
mysql> SHOW PROCESSLIST;

La commande status; fournit des informations rapides (version, temps de connexion, threads, connexions), tandis que SHOW PROCESSLIST; aide à identifier les requêtes longues ou bloquées lors d'opérations d'administration serveur.

Différences de syntaxe entre MySQL et MariaDB en console

MySQL et MariaDB partagent une large compatibilité de syntaxe SQL et des mêmes outils de client, mais certaines fonctions avancées, moteurs de stockage ou extensions peuvent différer. En pratique, la plupart des commandes d'administration et d'invite de commande sont interchangeables, mais vérifiez la documentation lorsque vous utilisez des fonctionnalités récentes (par ex. certains moteurs ou fonctions JSON spécifiques). Pour les scripts d'automatisation destinés à la production, testez la syntaxe SQL sur la plateforme cible et notez toute différence avant déploiement.

Sécurisation des scripts d'automatisation SQL

Les scripts qui exécutent des commandes via l'invite de commande doivent être protégés : évitez de stocker des mots de passe en clair dans les scripts. Préférez les fichiers de configuration protégés (~/.my.cnf) ou utilisez l'option --defaults-extra-file pour fournir des identifiants sans les exposer sur la ligne de commande. Utilisez des comptes avec des privilèges limités pour les tâches automatisées et vérifiez les droits via des revues régulières. En outre, chiffrer les transferts (SSL/TLS) et restreindre l'accès réseau via firewall contribuent à durcir l'automatisation en production.

Exemples de commandes avancées

Commandes utiles pour l'exécution de scripts et l'importation incluent mysqldump pour les sauvegardes et mysqlimport pour des imports structurés. Ces opérations requièrent généralement des privilèges suffisants, parfois l'utilisateur root selon les options choisies.

Pour n'exporter que la structure (sans données), utilisez l'option --no-data avec mysqldump :

# Export structure seule
mysqldump -u user -p --no-data --databases ma_base > structure.sql

Cette option est utile pour générer des scripts de création de schéma destinés à la revue ou au versionnage sans inclure les enregistrements.

Sécuriser l'accès root en ligne de commande

Restreindre et durcir l'accès root est essentiel pour l'administration serveur. Mesures recommandées : désactiver les connexions root à distance, utiliser mysql_secure_installation pour verrouiller les comptes initiaux, créer un compte d'administration dédié et lui attribuer les privilèges nécessaires plutôt que d'utiliser systématiquement root. En production, privilégiez l'authentification via socket ou mécanismes d'authentification système, appliquez des règles réseau (firewall) et exiger l'usage de SSL/TLS pour les connexions distantes.

Résolution des erreurs fréquentes en console

  • Access denied for user 'root' : vérifier le nom d'utilisateur et le mot de passe, s'assurer que l'authentification utilisée (plugin auth) correspond à la configuration du serveur, et contrôler si la connexion est tentée via socket ou TCP. Utilisez mysql -u root -p --protocol=TCP -h 127.0.0.1 pour forcer TCP si nécessaire.
  • Le service mysqld n'est pas accessible : vérifiez que le service est lancé avec sudo systemctl status mysqld ou sudo service mysql status selon la distribution. En cas d'arrêt, consultez les logs (/var/log/mysql/ ou /var/log/mysqld.log) pour diagnostiquer l'erreur de démarrage.

❓ Foire Aux Questions (FAQ)

Comment se connecter à MySQL en ligne de commande ?
mysql -u root -p puis saisissez le mot de passe lorsque le prompt le demande.

Quelles sont les commandes de base à connaître ?
Parmi les commandes essentielles : SHOW DATABASES; pour lister les bases, CREATE DATABASE nom; pour créer une base, et DROP DATABASE nom; pour supprimer une base.

Comment exécuter un script SQL externe ?
Deux options courantes : depuis le shell mysql -u user -p database < script.sql, ou depuis le client mysql avec SOURCE /chemin/vers/script.sql;.

Comment quitter l'interface MySQL ?
Utilisez EXIT; ou QUIT; pour fermer le client mysql proprement.