我目前正在学习 PostgreSQL 和 MySQL 之间的区别,因为我有一个新项目,并且我还打算将我现有的软件从 MySQL 迁移到 PostgreSQL。我实际上已经开始创建一个 HTML 表,其中比较了两者之间的命令(用于用户/数据库/命令提示符等)。在阅读了此处的答案后,我注意到这role
似乎被用作一个群体。使用 MySQL,我有两个用户,基本上是公共的(DELETE
、、INSERT
和权限)SELECT
和UPDATE
一个具有几个额外权限的管理员用户。
所以基本上在 Windows 7 命令提示符下(仅限本地开发)......
- 角色是特定于 PostgreSQL 的用户、组还是松散使用的术语?
- 对于数据库中的所有表,如何仅向特定用户授予特定权限?
- 如何将数据库中所有表的所有权限授予特定用户?
- 如果有的话,角色在使用
GRANT
或REVOKE
获得用户权限时如何与用户进行比较?
角色是可以充当用户和/或组的实体。角色
WITH LOGIN
可以用作用户,即您可以使用它登录。任何角色都可以作为一个组发挥作用,包括您也可以登录的角色。因此,“用户”和“组”本质上是表示角色预期用途的术语,它们之间没有真正的区别。即使在 PostgreSQL 风格的 SQL 中,这两者也或多或少地用作同义词。例如,文档上CREATE USER
说:授予所有...请参阅手册
GRANT
。您可能实际上想要授予权限ALL TABLES IN SCHEMA public
而不是数据库中的所有表。授予一些权利......同样的事情,但不是
GRANT ALL
使用GRANT SELECT, INSERT
例如。再次,请参阅手册。角色是用户和/或组。您只能授予角色,因为角色就是一切。