Superuser tidak diizinkan masuk

32

Saya membuat portal pengguna super dengan perintah berikut

create role portal with superuser password 'portal'

Ketika saya mencoba masuk ke postgres dengan pengguna portal saya mendapatkan kesalahan berikut dalam rails.

FATAL:  role "portal" is not permitted to log in

Saya tidak bisa mengikuti apa yang sedang terjadi.

tentu saja saya dapat mengubah pengguna dengan perintah masuk untuk mengaktifkan pengguna portal untuk masuk. Saya ingin mengerti mengapa pengguna super tidak bisa masuk.

Antony
sumber
2
Karena a roletidak pernah bisa masuk. Anda seharusnya menggunakan create userjika Anda menginginkan sesuatu yang bisa masuk.
a_horse_with_no_name
1
@a_horse_with_no_name Lebih tepatnya, tidak ada perbedaan antara peran dan pengguna tetapi ada di antara CREATE ROLEdan CREATE USER, lihat jawaban Craig.
dezso

Jawaban:

57

Anda tidak menentukan yang LOGINbenar:

ALTER ROLE portal WITH LOGIN;

Jika Anda menggunakan CREATE USERbukannya CREATE ROLEyang LOGINtepat diberikan secara otomatis; jika tidak, Anda harus menentukannya dalam WITHklausa CREATEpernyataan.

Pengguna super tidak secara inheren memiliki LOGINhak; pemeriksaan izin masih dilakukan untuk pengguna super untuk hak ini. Alasannya adalah agar Anda dapat memiliki peran pengguna super yang dapat Anda lakukan SET ROLE, tetapi tidak dapat dihubungkan secara langsung.

Craig Ringer
sumber
4
CREATE ROLE 'portal' WITH LOGIN SUPERUSER PASSWORD 'portal';
Kit
sumber
Selamat datang di situs ini! Jawaban Anda tidak memiliki penjelasan - jika Anda melihat-lihat, jawaban yang baik selalu memberi tahu Anda tidak hanya apa tetapi juga mengapa harus dilakukan. Dengan pandangan ini, apa yang ditambahkan jawaban Anda pada Craig?
dezso