Saya masuk dengan akun pengguna super dan ini adalah proses yang saya lakukan:
1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test
Peran dibuat dengan benar tetapi saya mendapatkan kesalahan ini saat mencoba membuat Skema:
ERROR: must be member of role "test"
Terima kasih sebelumnya!
postgresql
roles
Ultranuke
sumber
sumber
Jawaban:
Saya mengalami masalah ini saat menggunakan
CREATE DATABASE
di Amazon RDS. Saya pikir itu pada dasarnya sama dengan menggunakanCREATE SCHEMA
.Saat menggunakan Amazon RDS, pengguna yang mengeluarkan
CREATE DATABASE
harus menjadi anggota peran yang akan menjadi pemilik database. Dalam kasus saya, akun superuser yang saya gunakan dipanggilroot
, dan saya akan membuat perano
yang akan memiliki databased
:postgres=> CREATE ROLE o; CREATE ROLE postgres=> CREATE DATABASE d OWNER = o; ERROR: must be member of role "o" postgres=> GRANT o TO root; GRANT ROLE postgres=> CREATE DATABASE d OWNER = o; CREATE DATABASE
sumber
GRANT o TO postgres;
sebelum membuat database.Saya menemukan masalah yang sama ini, yaitu keluhan tentang pengguna (master) saat ini yang Anda masuki bukan anggota grup pengguna yang Anda coba buat skemanya. Anda harus memberikan akses peran kepada pengguna master Anda dan itu akan memungkinkan Anda membuat SCHEMA tanpa kesalahan:
GRANT <role> TO <master_user>;
sumber
Apakah Anda menggunakan RDS? Karena saya mendapatkan masalah yang sama ketika saya masuk sebagai "pengguna super" yang mereka buat untuk Anda. Cara saya bisa memperbaikinya adalah dengan membuat peran grup baru yang menyertakan pengguna super saya dan pengguna yang memiliki skema. Jadi bagi Anda, ini berarti menambahkan pengguna super dan pengguna uji ke grup peran baru:
CREATE ROLE users NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION; GRANT megausers TO testroles; GRANT test TO testroles;
Sekarang Anda sudah bisa membuat schmea Anda
sumber
Memiliki masalah ini dengan RDS juga.
Untuk mengatasinya:
Masuk sebagai pengguna super
psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=RDS_SUPERUSER_NAME --password --dbname=postgres
Buat Pengguna
CREATE USER newuser WITH CREATEDB PASSWORD 'password';
Keluar
Masuk sebagai
newuser
psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=newuser --password --dbname=postgres
Buat DB / Skema Anda
CREATE SCHEMA/DATABASE ....
sumber
Bukankah kita hanya perlu memberikan keanggotaan pengguna admin ke peran layanan?
create role service_role with password 'some_password'; create database service_db with owner service_role; ERROR: must be member of role "service_role" grant admin_user service_role; GRANT ROLE create database service_db with owner service_role; CREATE DATABASE
sumber
GRANT service_role TO admin_user;
Saya juga mengalami masalah ini di RDS. Saya masuk sebagai
root
pengguna, membuat peran bernamamyappuser
dan kemudian mencoba membuat skema yang disebutsuperduper
pemilik siapamyappuser
.Saya menemukan solusi yang berhasil. Buat
myappuser
peran, dan pastikan bahwa peran ini setidaknya memiliki izin untuk membuat database (hak istimewa disebutCREATEDB
). Setelah membuatmyappuser
peran, saya masuk ke database sebagaimyappuser
dan membuatsuperduper
skema yang penggunanya adalahmyappuser
. Ini bekerja tanpa masalah.sumber
Saya baru saja menemukan ini menggunakan Amazon RDS.
Banyak jawaban sudah benar, tetapi Anda juga bisa mengubah perannya.
Inilah implementasi saya
psql -h ${PGHOST} -p ${PGPORT:-5432} -U ${PGUSER:-postgres} -c "ALTER USER renderer WITH CREATEDB PASSWORD '$RENDERPASSWORD'"
Jadi saat mengubah kata sandi, saya juga menambahkan izin peran CREATEDB ke peran tersebut.
sumber
Saya menghadapi masalah yang sama. Untuk mengatasi ini, saya masuk dengan peran yang baru dibuat dan membuat database. Entah bagaimana, hibah tidak berfungsi di RDS Postgres.
sumber
Saya memperbaikinya dengan masuk dengan
postgres
pengguna (dan kemudian menerapkan perubahan saya, yang mengubah kepemilikan dalam kasus saya):sudo -u postgres psql ALTER DATABASE my_database OWNER TO new_user;
sumber