Mam instancję AWS EC2 łączącą się z instancją RDS (Postgresql). Kiedy utworzyłem instancję RDS, powiedziałem, że nazwa użytkownika root DB to: my_user1
a hasło to password1
. Teraz próbuję stworzyć rolę i superużytkownika. Ale to się nie udaje:
$ 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
$
Kiedy powtarzam polecenie bez -s
flagi, działa:
$ 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;
$
Tak wyraźnie, my_user1
nie ma uprawnień do tworzenia superużytkownika. Ale to jest użytkownik, o którym powiedziałem, że RDS jest moim administratorem! Jeśli my_user1
nie ma uprawnień do tworzenia superużytkownika, to kto? Jak mogę uzyskać nazwę użytkownika / hasło z AWS?
amazon-web-services
postgresql
amazon-rds
Saqib Ali
źródło
źródło
Odpowiedzi:
Instancjami RDS zarządza Amazon. W związku z tym, aby zapobiec uszkodzeniu replikacji, użytkownicy - nawet użytkownik root skonfigurowany podczas tworzenia instancji - nie będą mieli pełnych uprawnień administratora.
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html
źródło
pg_dump
. Czy jest jakiś sposób na obejście tego z rds na aws?grant
przekazać rolę użytkownika db db.Jeśli podasz swoje obecne uprawnienia z
\du+
lub\dg+
, zauważysz, że nie jesteś superużytkownikiem, ale tylko dozwolone uprawnienia Utwórz rolę, Utwórz bazę danych . W związku z tym nie możesz przypisywać sobie uprawnień wyższych niż te, którym jesteś obecnie przypisany.Zwykle nie masz uprawnień administratora ani administratora w żadnym hostowanym środowisku. Sugeruję utworzenie niestandardowej instancji EC2 i zainstalowanie PostgreSQL lokalnie, aby uzyskać pełną kontrolę.
źródło