PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment changer un utilisateur en superutilisateur dans PostgreSQL

  • Création d'un nouvel utilisateur
  • Affichage des autorisations utilisateur existantes
  • Modifier les autorisations des utilisateurs existants
    • Attribuer SUPERUSER Autorisation
    • Révocation des autorisations

La modification des autorisations des utilisateurs dans PostgreSQL peut aller de plutôt simple à extrêmement complexe, selon la granularité permissive réellement requise. Dans la plupart des cas, cependant, il s'agit du puissant ALTER USER commande qui doit être utilisée pour tout faire, depuis permettre aux utilisateurs de se connecter, de créer des bases de données, de gérer des rôles et même de devenir un SUPERUSER compte.

Nous allons brièvement explorer la puissance de ALTER USER afin que vous puissiez facilement effectuer diverses attributions et suppressions d'autorisations en fonction des besoins.

Création d'un nouvel utilisateur

Avant de commencer à modifier autorisations utilisateur, nous devons créer un nouveau compte utilisateur (communément appelé ROLE ) pour s'amuser avec.

Pour commencer, nous allons lister tous les utilisateurs existants :

=# SELECT usename FROM pg_user;
 usename
----------
 postgres
(1 row)

Par défaut, postgres est généralement le seul utilisateur qui existe, nous voulons donc créer un nouvel utilisateur de librarian pour contrôler notre library base de données. Cela peut être accompli en utilisant le CREATE USER commande :

=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
  usename
-----------
 postgres
 librarian
(2 rows)

Afficher les autorisations des utilisateurs existants

Il peut souvent être utile d'examiner les autorisations existantes attribuées aux utilisateurs dans le système. Cela peut facilement être accompli avec le \du commande de psql invite :

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Nous pouvons clairement voir que même si nous avons maintenant ajouté un nouveau librarian utilisateur, nous devons lui attribuer des autorisations.

Modifier les autorisations des utilisateurs existants

Maintenant que notre librarian l'utilisateur existe, nous pouvons commencer à utiliser ALTER USER pour modifier les permissions accordées à librarian .

Le format de base de ALTER USER inclut le nom de l'utilisateur (ou ROLE ) suivi d'une série d'options pour informer PostgreSQL des modifications permissives à apporter :

=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;

Ces options vont de CREATEDB , CREATEROLE , CREATEUSER , et même SUPERUSER . De plus, la plupart des options ont également une contrepartie négative, informant le système que vous souhaitez refuser l'utilisateur cette autorisation particulière. Ces noms d'options sont les mêmes que leurs homologues d'affectation, mais sont préfixés par NO (par exemple NOCREATEDB , NOCREATEROLE , NOSUPERUSER ).

Attribution de SUPERUSER Autorisation

Maintenant que nous comprenons les bases de la création d'utilisateurs et de l'utilisation de ALTER USER pour modifier les permissions, on peut tout simplement utiliser le SUPERUSER possibilité d'affecter notre librarian utilisateur SUPERUSER autorisation :

=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE

Effectivement, si nous affichons notre liste d'autorisations maintenant, nous verrons librarian a le nouveau SUPERUSER autorisation que nous voulons :

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian | Superuser                                      | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Révocation des autorisations

Si nous commettons une erreur et attribuons une autorisation que nous souhaitons révoquer ultérieurement, émettez simplement le même ALTER USER commande mais ajoutez le NO préfixe devant les options permissives à révoquer.

Par exemple, nous pouvons supprimer SUPERUSER de notre librarian utilisateur comme ceci :

=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}