資料庫PostrageSQL 刪除角色

2021-10-10 20:46:10 字數 1070 閱讀 7125

由於角色可以擁有資料庫物件並且能持有訪問其他物件的特權,刪除乙個角色 常常並非一次drop role就能解決。任何被該使用者所擁有 的物件必須首先被刪除或者轉移給其他擁有者,並且任何已被授予給該角色的 許可權必須被收回。

物件的擁有關係可以使用alter命令一次轉移出去,例如:

alter table bobs_table owner to alice;
此外,reassign owned命令可以被用來把要被刪除的 角色所擁有的所有物件的擁有關係轉移給另乙個角色。由於 reassign owned不能訪問其他資料庫中的物件,有必要 在每乙個包含該角色所擁有物件的資料庫中執行該命令(注意第乙個這樣的 reassign owned將更改任何在資料庫間共享的該角色擁 有的物件的擁有關係,即資料庫或者表空間)。

一旦任何有價值的物件已經被轉移給新的擁有者,任何由被刪除角色擁有的剩餘物件 就可以用drop owned命令刪除。再次,由於這個命令不能 訪問其他資料庫中的物件, 有必要在每乙個包含該角色所擁有物件的資料庫中執行 該命令。還有,drop owned將不會刪除整個資料庫或者表空間, 因此如果該角色擁有任何還沒有被轉移給新擁有者的資料庫或者表空間,有必要手工刪除它們。

drop owned也會注意移除為不屬於目標角色的物件授予給目標 角色的任何特權。因為reassign owned不會觸碰這類物件,通 常有必要執行reassign owneddrop owned(按照這個順序!)以完全地移除要被刪除物件的從屬物。

總之,移除曾經擁有過物件的角色的方法是:

reassign owned by doomed_role to successor_role;

drop owned by doomed_role;

– 在集簇中的每乙個資料庫中重複上述命令

drop role doomed_role;

如果不是所有的擁有物件都被轉移給了同乙個後繼擁有者,最好手工處理異常 然後執行上述步驟直到結束。

如果在依賴物件還存在時嘗試了drop role,它將發出 訊息標識哪些物件需要被重新授予或者刪除。

資料庫PostrageSQL 架構

邏輯複製從拷貝發布者資料庫上的資料庫快照開始。拷貝一旦完成,發布者上的更改會在它們發生時實時傳送給訂閱者。訂閱者按照資料在發布者上被提交的順序應用資料,這樣任意單一訂閱中的publication的事務一致性才能得到保證。訂閱者資料庫上的應用程序總是將session replication role設...

資料庫PostrageSQL 啟動資料庫伺服器

在任何人可以訪問資料庫前,你必須啟動資料庫伺服器。資料庫伺服器程式是postgres,它必須知道在 能找到它要用的資料。這是用 d選項實現的。因此,啟動伺服器最簡單的方法是 postgres d usr local pgsql data這將把伺服器放在前台執行。這個步驟同樣必須以postgresql...

資料庫PostrageSQL 鎖管理

deadlock timeout integer 這是進行死鎖檢測之前在乙個鎖上等待的總時間 以毫秒計 死鎖檢測相對昂貴,因此伺服器不會在每次等待鎖時都執行這個它。我們樂觀地假設在生產應用中死鎖是不常出現的,並且只在開始檢測死鎖之前等待一會兒。增加這個值就減少了浪費在無用的死鎖檢測上的時間,但是減慢...