Perché non riesco a creare un superutente nell'istanza di AWS Postgresql?


15

Ho un'istanza AWS EC2 che si collega a un'istanza RDS (Postgresql). Quando ho creato l'istanza RDS, le ho detto che il nome utente della radice DB era: my_user1e la password era password1. Ora sto cercando di creare un ruolo e un superutente. Ma fallisce:

$ 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
$

Quando ripeto il comando senza la -sbandiera, funziona:

$ 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;
$

Quindi, chiaramente, my_user1non ha i permessi per creare un superutente. Ma questo è l'utente a cui ho detto che RDS era il mio utente amministratore! Se my_user1non dispone delle autorizzazioni per creare un superutente, chi lo fa? E come posso ottenere il loro nome utente / password da AWS?


pg_hba.conf dice che lo schema di autenticazione è peer per gli utenti locali?
drookie il

Drookie, questo file si trova sull'istanza RDS stessa? Non ho ancora SSHed su quella macchina ancora.
Saqib Ali,

@SaqibAli Non è possibile SSH in un'istanza RDS.
Ceejayoz,

Risposte:


23

Le istanze RDS sono gestite da Amazon. Pertanto, per impedirti di interrompere cose come la replica, i tuoi utenti - anche l'utente root che hai impostato quando crei l'istanza - non avranno i privilegi di superutente.

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

Quando si crea un'istanza DB, l'account di sistema dell'utente principale creato viene assegnato al ruolo rds_superuser. Il ruolo rds_superuser è un ruolo Amazon RDS predefinito simile al ruolo superutente PostgreSQL (di solito postgres nelle istanze locali), ma con alcune restrizioni. Come per il ruolo superutente di PostgreSQL, il ruolo rds_superuser ha il maggior numero di privilegi sull'istanza DB e non è necessario assegnare questo ruolo agli utenti a meno che non necessitino del massimo accesso all'istanza DB.


6
non riesco a fare il backup del mio database senza l'utilizzo del flag super user pg_dump. C'è un modo per aggirare questo con rds su aws?
Chovy

@chovy, prova a inserire grantil ruolo di proprietario del db nel tuo utente.
Spike,

3

Se elenchi le tue autorizzazioni correnti con \du+o \dg+, noterai che non sei un superutente ma solo le autorizzazioni consentite Crea ruolo, Crea DB . Di conseguenza, non ti è consentito assegnare autorizzazioni superiori a quelle attualmente assegnate.

Normalmente non ti vengono concesse le autorizzazioni di root o superutente in nessun ambiente ospitato. Ti suggerisco di creare un'istanza EC2 personalizzata e installare PostgreSQL localmente per un controllo completo.


2
non c'è davvero alcun modo per eseguire il backup di un database rds amazon con pg_dump altrimenti?
succulento
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.