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
?
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.
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...
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;
postgres
, recommandé).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
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;