pg刪除賬號,許可權的回收問題
阿新 • • 發佈:2018-12-17
在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 BY
和DROP OWNED BY
命令只能刪除對應庫中的許可權,如果在其他庫中仍有要收回的許可權,要切換到其他庫執行。