Ich habe eine AWS EC2-Instanz, die eine Verbindung zu einer RDS-Instanz (Postgresql) herstellt. Als ich die RDS-Instanz erstellte, teilte ich ihr mit, dass der Benutzername des Datenbankstamms: my_user1
und das Kennwort : lauten password1
. Jetzt versuche ich, eine Rolle und einen Superuser zu erstellen. Aber es schlägt fehl:
$ 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
$
Wenn ich den Befehl ohne -s
Flag wiederhole , funktioniert es:
$ 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;
$
Also klar, my_user1
hat keine Berechtigungen, um einen Super-User zu erstellen. Aber dies ist der Benutzer, dem ich gesagt habe, dass RDS mein Administrator ist! Wer my_user1
hat keine Berechtigung zum Erstellen eines Super-Users? Und wie erhalte ich ihren Benutzernamen / ihr Passwort von AWS?
amazon-web-services
postgresql
amazon-rds
Saqib Ali
quelle
quelle
Antworten:
RDS-Instanzen werden von Amazon verwaltet. Um zu verhindern, dass Sie Dinge wie die Replikation beschädigen, haben Ihre Benutzer - selbst der Root-Benutzer, den Sie beim Erstellen der Instanz eingerichtet haben - keine vollständigen Superuser-Berechtigungen.
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html
quelle
pg_dump
. Gibt es einen Weg, dies mit RDS auf AWS zu umgehen?grant
Sie Ihrem Benutzer die DB- Eigentümerrolle zuzuweisen .Wenn Sie Ihre aktuellen Berechtigungen mit
\du+
oder\dg+
auflisten, werden Sie feststellen, dass Sie kein Superuser sind, sondern nur Berechtigungen. Rolle erstellen, DB erstellen . Aus diesem Grund dürfen Sie sich keine höheren Berechtigungen zuweisen als die, denen Sie derzeit zugewiesen sind.Normalerweise erhalten Sie in keiner gehosteten Umgebung Root- oder Superuser-Berechtigungen. Ich schlage vor, Sie starten eine benutzerdefinierte EC2-Instanz und installieren PostgreSQL lokal, um die vollständige Kontrolle zu haben.
quelle