Aller au contenu

Gestion des utilisateurs dans MySQL

Pour se connecter et interagir avec MySQL, chaque utilisateur doit disposer d'informations de connexion valides (nom d'utilisateur et mot de passe) ainsi que de privilèges déterminés pour accéder et manipuler la base de données. Ces informations sont stockées dans plusieurs tables système de MySQL.

Tables de privilèges

  • user : contient les informations de base sur les utilisateurs.
  • db, tables_priv, columns_priv, proc_priv : stockent les détails des privilèges sur les bases de données, tables, colonnes et procédures.

Il est recommandé d'utiliser des commandes SQL spécifiques pour gérer ces privilèges plutôt que de modifier directement les tables.

Création d'un utilisateur

Utilisez la commande CREATE USER pour créer un nouveau compte utilisateur. Vous pouvez spécifier le nom de l'utilisateur, l'hôte depuis lequel ils peuvent se connecter, et leur mot de passe. L'hôte peut être spécifié pour restreindre d'où l'utilisateur peut se connecter. Utiliser % permet une connexion depuis n'importe quel hôte.

CREATE USER IF NOT EXISTS 'nomUtilisateur'@'hôte' IDENTIFIED BY 'motDePasse';

Exemples

CREATE USER IF NOT EXISTS 'luc'@'localhost' IDENTIFIED BY 'qwerty4ever';
CREATE USER IF NOT EXISTS 'ray' IDENTIFIED BY 'qwerty4ever';
CREATE USER IF NOT EXISTS 'patate'@'156.20.12.2' IDENTIFIED BY 'qwerty4ever';

-- Permettre à un utilisateur de se connecter depuis n'importe quel hôte commençant par 156.20.12
CREATE USER IF NOT EXISTS 'luc'@'156.20.12.%' IDENTIFIED BY 'qwerty4ever';

-- Permettre une connexion depuis n'importe quel hôte
CREATE USER IF NOT EXISTS 'luc'@'%' IDENTIFIED BY 'qwerty4ever';

Modification du nom d'un utilisateur

Pour changer le nom d'un utilisateur existant, utilisez RENAME USER :

RENAME USER 'luc'@'localhost' TO 'lucie'@'localhost';

Suppression d'un utilisateur

Utilisez DROP USER pour supprimer un utilisateur :

DROP USER 'luc'@'localhost';

Afficher la liste des utilisateurs

MySQL ne possède pas de commande SHOW USERS. Pour voir la liste des utilisateurs, vous pouvez exécuter une requête SELECT sur la table user dans la base de données mysql :

SELECT User, Host FROM mysql.user;

Cette requête affiche tous les utilisateurs et les hôtes associés, permettant ainsi de visualiser qui peut accéder au serveur MySQL.