Чому я не можу створити суперпользователя в екземплярі AWS Postgresql?


16

У мене є екземпляр 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?


чи відповідає pg_hba.conf схема аутентифікації одноранкою для місцевих користувачів?
drookie

Drookie, це файл у самому екземплярі RDS? Я ще навіть не ввійшов до цієї машини.
Сакіб Алі

@SaqibAli Ви не можете SSH в екземпляр RDS.
ceejayoz

Відповіді:


23

Екземплярами RDS керує Amazon. Таким чином, щоб запобігти вам порушити такі речі, як реплікація, ваші користувачі - навіть кореневий користувач, якого ви створили під час створення екземпляра - не матимуть повних привілеїв суперпользователя.

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html

Коли ви створюєте екземпляр DB, основний обліковий запис користувача, який ви створюєте, присвоюється ролі rds_superuser. Роль rds_superuser - це заздалегідь визначена роль RDS Amazon, подібна до ролі суперрузера PostgreSQL (звичайно названих поштових скринь в локальних екземплярах), але з деякими обмеженнями. Як і у випадку надгрупової ролі PostgreSQL, роль rds_superuser має найбільше привілеїв у вашому екземплярі DB, і ви не повинні призначати цю роль користувачам, якщо їм не потрібен найбільший доступ до екземпляра БД.


6
Я не можу створити резервну копію моєї бази даних без використання прапора супер користувача pg_dump. Чи є спосіб обходити це за допомогою rds на aws?
chovy

@chovy, спробуйте grantроль власника db своєму користувачеві.
Спайк

3

Якщо ви перерахуєте свої поточні дозволи з \du+або \dg+, ви помітите, що ви не суперпользователь, а лише дозволені дозволи Створити роль, Створити БД . Як такий, вам не дозволяється призначати собі дозволи, вищі від тих, яким ви зараз призначені.

Зазвичай вам не надаються права доступу до кореневих або надрукованих користувачів у будь-якому розміщеному середовищі. Я пропоную вам створити спеціальний екземпляр EC2 та встановити PostgreSQL локально для повного контролю.


2
чи дійсно немає можливості створити резервну копію бази даних amazon rds за допомогою pg_dump в іншому випадку?
chovy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.