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


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

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

可以結合REASSIGN OWNED BY old_user TO other_user;DROP OWNED BY ole_user;來實現。

REASSIGN OWNED BY old_user TO other_user;

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

DROP OWNED BY ole_user;

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

由於之前已經使用了REASSIGN OWNED BY,old_user用戶下已無owned的對象,對於賬號不只是存在owner的情況,可能用戶只是查詢或修改的權限,此時再使用DROP OWNED BY則可以將其他權限收回。

最后刪除賬號。

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 命令只能刪除對應庫中的權限,如果在其他庫中仍有要收回的權限,要切換到其他庫執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM