sql - 如何在 postgresql 中创建角色组

标签 sql postgresql

我可以在 postgresql 中创建一个角色。

  • 使用登录密码 'pass' 创建角色 myname;

我可以为该用户设置数据库模式的权限。

  • GRANT USAGE ON SCHEMA public TO myname;

并为用户选择权限。

  • GRANT SELECT ON ALL TABLES IN SCHEMA public TO myname;

但是我的数据库中有这么多用户。我不想为我的所有用户设置这些权限。其实我想创建角色组名:

  • 观众
  • 编辑
  • 管理员

viewer 将选择所有表的权限, editor 将对所有表具有选择、插入和更新权限。

我的用户将在这些组中。

我该怎么做?

最佳答案

CREATE ROLE viewer;
CREATE ROLE editor;
CREATE ROLE admin;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO viewer;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO viewer;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT,INSERT,UPDATE ON TABLES TO editor;
GRANT some_other_privs_to_admin_group

之后只需将组授予用户:

GRANT editor TO your_user;

等等

https://www.postgresql.org/docs/current/static/sql-alterdefaultprivileges.html https://www.postgresql.org/docs/current/static/sql-createrole.html

CREATE ROLE adds a new role to a PostgreSQL database cluster. A role is an entity that can own database objects and have database privileges; a role can be considered a “user”, a “group”, or both depending on how it is used.

A role having the LOGIN attribute can be thought of as a user. Roles without this attribute are useful for managing database privileges

关于sql - 如何在 postgresql 中创建角色组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47788441/

相关文章:

sql - 带有 where 子句的 Postgres 窗口函数

sql - 列出 Hibernate 中的所有表

mysql - REPLACE INTO 导致超过锁定等待超时;尝试重启交易

javascript - Knex 迁移不会创建任何东西

ruby-on-rails - 更改 heroku 环境变量

postgresql - 如何使用 postgresql 检索过去 n 天的结果

MySQL 结果集到数组以便在 WHERE 子句中使用

sql - PostgreSQL表的实现历史

java - 尝试将字符串转换为 MD5 时我做错了什么

java - 插入新的 UpdatableRecord 并在重复的主键上接收错误