1. 程式人生 > >pg刪除賬號,許可權的回收問題

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