Ce guide présente une sélection de commandes MySQL couramment utilisées pour la gestion et l'administration des bases de données.
Gestion des Bases de Données et des Tables
Afficher les bases de données
SHOW DATABASES;
Afficher le port de la base de données
SHOW VARIABLES LIKE 'port';
Sélectionner une base de données
USE nom_de_la_base;
Afficher les tables d'une base de données
SHOW TABLES;
Afficher le contenu d'une table
SELECT * FROM nom_de_la_table;
Manipulation des Données
Mettre à jour une colonne spécifique dans une table
Cette commande modifie une valeur dans une colonne pour une ligne spécifique basée sur un critère.
UPDATE exemple_table
SET colonne_a_modifier = 'nouvelle_valeur'
WHERE identifiant_colonne = 'valeur_identifiant';
Suppression de Données et de Structures
DELETE: Supprime des lignes d'une table sans modifier la structure, les index ou les contraintes.
DELETE FROM nom_de_la_table;
TRUNCATE: Supprime toutes les lignes d'une table, réinitialise les compteurs auto-incrémentés et est généralement plus rapide queDELETEpour des tables volumineuses. La structure de la table reste intacte.
TRUNCATE TABLE nom_de_la_table;
DROP: Supprime définitivement une base de données ou une table entière, y compris sa structure et ses données.
DROP DATABASE nom_de_la_base;
DROP TABLE nom_de_la_table;
Requêtes d'Information Avancées
Afficher les tables d'une base de données spécifique
Utilisation de la table système information_schema.tables.
[root@localhost /]# mysql -u utilisateur -p'mot_de_passe' -e "SELECT table_name FROM information_schema.tables WHERE table_schema='nom_de_la_base'"
# Filtrage de la sortie pour une meilleure lisibilité
[root@localhost /]# mysql -u utilisateur -p'mot_de_passe' -e "SELECT table_name FROM information_schema.tables WHERE table_schema='nom_de_la_base'" | awk '!/table_name/ {print $1}'
Compter le nombre de lignes dans une table
SELECT COUNT(*) FROM nom_de_la_table;
Modification de la Structure des Tables
Ajouter une colonne
La syntaxe générale est : ALTER TABLE table_name ADD COLUMN column_name column_definition [FIRST | AFTER existing_column];
-- Ajout d'une colonne 'age' de type INT à la table 'demo'
ALTER TABLE demo ADD COLUMN age INT;
-- Ajout d'une colonne 'date_embauche' de type DATE avec une valeur par défaut à la table 'demo'
ALTER TABLE demo ADD COLUMN date_embauche DATE DEFAULT CURRENT_DATE;
-- Ajout d'une colonne 'departement' après la colonne 'nom' dans la table 'demo'
ALTER TABLE demo ADD COLUMN departement VARCHAR(50) AFTER nom;
-- Ajout d'une colonne 'id_employe' de type INT en première position dans la table 'demo'
ALTER TABLE demo ADD COLUMN id_employe INT FIRST;
Supprimer une colonne
La syntaxe générale est : ALTER TABLE table_name DROP COLUMN column_name;
-- Suppression de la colonne 'age' de la table 'demo'
ALTER TABLE demo DROP COLUMN age;
-- Suppression de plusieurs colonnes
ALTER TABLE demo DROP COLUMN age, DROP COLUMN nom;
Modifier le type d'une colonne
La syntaxe générale est : ALTER TABLE table_name MODIFY COLUMN column_name new_column_definition;
-- Modification du type de la colonne 'salaire' en DECIMAL(10, 2) dans la table 'demo'
ALTER TABLE demo MODIFY COLUMN salaire DECIMAL(10, 2);
Renommer et modifier une colonne
La syntaxe générale est : ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name new_column_definition;
-- Renommer 'date_embauche' en 'date_debut' et changer son type en DATETIME dans la table 'demo'
ALTER TABLE demo CHANGE COLUMN date_embauche date_debut DATETIME;
Inspection des Tables
Afficher la structure d'une table (colonnes)
Trois méthodes équivalentes :
DESCRIBE nom_de_la_table;
DESC nom_de_la_table;
SHOW COLUMNS FROM nom_de_la_table;
Gestion des Événements
Afficher les événements d'une base de données
-- Afficher les événements pour la base de données 'demo'
SHOW EVENTS FROM `demo`;
-- Alternative via information_schema
SELECT *
FROM `information_schema`.`EVENTS`
WHERE `EVENT_SCHEMA` = 'demo';
Suppression de Lignes Spécifiques
Supprimer un intervalle de lignes basé sur un identifiant ordonné
-- Supprimer les lignes dont l'ID est compris entre 1 et 45 dans la table 'utilisateur'
DELETE FROM utilisateur WHERE id BETWEEN 1 AND 45;
Sauvegarde et Restauration
Sauvegarder une base de données
mysqldump -u utilisateur -p'mot_de_passe' nom_de_la_base > fichier_sauvegarde.sql
Restaurer une base de données
mysql -u utilisateur -p'mot_de_passe' nom_de_la_base < fichier_sauvegarde.sql
Gestion des Uitlisateurs et Permissions
Créer un utilisateur avec des privilèges d'administrateur
-- Création de l'utilisateur 'nouvel_utilisateur' avec mot de passe 'mot_de_passe_securise'
CREATE USER 'nouvel_utilisateur'@'localhost' IDENTIFIED BY 'mot_de_passe_securise';
-- Octroi de tous les privilèges sur toutes les bases et tables
GRANT ALL PRIVILEGES ON *.* TO 'nouvel_utilisateur'@'localhost' WITH GRANT OPTION;
-- Actualisation des privilèges pour qu'ils prennent effet
FLUSH PRIVILEGES;
-- Pour accorder des privilèges sur une base spécifique :
-- GRANT ALL PRIVILEGES ON nom_de_la_base.* TO 'nouvel_utilisateur'@'localhost' WITH GRANT OPTION;
-- Pour accorder des privilèges sur une table spécifique :
-- GRANT ALL PRIVILEGES ON nom_de_la_base.nom_de_la_table TO 'nouvel_utilisateur'@'localhost' WITH GRANT OPTION;
'localhost'peut être remplacé par'%'pour autoriser les connexions depuis n'imoprte où, ou par une adresse IP spécifique.WITH GRANT OPTIONpermet à l'utilisateur d'accorder ses privilèges à d'autres.
Configuration de l'Accès à Distance
Autorsier les connexions depuis n'importe quelle adresse IP
-- Sélectionner la base de données mysql pour les modifications de privilèges
USE mysql;
-- Afficher les utilisateurs et leurs hôtes autorisés (pour vérification)
SELECT user, host FROM user;
-- Modifier l'hôte pour permettre la connexion depuis n'importe où ('%') pour un utilisateur spécifique
UPDATE user SET host='%' WHERE user='nom_utilisateur_a_modifier';
-- Actualiser les privilèges
FLUSH PRIVILEGES;
-- Pour les versions de MariaDB 10.4+ utilisant mysql.global_priv :
UPDATE mysql.global_priv SET host='%' WHERE user='nom_utilisateur_a_modifier';
FLUSH PRIVILEGES;
Vérification des Paramètres Système
Paramètres de connexion et de timeout
-- Délai d'attente de connexion
SHOW VARIABLES LIKE 'connect_timeout';
-- Délai d'attente avant fermeture d'une connexion inactive
SHOW VARIABLES LIKE 'wait_timeout';
-- Délai d'attente de lecture réseau
SHOW VARIABLES LIKE 'net_read_timeout';
-- Délai d'attente d'écriture réseau
SHOW VARIABLES LIKE 'net_write_timeout';
-- Délai d'attente pour l'acquisition d'un verrou de ligne dans InnoDB
SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';