如何刪除 Postgres 使用者 (刪除使用者)?


介紹

PostgreSQL,通常稱為 Postgres,是一個功能強大的開源關係資料庫管理系統,已有 30 多年的歷史。它以其穩健性、可擴充套件性和靈活性而聞名。它也高度可擴充套件,並提供廣泛的功能,使其適用於各種應用程式,例如關鍵業務系統、Web 應用程式、資料倉庫等等。

與任何資料庫管理系統一樣,瞭解如何在 Postgres 中有效地管理使用者非常重要。在本文中,我們將討論如何刪除 Postgres 使用者(刪除使用者)。

當不再需要使用者或存在安全問題時,可能需要刪除使用者。此過程涉及撤銷使用者的許可權並將其帳戶從資料庫系統中刪除。

瞭解 Postgres 使用者

PostgreSQL 或 Postgres 是一個開源關係資料庫管理系統,它使用 SQL(結構化查詢語言)命令來管理資料庫。在 Postgres 中,使用者是可以連線到資料庫並執行指定操作和命令的實體。瞭解 Postgres 中不同型別的使用者對於有效管理資料庫至關重要。

什麼是 Postgres 使用者?

Postgres 中的使用者充當控制對資料庫訪問的機制。每次使用者連線到資料庫時,都必須提供其使用者名稱和密碼進行身份驗證。

每個使用者都有一組獨特的許可權,這些許可權決定了他們可以在資料庫中執行哪些操作(例如,建立表、修改資料等)。預設情況下,每個新的 PostgreSQL 安裝都包含一個名為“postgres”的單個使用者,該使用者具有完全訪問許可權。

Postgres 中不同型別的使用者

PostgreSQL 中有幾種型別的使用者,包括超級使用者、普通使用者和角色:

  • 超級使用者:超級使用者擁有資料庫中的所有許可權,可以執行普通使用者或角色可以執行的任何操作。每個 PostgreSQL 安裝中至少定義一個超級使用者。

  • 普通使用者:普通使用者擁有由超級使用者或其他高階角色授予的特定許可權。

  • 角色:角色類似於包含與資料庫不同方面相關的許可權集合的組。

需要刪除使用者的場景

在某些情況下,您可能需要從 PostgreSQL 安裝中刪除現有使用者。例如:

  • 使用者不再受僱於您的組織

  • 使用者的帳戶已被洩露

  • 使用者名稱建立不正確

  • 使用者不再需要訪問資料庫的特定部分

在任何需要刪除現有使用者的案例中,務必充分了解使用者型別及其在安裝中如何使用。

準備刪除使用者

備份資料庫的重要性

在開始刪除任何使用者之前,務必備份您的資料庫。這是因為對資料庫所做的任何更改都無法撤消,並且您可能會無意中刪除重要資料。

備份資料庫可確保您可以在使用者刪除過程中出現任何問題時恢復資料。一種備份資料庫的方法是使用 pg_dump 命令列工具。

此工具允許您將資料庫的內容轉儲到以後可用於恢復目的的檔案中。要使用 pg_dump,只需鍵入以下命令:

pg_dump mydatabase > backup.sql

這將建立您的“mydatabase”的備份,並將其儲存到名為“backup.sql”的檔案中。然後,您可以透過執行以下命令來恢復此備份:

psql mydatabase < backup.sql

確定活動連線和依賴項

在刪除使用者之前,務必檢查他們是否有任何需要首先解決的活動連線或依賴項。這是因為 Postgres 中的一些物件依賴於特定使用者,而刪除這些使用者而不解決這些依賴項可能會導致問題。要檢查特定使用者的活動連線,請執行以下命令:

SELECT * FROM pg_stat_activity WHERE usename = 'username';

這將為您提供與該特定使用者關聯的所有活動連線的列表。在繼續刪除使用者之前,請確保關閉所有這些連線。要識別特定使用者帳戶的依賴項,請執行以下 SQL 語句:

SELECT * FROM information_schema.role_usage WHERE role_name = 'username';

這將顯示依賴於指定角色的所有物件。檢視列表並確保在刪除使用者之前解決所有依賴項。

撤銷許可權

在刪除使用者之前,務必撤銷其許可權。這可以確保使用者在被刪除後無法訪問或修改資料庫中的任何資料。要撤銷特定使用者的許可權,請使用以下命令:

REVOKE ALL PRIVILEGES ON DATABASE mydatabase FROM username;

這將刪除與“mydatabase”資料庫中指定的使用者名稱關聯的所有許可權。請務必將“mydatabase”替換為您實際的資料庫名稱,並將“username”替換為您要刪除的使用者的名稱。

刪除使用者

既然您已經準備好了資料庫並撤銷了要刪除的使用者的所有許可權,那麼現在就可以實際刪除它們了。這可以使用 SQL 命令來完成。使用的具體命令取決於使用者是普通使用者還是超級使用者。

如果使用者是普通使用者,可以使用以下命令:

DROP USER username; 

將“username”替換為您要刪除的使用者的實際名稱。此命令將立即從系統中刪除使用者。

但是,如果使用者是超級使用者,則必須首先撤銷其超級使用者許可權才能刪除它們。否則,Postgres 將不允許您刪除它們。

為此,請使用以下命令:

ALTER USER username WITH NOSUPERUSER;  

將“username”替換為您要撤銷許可權的超級使用者的實際名稱。撤銷其許可權後,您可以使用上面概述的 DROP USER 命令。

刪除使用者後進行清理

在成功刪除 Postgres 中的使用者後,務必清理與該使用者關聯的所有剩餘物件。這將有助於確保您的資料庫保持井然有序且高效。如果不這樣做,可能會導致未使用的物件佔用寶貴的空間,隨著時間的推移可能導致效能問題。

為什麼刪除使用者後進行清理很重要

當您在 Postgres 中刪除使用者時,與該使用者關聯的物件也不會自動刪除。這意味著如果您不手動清理這些物件,它們將繼續存在於您的資料庫中,佔用不必要的空間。

除了佔用空間外,這些未使用的物件還會隨著時間的推移影響資料庫的效能。資料庫越雜亂無章,執行查詢或執行其他操作的速度可能會越慢。

結論

刪除 Postgres 使用者是維護資料庫安全性和功能的關鍵任務。瞭解 Postgres 中不同型別的使用者及其與他們擁有或可以訪問的資料庫物件之間的關係非常重要。在進行任何更改之前,始終建議備份您的資料並識別可能受影響的任何活動連線或依賴項。

刪除使用者的過程包括透過撤銷許可權和解決依賴項來準備刪除,然後執行 SQL 命令以永久刪除使用者。您還應該注意清理與已刪除使用者關聯的任何剩餘物件。

更新於:2023年6月7日

823 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.