如何在 PostgreSQL 中创建具有 SELECT、INSERT、UPDATE...[DML] 访问权限的用户
How to create a User in PostgreSQL with SELECT, INSERT, UPDATE,... [DML] access
我正在尝试在 PostgreSQL 中创建两个用户
谁(user1)可以访问 db1 中的 tables 并且应该能够 运行 (DML) SELECT、INSERT、UPDATE...
谁(用户 2)只能在特定数据库(例如:db1)中创建 table
我尝试的命令如下所示,但是当我使用 user2 创建新的 table 时,user1 无法 select/insert on tables。
用户 1:
grant CONNECT ON DATABASE db1 to user1;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public grant SELECT, INSERT, UPDATE, DELETE ON TABLES to user1;
用户 2:
GRANT CREATE ON SCHEMA public TO user2;
grant CONNECT ON DATABASE db1 to user2;
revoke SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public from user2;
谁能帮我解决我在这里遗漏的问题
谢谢
您需要更改 user1 创建的对象的默认权限。这是通过作为 alter default privileges
语句的一部分的选项 for role
完成的。
alter default privileges
for role user2 ---<< this
IN SCHEMA public
grant SELECT, INSERT, UPDATE, DELETE ON TABLES to user1;
如果您不指定该选项,默认值将应用于用户 运行 (ALTER) 语句创建的对象。
我正在尝试在 PostgreSQL 中创建两个用户
谁(user1)可以访问 db1 中的 tables 并且应该能够 运行 (DML) SELECT、INSERT、UPDATE...
谁(用户 2)只能在特定数据库(例如:db1)中创建 table
我尝试的命令如下所示,但是当我使用 user2 创建新的 table 时,user1 无法 select/insert on tables。
用户 1:
grant CONNECT ON DATABASE db1 to user1;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public grant SELECT, INSERT, UPDATE, DELETE ON TABLES to user1;
用户 2:
GRANT CREATE ON SCHEMA public TO user2;
grant CONNECT ON DATABASE db1 to user2;
revoke SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public from user2;
谁能帮我解决我在这里遗漏的问题
谢谢
您需要更改 user1 创建的对象的默认权限。这是通过作为 alter default privileges
语句的一部分的选项 for role
完成的。
alter default privileges
for role user2 ---<< this
IN SCHEMA public
grant SELECT, INSERT, UPDATE, DELETE ON TABLES to user1;
如果您不指定该选项,默认值将应用于用户 运行 (ALTER) 语句创建的对象。