Neden AWS Postgresql örneğinde bir süper kullanıcı oluşturamıyorum?


16

RDS örneğine (Postgresql) bağlanan bir AWS EC2 örneği var. RDS örneğini oluşturduğumda, DB kökünün kullanıcı adının: my_user1ve parola olduğunu söyledim password1. Şimdi bir rol ve süper kullanıcı yaratmaya çalışıyorum. Ama başarısız oluyor:

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

Komutu bayraksız olarak tekrarladığımda -sçalışır:

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

Açıkçası, my_user1süper kullanıcı oluşturma izniniz yok. Ama bu RDS'nin benim yönetici kullanıcı olduğunu söylediğim kullanıcı! Eğer my_user1bir süper-kullanıcı oluşturmak için izinleri yok, kim yapar? Kullanıcı adlarını / şifrelerini AWS'den nasıl alabilirim?


.conf, kimlik doğrulama şemasının yerel kullanıcılar için eş olduğunu söylüyor?
drookie

Drookie, bu dosya RDS örneğinin kendisinde mi? Henüz bu makineye SSH bile girmedim.
Saqib Ali

@SaqibAli Bir RDS örneğinde SSH yapamazsınız.
ceejayoz

Yanıtlar:


23

RDS örnekleri Amazon tarafından yönetilir. Bu nedenle, çoğaltma gibi şeyleri kırmanızı önlemek için, kullanıcılarınız - örneği oluştururken ayarladığınız kök kullanıcı bile - tam süper kullanıcı ayrıcalıklarına sahip olmayacaktır.

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

Bir DB örneği oluşturduğunuzda, oluşturduğunuz ana kullanıcı sistemi hesabı rds_superuser rolüne atanır. Rds_superuser rolü, PostgreSQL süper kullanıcı rolüne (yerel durumlarda normalde postgres olarak adlandırılır) benzer, ancak bazı kısıtlamalarla önceden tanımlanmış bir Amazon RDS rolüdür. PostgreSQL süper kullanıcı rolünde olduğu gibi, rds_superuser rolü DB örneğinizde en fazla ayrıcalığa sahiptir ve DB örneğine en fazla erişime ihtiyaç duymadıkça bu rolü kullanıcılara atamamalısınız.


6
süper kullanıcı bayrağını kullanmadan veritabanımı yedekleyemiyorum pg_dump. Aws üzerinde rds ile bunun bir yolu var mı?
chovy

@chovy, grantkullanıcı için db sahibi rolünü deneyin .
Spike

3

Geçerli izinlerinizi \du+veya ile listelerseniz, \dg+bir süper kullanıcı olmadığınızı ancak yalnızca izin verilen izinler rol oluştur, DB oluştur olduğunu fark edersiniz . Bu nedenle, kendinize şu anda atanmış olduğunuz izinlerden daha yüksek izinler atamanıza izin verilmez.

Normalde, barındırılan herhangi bir ortamda kök veya süper kullanıcı izinleri verilmez. Tam bir kontrol için özel bir EC2 örneği döndürmenizi ve PostgreSQL'i yerel olarak kurmanızı öneririm.


2
gerçekten pg_dump ile amazon rds veritabanını yedekleme yolu yoktur?
chovy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.