PostgreSQL 角色与用户,授予权限

Joh*_*ohn 33 postgresql users

我目前正在学习 PostgreSQL 和 MySQL 之间的差异,因为我有一个新项目,而且我还打算将我现有的软件从 MySQL 迁移到 PostgreSQL。我实际上已经开始创建一个 HTML 表,比较两者之间的命令(用于用户/数据库/命令提示符等)。在阅读了这里的答案后,我注意到它role似乎被用作一个组。与MySQL我有两个用户,基本公共(DELETEINSERTSELECTUPDATE权限),并与一对夫妇的额外权限的管理员用户。

所以基本上在 Windows 7 命令提示符下(仅限本地开发)...

  • 角色是特定于 PostgreSQL 的用户、组或松散使用的术语吗?
  • 对于数据库中的所有表,如何仅向特定用户授予特定权限?
  • 如何将数据库中所有表的所有权限授予特定用户?
  • 在使用GRANTREVOKE获得用户权限时,角色与用户相比如何(如果有的话)?

Cra*_*ger 55

的作用是一个实体,它可以用作用户和/或为一组。角色WITH LOGIN可以用作用户,即您可以使用它登录。任何角色都可以作为一个组运行,包括您也可以登录的角色。所以“用户”和“组”本质上是表示角色预期用途的术语,它们之间没有真正的区别。即使在 PostgreSQL 风格的 SQL 中,这两者也或多或少地用作同义词。例如,文档上CREATE USER说:

CREATE USER 现在是 CREATE ROLE 的别名。

授予所有...请参阅手册GRANT。您可能实际上想要授予对数据库中的ALL TABLES IN SCHEMA public而不是所有表的权限。

授予一些权利......同样的事情,但不是例如GRANT ALL使用GRANT SELECT, INSERT。再看说明书。

角色用户和/或组。您只能授予角色,因为角色就是全部。