pg

pg(PostgreSQL) grant授权和revoke回收

2022-07-06  本文已影响0人  饱饱想要灵感

grant 授权

格式: grant {权限} on {对象} to {账号};

例子1: 将popo模式下user表的查询权限开放给someone账号
grant select on popo.user to someone;

例子2: 将popo模式下全部表的查询权限开放给someone账号
grant select on all tables in schema popo to someone;

详细解释:

-- 授权模式
GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schemaname [, ...]
    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ];

-- 授权表
GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
    [,...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

-- 授权数据库
GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
    ON DATABASE dbname [, ...]
    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

-- 授权函数
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]
    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

-- 授权过程语言
GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE langname [, ...]
    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

-- 授权表空间
GRANT { CREATE | ALL [ PRIVILEGES ] }
    ON TABLESPACE tablespacename [, ...] 
    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
关键字 解释
GRANT 将某对象(表,视图,序列,函数,过程语言,模式或者表空间) 上的特定权限给予一个用户或者多个用户或者一组用户
PUBLIC 要赋予所有用户, 包括那些以后可能创建的用户。
WITH GRANT OPTION 如果加了这个选项, 权限的受予者也可以赋予别人

pg中有以下权限可分配:
SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTEUSAGE

权限 解释
SELECT 允许对声明的表,视图,或者序列 SELECT 任意字段。还允许做 COPY TO 的源。 对于序列而言,这个权限还允许使用 currval 函数。
INSERT 允许向声明的表 INSERT 一个新行。 同时还允许做 COPY FROM
UPDATE 允许对声明的表中任意字段做 UPDATESELECT ... FOR UPDATESELECT ... FOR SHARE 也要求这个权限(除了 SELECT 权限之外)。比如, 这个权限允许使用nextval, 和 setval
DELETE 允许从声明的表中 DELETE 行。
RULE 允许在该表/视图上创建规则。
REFERENCES 要创建一个外键约束,你必须在参考表和被参考表上都拥有这个权限。
TRIGGER 允许在声明表上创建触发器。
CREATE 1. 数据库,允许在该数据库里创建新的模式。<br />2. 模式,允许在该模式中创建新的对象。 要重命名一个现有对象,你必需拥有该对象并且。 对包含该对象的模式拥有这个权限。<br />3. 表空间,允许表在该表空间中创建,以及允许创建数据库和模式的时候把该表空间指定为其缺省表空间。
(请注意,撤销这个权限不会改变现有数据库和模式的存放位置。)
TEMPORARY 或 TEMP 允许在使用该数据库的时候创建临时表。
EXECUTE 允许使用指定的函数并且可以使用任何利用这些函数实现的操作符。 这是适用于函数的唯一的一种权限类型。 (该语法同样适用于聚集函数。)
USAGE 1. 模式,允许访问包含在指定模式中的对象(假设该对象的所有权要求同样也设置了)。 最终这些就允许了权限接受者"查询"模式中的对象。<br />2. 过程语言, 允许使用指定过程语言创建该语言的函数。 这是适用于过程语言的唯一的一种权限类型。
ALL PRIVILEGES 一次性给予所有可以赋予的权限。 PRIVILEGES 关键字在 PostgreSQL 里是可选的, 但是严格的 SQL 要求有这个关键字。

revoke 回收权限

格式: revoke {权限} on {对象} from {账号};

例子: 从someone账号收回popo模式下user表的查询权限
revoke select on popo.user from someone;

例子2: 从someone账号收回popo模式下所有表的查询权限
revoke select on all tables in schema popo from someone;

详细解释:

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

可操作对象和权限与授权类似

上一篇下一篇

猜你喜欢

热点阅读