Postgresql
沒有登錄的角色是否應該擁有數據庫的連接權限?
我想在 PostgreSQL 中創建一個只讀角色,並使用它將它分配給多個應該具有隻讀訪問權限的新使用者。對我來說,將只讀權限授予目標數據庫上的角色也是有意義的。我擔心的是,使用“NOLOGIN”創建的角色是否應該具有“CONNECT ON DATABASE”權限。或者出於某種原因,僅將連接權限授予具有登錄名的個人使用者是否更好?
角色:
CREATE ROLE role_readonly WITH NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';
權限:
# should this be here? GRANT CONNECT ON DATABASE db_name TO role_readonly; # GRANT USAGE ON SCHEMA public TO role_readonly; GRANT SELECT ON ALL TABLES IN SCHEMA public TO role_readonly; GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO role_readonly;
CONNECT
可以將數據庫授予NOLOGIN
角色。效果是允許角色的所有成員連接到數據庫。這與角色是否可以登錄的問題無關。請注意,預設情況下,每個人 (
PUBLIC
) 都可以連接到數據庫。您必須擁有REVOKE
該特權才能使上述特權有意義。