web-dev-qa-db-fra.com

Accorder à un compte utilisateur l'autorisation de créer des bases de données dans PostgreSQL

Comment donner à un compte utilisateur dans PostgreSQL la possibilité de créer et de supprimer des bases de données? Existe-t-il un moyen de le faire avec GRANT?

148
GSto

C'est fait avec ALTER USER username CREATEDB;

Voir ALTER USER dans le doc .

Pour supprimer une base de données, vous êtes soit superutilisateur (ce qui peut être accordé avec ALTER USER aussi) ou vous devez posséder la base de données.

191
Daniel Vérité

Tout d'abord, vous devez vous connecter en tant qu'utilisateur postgres:

$ Sudo -u postgres psql postgres

# \password postgres

Enter new password:

Après avoir entré un nouveau mot de passe pour l'utilisateur postgres (type spécial d'utilisateur sur PostgreSQL), vous êtes maintenant connecté en tant que postgres et vous pouvez accorder l'autorisation à d'autres utilisateurs. Supposons que l'utilisateur ait nommé user1. Pour lui accorder la possibilité de créer et de supprimer des bases de données, vous devez écrire (en tant qu'utilisateur postgres):

ALTER USER user1 CREATEDB;

J'espère que cela t'aides...

37
Tomislav

Créez un utilisateur depuis le début avec les autorisations CREATEROLE et CREATEDB

Après vous être connecté au serveur PG avec le client de ligne de commande, avec un utilisateur disposant des droits appropriés pour créer des utilisateurs (comme le postgres user, qui par défaut sous UNIX peut être facilement emprunté par le super utilisateur du système avec $ Sudo -u postgres psql postgres):

CREATE ROLE user_name PASSWORD 'tYPe_YoUr_PaSSwOrD' NOSUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
  • NOSUPERUSER - l'utilisateur en cours de création n'a pas de droits de superutilisateur (comme l'utilisateur postgres, recommandé).
  • CREATEDB - l'utilisateur en cours de création peut créer des bases de données dont il sera propriétaire.
  • CREATEROLE - l'utilisateur en cours de création peut créer des rôles (connexions) pour les objets dont il est propriétaire ou auxquels il a un accès spécifique (comme les bases de données qu'il a créées).
  • HÉRITER - l'utilisateur en cours de création hérite de certaines options par défaut, facultatives.
  • CONNEXION - l'utilisateur en cours de création a le droit de se connecter.

Les binaires PG (applications) peuvent également être utilisés. Par exemple, le SQL ci-dessus équivaut à exécuter:

Sudo -u postgres createuser --createdb --createrole --pwprompt user_name

Accorder des droits d'utilisateur existants pour créer une base de données

Après vous être connecté au serveur PG avec le client de ligne de commande, avec un utilisateur disposant des droits appropriés pour modifier les utilisateurs (comme le postgres user, qui par défaut sous UNIX peut être facilement emprunté par le super utilisateur du système avec $ Sudo -u postgres psql postgres):

ALTER USER user_name CREATEDB;

ou, pour donner les mêmes droits que les exemples ci-dessus:

ALTER USER user_name CREATEDB CREATEROLE LOGIN;
0