Eu tenho uma instância do AWS EC2 conectando-se a uma instância do RDS (Postgresql). Quando criei a instância do RDS, eu disse que o nome de usuário da raiz do banco de dados era: my_user1
e a senha era password1
. Agora estou tentando criar uma função e um superusuário. Mas falha:
$ 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
$
Quando repito o comando sem a -s
bandeira, ele funciona:
$ 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;
$
Claramente, my_user1
não tem permissões para criar um superusuário. Mas este é o usuário que eu disse que o RDS era meu usuário administrador! Se my_user1
não tem permissões para criar um superusuário, quem tem? E como obtenho o nome de usuário / senha da AWS?
amazon-web-services
postgresql
amazon-rds
Saqib Ali
fonte
fonte
Respostas:
Instâncias RDS são gerenciadas pela Amazon. Assim, para impedir que você quebre coisas como replicação, seus usuários - mesmo o usuário raiz que você configurou ao criar a instância - não terão privilégios completos de superusuário.
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html
fonte
pg_dump
. Existe uma maneira de contornar isso com rds em aws?grant
a função de proprietário do banco de dados para o seu usuário.Se você listar suas permissões atuais com
\du+
ou\dg+
, notará que você não é um superusuário, mas apenas permissões permitidas Criar função, Criar banco de dados . Como tal, você não tem permissão para atribuir a si próprio permissões mais altas daquelas com as quais você está atualmente atribuído.Normalmente você não recebe permissões de root ou superusuário em nenhum ambiente hospedado. Eu sugiro que você crie uma instância personalizada do EC2 e instale o PostgreSQL localmente para ter controle completo.
fonte