Tengo una instancia de AWS EC2 que se conecta a una instancia de RDS (Postgresql). Cuando creé la instancia de RDS, le dije que el nombre de usuario de la raíz de la base de datos era: my_user1
y que la contraseña era password1
. Ahora estoy intentando crear un rol y un superusuario. Pero falla:
$ 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
$
Cuando repito el comando sin la -s
bandera, 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
no tiene permisos para crear un superusuario. ¡Pero este es el usuario que le dije a RDS que era mi usuario administrador! Si my_user1
no tiene permisos para crear un superusuario, ¿quién sí? ¿Y cómo obtengo su nombre de usuario / contraseña de AWS?
amazon-web-services
postgresql
amazon-rds
Saqib Ali
fuente
fuente
Respuestas:
Las instancias de RDS son administradas por Amazon. Como tal, para evitar que rompa cosas como la replicación, sus usuarios, incluso el usuario raíz que configuró al crear la instancia, no tendrán privilegios completos de superusuario.
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html
fuente
pg_dump
. ¿Hay alguna forma de evitar esto con rds en aws?grant
el rol de propietario de db a tu usuario.Si enumera sus permisos actuales con
\du+
o\dg+
, notará que no es un superusuario sino que solo tiene permisos permitidos Crear rol, Crear DB . Como tal, no puede asignarse permisos superiores a los que tiene asignados actualmente.Normalmente no se le otorgan permisos de root o superusuario en ningún entorno alojado. Le sugiero que active una instancia EC2 personalizada e instale PostgreSQL localmente para un control completo.
fuente