greenplum ,etl用户自动拥有某个schema下未来新增表的权限
时间: 2024-03-08 17:47:02 浏览: 122
在 Greenplum 数据库中,可以通过给用户或用户组分配 schema 的权限来实现自动拥有该 schema 下新增表的权限。具体步骤如下:
1. 创建用户组并添加需要自动拥有权限的用户:
```
CREATE GROUP etl_users;
GRANT etl_users TO user1, user2, ...;
```
2. 创建 schema 并将其所有者设置为一个具有 CREATE 权限的用户:
```
CREATE SCHEMA my_schema AUTHORIZATION owner_user;
```
3. 将 etl_users 用户组赋予该 schema 的 USAGE 权限:
```
GRANT USAGE ON SCHEMA my_schema TO etl_users;
```
这将允许 etl_users 用户组成员访问该 schema 中的所有对象,但是并不能对其中的表进行修改。
4. 创建一个触发器,当有新表创建时自动授予 etl_users 用户组成员对该表的 SELECT、INSERT、UPDATE 和 DELETE 权限:
```
CREATE OR REPLACE FUNCTION grant_etl_users()
RETURNS event_trigger
LANGUAGE plpgsql
AS $$
BEGIN
IF tg_event = 'CREATE TABLE' THEN
EXECUTE format('GRANT SELECT, INSERT, UPDATE, DELETE ON %I TO etl_users', TG_TABLE_NAME);
END IF;
RETURN NULL;
END;
$$;
CREATE EVENT TRIGGER grant_etl_users_trigger
ON ddl_command_end
WHEN TAG IN ('CREATE TABLE')
EXECUTE FUNCTION grant_etl_users();
```
这将在每次有新表创建时自动执行一个函数,在该函数中执行相应的授权操作,从而实现 etl_users 用户组自动拥有该 schema 下新增表的权限。
阅读全文