Tất cả những câu hỏi này về cơ bản được trả lời trong tài liệu . Để được cụ thể:
Vai trò là một thực thể có thể sở hữu các đối tượng cơ sở dữ liệu và có các đặc quyền cơ sở dữ liệu; một vai trò có thể được coi là "người dùng", "nhóm" hoặc cả hai tùy thuộc vào cách sử dụng vai trò đó.
Điều đó ngụ ý rằng trong nội bộ không có sự khác biệt giữa những điều này, ngoại trừ LOGIN
tùy chọn. Nếu bạn chỉ định LOGIN
(hoặc sử dụng CREATE USER
):
CREATE ROLE dezso WITH LOGIN PASSWORD 'bla';
dezso
sẽ trở thành một vai trò đăng nhập, nếu không thì không. Bạn cũng có thể chỉ định mật khẩu cho các vai trò không đăng nhập - nếu sau đó bạn quyết định biến nó thành vai trò đăng nhập, hãy sử dụng
CREATE ROLE non_login_role PASSWORD 'bla';
--later
ALTER ROLE non_login_role WITH LOGIN;
Bạn đã đúng khi nói 'chỉ có thể xác thực với vai trò đăng nhập' . Tuy nhiên, lưu ý rằng mật khẩu không phải lúc nào cũng cần thiết - nếu bạn sử dụng bất kỳ thứ gì khác ngoài các phương thức password
hoặcmd5
xác thực. Mặt khác, điều này có nghĩa là một vai trò không có bộ LOGIN
tùy chọn không thể đăng nhập theo bất kỳ cách nào.
Cuối cùng, bạn có thể đặt quy tắc pg_hba.conf
cho các vai trò không đăng nhập, nhưng vì nó chỉ được sử dụng để xác thực, các vai trò đó sẽ không có hiệu lực (trừ khi bạn kích hoạt đăng nhập sau, như trên).