PostgreSQL角色与用户,授予权限


27

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

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

  • 角色是用户,组还是宽松使用的术语,特定于PostgreSQL?
  • 如何为数据库中的所有表仅授予特定用户特定的权限?
  • 如何为数据库中的所有表授予特定用户的所有权限?
  • 在使用权限GRANTREVOKE获得用户权限时,角色与用户相比如何?

Answers:


48

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

CREATE USER现在是CREATE ROLE的别名。

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

授予某些权利...相同的东西,但不GRANT ALL使用GRANT SELECT, INSERT例如。同样,请参见手册。

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


很好的解释!
sharadov '18

那么...在模式公共中授予所有表所有权限的语法是什么?
AlxVallejo

@AlxVallejo 这应该有所帮助。尝试顶部链接,或阅读GRANT列出的文档页面ALL TABLES IN SCHEMA
Craig Ringer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.