標籤:不能 revoke res 不同的 地方 ted 控制 default creat
轉:如何在PostgreSQL中建唯讀帳號Posted on 2014-01-21 22:00:15 by osdba
在PostgreSQL中並沒有CREATE TABLE許可權名稱,這是與其它資料庫不同的一個地方,PostgreSQL是通過控制是否在模式schema中上有CREATE控制使用者的能否建立表的許可權的,預設安裝下,任何使用者都有在模式public中CREATE的許可權,所以要建立唯讀帳號的第一步,我們要先去除在模式public中的CREATE許可權:
REVOKE CREATE ON SCHEMA public from public;
下面的SQL建立了一個名為“readonly”的使用者:
CREATE USER readonly with password ‘query‘;
然後把現有的所有在public這個schema下的表的SELECT許可權賦給使用者readonly,執行下面的SQL命令:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
上面的SQL命令只把現有的表的許可權給了使用者readonly,但如果這之後建立的表,readonly使用者還是不能讀,需要使用下面的SQL把以後建立的表的SELECT許可權也給使用者readonly:
ALTER DEFAULT PRIVILEGES IN SCHEMA public grant select on tables to readonly;
注意:上面的過程只是把名稱為public的schema下的表賦了唯讀許可權,如果想讓這個使用者能訪問其它schema下的表,需要重複執行:
GRANT SELECT ON ALL TABLES IN SCHEMA other_schema TO readonly;ALTER DEFAULT PRIVILEGES IN SCHEMA other_schema grant select on tables to readonly;
如何在PostgreSQL中建唯讀帳號