2013-01-31 49 views
0

有沒有什麼方法可以撤銷對服務器上定義爲超級用戶的角色的數據庫連接(或優先所有)權限?在dev服務器上,我們有幾個數據庫 - 其中一個是共享的,但其餘的只能由一個開發人員擁有,而沒有其他人的連接權限。目前所有的開發者都是擁有登錄選項的超級用戶。從超級用戶撤消連接

CREATE ROLE dev_name LOGIN 
    ENCRYPTED PASSWORD '...' 
    SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION; 

我試圖做到這一點在許多方面:

REVOKE CONNECT ON DATABASE test_db FROM dev_name; 
revoke select on all tables in schema public from dev_name; 

,然後爲我檢查:

SELECT * FROM has_database_privilege('dev_name', 'test_db', 'connect'); 

仍會返回真。

我試着解決方法,改變了連接數限制爲其他值,但仍當我第一次登錄超級用戶甚至可以連接:

CONNECTION LIMIT = 1; 

所以,也許是有機會做到這一點,而不與pg_hba搞亂或爲其他開發者放棄超級用戶狀態?

回答

1

不,您需要從這些開發人員中刪除超級用戶狀態。

從手動相關報價:

這些子句決定一個新角色是否爲「超級用戶」,誰又能 超越數據庫中的所有訪問權限

+0

不過請注意,你是不是在免疫pg_hba.conf文件訪問控制。但它看起來像OP濫用超級用戶。 –