Postgresql
在 postgresql 中創建只讀使用者
使用,通過以下方式為數據庫
pg 13.4
創建了一個只讀使用者:reader``abc
CREATE ROLE reader WITH LOGIN PASSWORD 'psssswwwd' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity'; GRANT CONNECT ON DATABASE abc TO reader; GRANT USAGE ON SCHEMA public TO reader; GRANT SELECT ON ALL TABLES IN SCHEMA public TO reader; GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO reader; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO reader;
但是使用者仍然可以創建表,然後插入和刪除該表。
我希望使用者無法對 pg 中的任何數據庫進行任何更改,並且只能連接和讀取數據庫
abc
。我檢查了https://stackoverflow.com/questions/24332588/read-only-user-able-to-create-table,
並嘗試:
REVOKE CREATE ON SCHEMA public FROM reader;
但它仍然可以創建表。
有什麼建議嗎?謝謝。
您執行的
REVOKE
語句撤銷了從未授予的特權,因此它什麼也不做。如果您查看權限,您將看到該架構
public
已CREATE
授予PUBLIC
(即所有人),因此您將不得不撤銷:REVOKE CREATE ON SCHEMA public FROM PUBLIC;
然後,您必須授予
CREATE
應該在該模式中創建對象的角色。