我正在嘗試設定流復制。在我的主人上,我洗掉了公共的連接權限:
REVOKE ALL ON SCHEMA public FROM public;
對于用戶 repl,我嘗試再次允許訪問任何地方
GRANT pg_read_all_data TO repl;
GRANT pg_write_all_data TO repl;
GRANT ALL PRIVILEGES ON SCHEMA public FROM public to repl;
用戶目前看起來像這樣
postgres=# \du;
List of roles
Role name | Attributes | Member of
----------- ------------------------------------------------------------ --------------------------------------
pgpool | | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
repl | Replication | {pg_read_all_data,pg_write_all_data}
現在在我的奴隸上,連接測驗失敗:
psql -h db-master-p 5432 -U repl -d template1
psql: error: connection to server at "db-master", port 5432 failed: FATAL: permission denied for database "template1"
DETAIL: User does not have CONNECT privilege.
用戶repl需要哪些權限以及如何正確應用它們?
uj5u.com熱心網友回復:
您似乎混淆了模式和資料庫,CREATE以及CONNECT權限。
流復制的用戶沒有任何資料庫物件(如模式和表)的權限,因為它只使用 WAL。用戶只需要擁有該REPLICATION屬性。
PostgreSQL 中有兩種型別的連接:普通的客戶端-服務器連接和復制連接。您的測驗與psql測驗前者,后者需要CONNECT對資料庫的特權。
要與 建立復制連接psql,請使用replication連接字串屬性:
psql 'host=db-master port=5432 user=repl replication=on'
您不能指定具有復制連接的資料庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/492799.html
標籤:PostgreSQL
上一篇:postgres中多行的第一列值
下一篇:在SQL資料庫中創建全文索引
