PostgreSQL PRIVILEGES(权限)

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL PRIVILEGES(权限)相关的知识,希望对你有一定的参考价值。

PostgreSQL PRIVILEGES(权限)

无论何时创建数据库对象,都会为其分配一个所有者,所有者通常是执行 create 语句的人。
对于大多数类型的对象,初始状态是只有所有者(或超级用户)才能修改或删除对象。要允许其他角色或用户使用它,必须为该用户设置权限。
在 PostgreSQL 中,权限分为以下几种:

  1. SELECT
  2. INSERT
  3. UPDATE
  4. DELETE
  5. TRUNCATE
  6. REFERENCES
  7. TRIGGER
  8. CREATE
  9. CONNECT
  10. TEMPORARY
  11. EXECUTE
  12. USAGE

根据对象的类型(表、函数等),将指定权限应用于该对象。
要向用户分配权限,可以使用 GRANT 命令。

GRANT 语法

GRANT 命令的基本语法如下:

GRANT privilege [, ...]
ON object [, ...]
TO  PUBLIC | GROUP group | username 
  1. privilege − 值可以为:SELECT,INSERT,UPDATE,DELETE, RULE,ALL。
  2. object − 要授予访问权限的对象名称。可能的对象有: table, view,sequence。
  3. PUBLIC − 表示所有用
  4. GROUP group − 为用户组授予权限。
  5. username − 要授予权限的用户名。PUBLIC 是代表所有用户的简短形式。

另外,我们可以使用 REVOKE 命令取消权限,REVOKE 语法:

REVOKE privilege [, ...]
ON object [, ...]
FROM  PUBLIC | GROUP groupname | username 

实例

为了理解权限,创建一个用户:
highgo=# create user hgdb with password ‘password’;
CREATE ROLE
信息 CREATE ROLE 表示创建了一个用户 “hgdb”。

实例

创建 company 表,数据内容如下:

 highgo=# select  * from company ; 
 id | name | age |                       address                        | salary 
----+------+-----+------------------------------------------------------+--------
  1 | 张三 |  32 | 济南                                                 |  20000
  2 | 李四 |  25 | 青岛                                                 |  15000
  3 | 王五 |  23 | 北京                                                 |  20000
  4 | 赵六 |  25 | 上海                                                 |  65000
  5 | 小明 |  27 | 广州                                                 |  85000
  6 | 小红 |  22 | 深圳                                                 |  45000
  7 | 小强 |  24 | 成都                                                 |  10000
(7 行记录)

现在给用户 “hgdb” 分配权限:

highgo=# GRANT ALL ON company  TO hgdb;
GRANT

信息 GRANT 表示所有权限已经分配给了 “hgdb”。
下面撤销用户 “hgdb” 的权限:

highgo=# REVOKE ALL ON company  FROM hgdb;
REVOKE

信息 REVOKE 表示已经将用户的权限撤销。
你也可以删除用户:

highgo=#  DROP USER hgdb;
DROP ROLE

信息 DROP ROLE 表示用户 “hgdb” 已经从数据库中删除。

以上是关于PostgreSQL PRIVILEGES(权限)的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL中的默认权限(default privileges)

postgresql - 查看架构权限

9-8 权限

mysql访问权限GRANT ALL PRIVILEGES ON,访问权限表

mysql GRANT ALL PRIVILEGES ON创建用户

ORA-0131:Insufficient privileges(Oracle授予用户DEBUG权限)