Superuser không được phép đăng nhập


32

Tôi đã tạo một cổng siêu người dùng với lệnh sau

create role portal with superuser password 'portal'

Khi tôi cố gắng đăng nhập vào postgres với người dùng cổng thông tin, tôi nhận được lỗi sau trong rails.

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

Tôi không thể làm theo những gì đang diễn ra.

Tất nhiên tôi có thể thay đổi người dùng bằng lệnh đăng nhập để cho phép người dùng cổng thông tin đăng nhập. Tôi muốn hiểu tại sao siêu người dùng không thể đăng nhập.


2
Bởi vì a rolekhông bao giờ có thể đăng nhập. Bạn nên sử dụng create usernếu bạn muốn thứ gì đó có thể đăng nhập.
a_horse_with_no_name

1
@a_horse_with_no_name Nói chính xác, không có sự khác biệt giữa vai trò và người dùng nhưng có giữa CREATE ROLECREATE USER, hãy xem câu trả lời của Craig.
dezso

Câu trả lời:


57

Bạn đã không chỉ định LOGINđúng:

ALTER ROLE portal WITH LOGIN;

Nếu bạn sử dụng CREATE USERthay vì CREATE ROLEcác LOGINquyền được cấp tự động; nếu không, bạn phải chỉ định nó trong WITHmệnh đề của CREATEcâu lệnh.

Superusers vốn không có LOGINquyền; kiểm tra quyền vẫn được thực hiện cho siêu người dùng cho quyền này. Lý do cho điều này là để bạn có thể có một vai trò siêu người dùng mà bạn có thể SET ROLE, nhưng không thể được kết nối trực tiếp.


4
CREATE ROLE 'portal' WITH LOGIN SUPERUSER PASSWORD 'portal';

Chào mừng đến với trang web! Câu trả lời của bạn thiếu một lời giải thích - nếu bạn nhìn xung quanh, những câu trả lời hay luôn cho bạn biết không chỉ những gì mà còn tại sao phải làm. Với quan điểm này, câu trả lời của bạn thêm vào câu hỏi nào từ Craig?
dezso
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.