J'ai une instance AWS EC2 connectée à une instance RDS (Postgresql). Quand j'ai créé l'instance RDS, je lui ai dit que le nom d'utilisateur de la racine DB était: my_user1
et le mot de passe password1
. Maintenant, j'essaie de créer un rôle et un super-utilisateur. Mais cela échoue:
$ createuser -P -d -s -e my_user2 --host myhost.com -U my_user1
Enter password for new role: XXXYYYZZZ
Enter it again: XXXYYYZZZ
Password: password1
CREATE ROLE my_user2 PASSWORD 'md5999999c0101a1d64afd57575e06f999c' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
createuser: creation of new role failed: ERROR: must be superuser to create superusers
$
Lorsque je répète la commande sans le -s
drapeau, cela fonctionne:
$ createuser -P -d -e my_user2 --host myhost.com -U my_user1
Enter password for new role:
Enter it again:
Password:
CREATE ROLE my_user2 PASSWORD 'md5999999c0101a1d64afd57575e06f888c' NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN;
$
Donc, clairement, my_user1
n'a pas les autorisations pour créer un super-utilisateur. Mais c'est l'utilisateur à qui j'ai dit que RDS était mon utilisateur administrateur! Si my_user1
n'a pas les autorisations pour créer un super-utilisateur, qui en a? Et comment puis-je obtenir leur nom d'utilisateur / mot de passe auprès d'AWS?
amazon-web-services
postgresql
amazon-rds
Saqib Ali
la source
la source
Réponses:
Les instances RDS sont gérées par Amazon. En tant que tel, pour vous empêcher de casser des choses comme la réplication, vos utilisateurs - même l'utilisateur root que vous avez configuré lors de la création de l'instance - ne disposeront pas des privilèges de superutilisateur complets.
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html
la source
pg_dump
. Y a-t-il un moyen de contourner cela avec rds sur aws?grant
le rôle de propriétaire db à votre utilisateur.Si vous répertoriez vos autorisations actuelles avec
\du+
ou\dg+
, vous remarquerez que vous n'êtes pas un superutilisateur mais uniquement des autorisations autorisées Créer un rôle, Créer une base de données . En tant que tel, vous n'êtes pas autorisé à vous attribuer des autorisations supérieures à celles qui vous sont actuellement attribuées.Normalement, vous ne disposez d'aucune autorisation root ou superutilisateur dans un environnement hébergé. Je vous suggère de faire tourner une instance EC2 personnalisée et d'installer PostgreSQL localement pour un contrôle complet.
la source