Présentation
L'administration d'une base de données nécessite la suppression de comptes d'utilisateurs, en particulier si un compte d'utilisateur n'est plus nécessaire. La suppression d'utilisateurs Postgres inutiles est une pratique essentielle de sécurité des bases de données. Cette action supprime également un point d'accès potentiellement invisible pour les pirates.
Ce didacticiel explique comment supprimer un utilisateur Postgres de plusieurs manières.
Prérequis
- Accès à la ligne de commande ou au terminal avec les privilèges sudo.
- Postgres installé, de préférence la dernière version.
- Utilisateurs Postgres à supprimer. Suivez notre tutoriel pour créer des utilisateurs Postgres à des fins de test.
Supprimer un utilisateur Postgres
Un utilisateur dans PostgreSQL a des privilèges de connexion par défaut. Il existe deux méthodes pour supprimer un utilisateur, et les deux nécessitent l'accès au CREATEROLE
droits. Pour supprimer un superutilisateur, le SUPERUSER
le privilège est obligatoire.
Les postgres L'utilisateur créé lors de l'installation dispose par défaut de tous les privilèges nécessaires. Les exemples ci-dessous utilisent le postgres utilisateur pour se connecter à PostgreSQL.
Méthode 1 :supprimer un utilisateur Postgres avec l'utilitaire dropuser
Postgres propose un utilitaire client pour supprimer un utilisateur sans se connecter à l'interface de ligne de commande PSQL.
Pour supprimer un utilisateur dans Postgres avec dropuser
, exécutez la commande suivante dans le terminal :
sudo -u postgres dropuser <user> -e
Vous pouvez également diviser la commande en deux étapes :
1. Basculez vers postgres utilisateur (ou un autre utilisateur avec les privilèges corrects) :
sudo su - postgres
2. Exécutez la commande dropuser :
dropuser <name> -e
Dans les deux cas, Postgres supprime l'utilisateur.
Méthode 2 :supprimer un utilisateur Postgres avec l'instruction DROP USER
Une autre façon de supprimer un utilisateur d'une base de données Postgres consiste à utiliser une instruction PSQL.
Pour supprimer un utilisateur, suivez les étapes ci-dessous :
1. Connectez-vous au client PSQL via le terminal avec la commande suivante :
sudo -u postgres psql
Le terminal passe à la console PSQL (postgres=#
).
2. Listez tous les utilisateurs et rôles avec :
\du
Localisez l'utilisateur à supprimer et utilisez le nom à l'étape suivante.
3. Exécutez la requête suivante pour supprimer un utilisateur :
DROP USER <name>;
Sinon, pour vérifier si un utilisateur existe avant de le supprimer, saisissez :
DROP USER IF EXISTS <name>;
Le client notifie si le rôle est inexistant.
4. Affichez à nouveau la liste des utilisateurs pour confirmer que l'utilisateur est parti :
\du
L'utilisateur ne figure plus dans la liste des rôles. Cette sortie indique une suppression réussie.
Supprimer plusieurs utilisateurs Postgres
Le client PSQL permet de supprimer plusieurs utilisateurs Postgres à la fois. Les instructions ci-dessous expliquent comment se connecter au client PostgreSQL et supprimer plusieurs utilisateurs.
1. Connectez-vous au client PSQL avec :
sudo -u postgres psql
2. Listez tous les utilisateurs avec :
\du
Localisez les utilisateurs à supprimer et utilisez les noms à l'étape suivante.
3. Supprimez plusieurs utilisateurs Postgres en séparant les utilisateurs individuels par une virgule :
DROP USER [IF EXISTS] <name>, <name>, ... <name>;
La commande supprime plusieurs rôles à la fois. Ajouter IF EXISTS
pour ignorer les utilisateurs qui ne sont pas disponibles.
4. Revérifiez la liste des utilisateurs pour confirmer que tous les rôles sont supprimés :
\du
Les utilisateurs supprimés ne figurent plus dans la liste.
Supprimer un utilisateur Postgres avec des dépendances
La tentative de suppression d'un utilisateur Postgres avec des dépendances échoue et affiche une erreur.
Pour supprimer l'utilisateur en toute sécurité, procédez comme suit :
1. Attribuez la propriété de l'objet du détail de l'erreur à un autre utilisateur. Par exemple, pour transférer les objets appartenant à monutilisateur à postgres , exécutez :
REASSIGN OWNED BY myuser TO postgres;
La requête change la propriété de l'objet en postgres utilisateur.
2. Supprimez les connexions d'objet de base de données à l'utilisateur avec :
DROP OWNED BY myuser;
Cette étape supprime également tous les privilèges dont dispose l'utilisateur sur l'objet.
3. Pour le moment, l'utilisateur n'a plus de dépendances. Pour supprimer l'utilisateur, exécutez :
DROP USER myuser;
Comme aucune dépendance n'existe, la suppression est réussie.
Supprimer un rôle Postgres
Pour supprimer un rôle Postgres, exécutez la commande suivante dans le client PSQL :
DROP ROLE [IF EXISTS] <name>;
Le DROP USER
instruction est un alias pour DROP ROLE
. Les utilisateurs Postgres sont des rôles avec LOGIN
autorisations. Par conséquent, DROP USER
et DROP ROLE
sont interchangeables et fonctionnent à la fois pour les utilisateurs et les rôles.