Backup

如何在 PostgreSQL 中為備份創建只讀使用者?

  • December 1, 2021

在 PostgreSQL 中創建只讀備份使用者是不可能的嗎?

我在 IRC 頻道上被告知,您根本不能擁有沒有所有權權限的僅備份使用者。我覺得這很奇怪,所以我想確保我沒有遺漏什麼。

以下是我嘗試過的,但它沒有給我我正在尋找的結果。當我pg_dump在給定的桌子上做時,我得到Permission denied for relation...

GRANT SELECT ON ALL TABLES IN SCHEMA public TO backup; 
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO backup; 
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO backup;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, USAGE ON SEQUENCES TO backup;

任何幫助將不勝感激!

不,這很容易(無論如何現在)。

  1. 授予新使用者的連接權限
GRANT CONNECT ON DATABASE mydb TO myReadolyUser;
  1. 授予對所有目前數據庫對象的權限。這是特定於模式的,您必須為希望使用者使用的每個模式執行一個副本,
GRANT SELECT ON ALL TABLES IN SCHEMA mySchema TO myReadonlyUser;

docsALL TABLES包括你想要的一切。

還有一個選項可以授予對一個或多個模式中相同類型的所有對象的權限。目前僅表、序列和函式支持此功能(但請注意,所有表都被認為包括視圖和外部表。

  1. 然後為尚未創建的對象ALTER DEFAULT PRIVLEGES授予未來權限。 SELECT
ALTER DEFAULT PRIVILEGES IN SCHEMA mySchema
GRANT SELECT ON TABLES TO myReadonlyUser;

簡單而好的方法是創建一個具有隻讀權限的超級使用者。

  • psql以 postgres 或其他超級使用者身份登錄。
  • 創建新的超級使用者角色並將其設置為只讀:
CREATE USER backadm SUPERUSER  password '<PASS>';
ALTER USER backadm set default_transaction_read_only = on;
  • 替換<PASS>為您選擇的密碼。
  • 您可以用backadm選擇的使用者名替換。(我把backadmBackup Administrator
  • 不要忘記密碼的單引號。

您現在可以使用此角色進行備份。

引用自:https://dba.stackexchange.com/questions/52691