У меня есть экземпляр AWS EC2, подключающийся к экземпляру RDS (Postgresql). Когда я создал экземпляр RDS, я сказал ему, что имя пользователя корня БД было: my_user1
и пароль был password1
. Сейчас я пытаюсь создать роль и супер-пользователя. Но это не удается:
$ 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
$
Когда я повторяю команду без -s
флага, она работает:
$ 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;
$
Очевидно, что у my_user1
него нет прав для создания суперпользователя. Но это тот пользователь, которому я сказал, что RDS был моим администратором! Если у my_user1
вас нет прав на создание суперпользователя, кто это делает? И как я могу получить их имя пользователя / пароль от AWS?
amazon-web-services
postgresql
amazon-rds
Сакиб Али
источник
источник
Ответы:
Экземпляры RDS управляются Amazon. Таким образом, чтобы предотвратить нарушение таких функций, как репликация, ваши пользователи - даже пользователь root, который вы установили при создании экземпляра - не будут иметь полных привилегий суперпользователя.
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html
источник
pg_dump
. Есть ли способ обойти это с RDS на AWS?grant
роль владельца db для своего пользователя.Если вы перечислите свои текущие права доступа с помощью
\du+
или\dg+
, вы заметите, что вы не являетесь суперпользователем, а только разрешены разрешения Создать роль, Создать базу данных . Таким образом, вы не можете назначать себе разрешения выше тех, которые вам назначены в настоящее время.Обычно вам не предоставляются права root или суперпользователя в любой размещенной среде. Я предлагаю вам раскрутить пользовательский экземпляр EC2 и установить PostgreSQL локально для полного контроля.
источник