pg刪除帳號,權限的回收問題

在pg中刪除帳號時,通常不能直接刪除帳號,要先將該帳號上全部的對應權限收回,但每每這一步是比較繁瑣的,可能當時賦權的對象類型不少,對象也比較多,雖然能夠經過sql按照類型來收回針對整個schema的全部權限,但仍是有可能漏掉的,可能有使用ALTER DEFAULT PRIVILEGES定義的默認權限。sql

實際上pg提供了對應的命令來處理刪除用戶,碰到的權限回收問題。post

能夠結合REASSIGN OWNED BY old_user TO other_user;DROP OWNED BY ole_user;來實現。code

REASSIGN OWNED BY old_user TO other_user;對象

語句是將old_user擁有owner權限的對象轉移給other_user,那麼old_user將不會再擁有owner權限的對象了。class

DROP OWNED BY ole_user;權限

語句是在當前庫中,刪除用戶擁有的對象;並收回在當前庫賦予的任何權限。查詢

因爲以前已經使用了REASSIGN OWNED BY,old_user用戶下已無owned的對象,對於帳號不僅是存在owner的狀況,可能用戶只是查詢或修改的權限,此時再使用DROP OWNED BY則能夠將其餘權限收回。co

最後刪除帳號。block

REASSIGN OWNED BY old_user TO postgres;
DROP OWNED BY ole_user;
DROP USER old_user;

REASSIGN OWNED BY中能夠將對象的擁有者修改成postgres或是其餘較高權限的業務帳號。

注意:REASSIGN OWNED BYDROP OWNED BY命令只能刪除對應庫中的權限,若是在其餘庫中仍有要收回的權限,要切換到其餘庫執行。

相關文章
相關標籤/搜索