在 PostgreSQL 中,ALTER DEFAULT PRIVILEGES 是一个 SQL 命令,用于修改默认权限设置。默认权限设置用于指定在创建新对象(如表、视图、函数等)时授予的权限。通过 ALTER DEFAULT PRIVILEGES 命令,你可以更改这些默认权限规则。

以下是 ALTER DEFAULT PRIVILEGES 命令的基本语法:
ALTER DEFAULT PRIVILEGES
    [ FOR { ROLE role_name | USER user_name | GROUP group_name }
      [, ...] ]
    [ IN SCHEMA schema_name [, ...] ]
    abbreviated_grant_or_revoke [, ...]

其中,role_name、user_name 和 group_name 是数据库角色的名称,schema_name 是模式的名称,而 abbreviated_grant_or_revoke 是授予或撤销的权限。

以下是一些示例:

1. 授予默认权限给特定用户:
   ALTER DEFAULT PRIVILEGES FOR USER alice
   GRANT SELECT, INSERT, UPDATE ON TABLES TO alice;

   这将为用户 alice 授予在创建新表时的默认 SELECT、INSERT 和 UPDATE 权限。

2. 为角色撤销默认权限:
   ALTER DEFAULT PRIVILEGES FOR ROLE editors
   REVOKE INSERT ON TABLES FROM PUBLIC;

   这将为角色 editors 撤销在创建新表时的默认 INSERT 权限。

3. 指定模式的默认权限:
   ALTER DEFAULT PRIVILEGES IN SCHEMA public
   GRANT USAGE, SELECT ON SEQUENCES TO PUBLIC;

   这将为在 public 模式下创建的新序列授予默认的 USAGE 和 SELECT 权限。

请注意,ALTER DEFAULT PRIVILEGES 只会影响之后创建的对象,而不会修改已存在的对象的权限。对于已存在的对象,你需要使用 GRANT 或 REVOKE 命令来设置或更改权限。

详细信息和更多示例可以在 [PostgreSQL 官方文档](https://www.postgresql.org/docs/current/sql-alterdefaultprivileges.html) 中找到。


转载请注明出处:http://www.zyzy.cn/article/detail/8603/PostgreSQL