pgsql-Create_ALTER_GRANT_REVOKE命令语法

资料

语法约定

CREATE ROLE

ALTER ROLE

GRANT授权

REVOKE回收授权

权限类型说明

语法约定

下面的约定被用于命令的大纲:方括弧([和])表示可选的部分(在 Tcl 命令里,使用的是问号 (?),就像通常的 Tcl 一样)。 花括弧({和})和竖线(|)表示你必须选取一个候选。 点(…)表示它前面的元素可以被重复。
如果能提高清晰度,那么 SQL 命令前面会放上提示符=>, 而 shell 命令前面会放上提示符 $。不过,提示符通常不被显示。


CREATE ROLE 创建角色/用户/用户组

CREATE ROLE向PostgreSQL数据库集簇增加一个新的角色。一个角色是一个实体,它可以拥有数据库对象并且拥有数据库特权。根据一个角色如何被使用,它可以被考虑成一个“用户”、一个“组”或者两者。

CREATE ROLE name [ [ WITH ] option [ ... ] ]
where option可以是:SUPERUSER | NOSUPERUSER| CREATEDB | NOCREATEDB| CREATEROLE | NOCREATEROLE| INHERIT | NOINHERIT| LOGIN | NOLOGIN| REPLICATION | NOREPLICATION| BYPASSRLS | NOBYPASSRLS| CONNECTION LIMIT connlimit| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL| VALID UNTIL 'timestamp'| IN ROLE role_name [, ...]| IN GROUP role_name [, ...]| ROLE role_name [, ...]| ADMIN role_name [, ...]| USER role_name [, ...]| SYSID uid

参数

  • name:新角色的名称。
  • SUPERUSER,NOSUPERUSER:

    这些子句决定新角色是否是一个“超级用户”,它可以越过数据库内的所有访问限制。超级用户状态很危险并且只应该在确实需要时才用。要创建一个新超级用户,你必须自己是一个超级用户。如果没有指定,默认值是NOSUPERUSER。

  • CREATEDB,NOCREATEDB

    这些子句定义一个角色创建数据库的能力。如果指定了CREATEDB,被定义的角色将被允许创建新的数据库。指定NOCREATEDB将否定一个角色创建数据库的能力。如果没有指定,默认值是NOCREATEDB。

  • CREATEROLE,NOCREATEROLE

    这些子句决定一个角色是否被允许创建新的角色(也就是执行CREATE ROLE)。一个带有CREATEROLE特权的角色也能修改和删除其他角色。如果没有指定,默认值是NOCREATEROLE。

  • INHERIT,NOINHERIT

    如果新的角色是其他角色的成员,这些子句决定新角色是否从那些角色中“继承”特权,把新角色作为成员的角色称为新角色的父角色。一个带有INHERIT属性的角色能够自动使用已经被授予给其直接或间接父角色的任何数据库特权。如果没有INHERIT,在另一个角色中的成员关系只会把SET ROLE的能力授予给那个其他角色,只有在这样做后那个其他角色的特权才可用。如果没有指定,默认值是INHERIT。

  • LOGIN,NOLOGIN

    这些子句决定一个角色是否被允许登录,也就是在客户端连接期间该角色是否能被 给定为初始会话认证名称。一个具有LOGIN属性的角色可以被 考虑为一个用户。没有这个属性的角色对于管理数据库特权很有用,但是却不是 用户这个词的通常意义。如果没有指定,默认值是NOLOGIN, 不过当CREATE ROLE被通过 CREATE USER调用时默认值会是LOGIN。

  • REPLICATION,NOREPLICATION

    这些子句决定一个角色是否为复制角色。角色必须具有这个属性(或者成为一个超级用户)才能以复制模式(物理复制或者逻辑复制)连接到服务器以及创建或者删除复制槽。一个具有REPLICATION属性的角色是一个具有非常高特权的角色,并且只应被用于确实需要复制的角色上。如果没有指定,默认值是NOREPLICATION。 您必须是超级用户才能创建具有REPLICATION属性的新角色。

  • BYPASSRLS,NOBYPASSRLS

    这些子句决定是否一个角色可以绕过每一条行级安全性(RLS)策略。 默认是NOBYPASSRLS。 您必须是超级用户才能创建具有BYPASSRLS属性的新角色。
    注意 pg_dump 将默认把row_security设置为OFF, 以确保一个表的所有内容被转储出来。如果运行 pg_dump 的用户不具有适当的权限,将会返回一个错误。 但是,超级用户和被转储表的拥有者总是可以绕过 RLS。

  • CONNECTION LIMIT connlimit

    如果角色能登录,这指定该角色能建立多少并发连接。-1(默认值)表示无限制。注意这个限制仅针对于普通连接。预备事务和后台工作者连接都不受这一限制管辖。
    [ ENCRYPTED ] PASSWORD ‘password’

  • PASSWORD NULL

    设置角色的口令(口令只对具有LOGIN属性的角色有用,但是不管怎样你还是可以为没有该属性的角色定义一个口令)。


ALTER ROLE 修改角色/用户/用户组权限

ALTER ROLE更改一个 PostgreSQL角色的属性。

ALTER ROLE role_specification [ WITH ] option [ ... ]
其中option可以是:SUPERUSER | NOSUPERUSER| CREATEDB | NOCREATEDB| CREATEROLE | NOCREATEROLE| INHERIT | NOINHERIT| LOGIN | NOLOGIN| REPLICATION | NOREPLICATION| BYPASSRLS | NOBYPASSRLS| CONNECTION LIMIT connlimit| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL| VALID UNTIL 'timestamp'
ALTER ROLE name RENAME TO new_name
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL
其中role_specification可以是:role_name| CURRENT_ROLE| CURRENT_USER| SESSION_USER

实例

更改一个角色的口令:

ALTER ROLE davide WITH PASSWORD 'hu8jmn3';

移除一个角色的口令:

ALTER ROLE davide WITH PASSWORD NULL;

参数

  • name:要对其属性进行修改的角色的名称。
  • CURRENT_ROLE,CURRENT_USER

    修改当前用户而不是一个显式标识的角色。

  • SESSION_USER

    修改当前会话用户而不是一个显式标识的角色。

  • new_name

    该角色的新名称。

  • database_name

    要在其中设置该配置变量的数据库名称。


GRANT 授权

GRANT命令由两种基本的变体:一种授予在一个数据库对象(表、列、视图、外部表、序列、数据库、外部数据包装器、外部服务器、函数、过程、过程语言、模式或表空间)上的特权,另一个授予一个角色中的成员关系。这些变体在很多方面都相似,但是也有很多不同,所以还是得分别描述它们。

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }[, ...] | ALL [ PRIVILEGES ] }ON { [ TABLE ] table_name [, ...]| ALL TABLES IN SCHEMA schema_name [, ...] }TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )[, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }ON [ TABLE ] table_name [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { { USAGE | SELECT | UPDATE }[, ...] | ALL [ PRIVILEGES ] }ON { SEQUENCE sequence_name [, ...]| ALL SEQUENCES IN SCHEMA schema_name [, ...] }TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }ON DATABASE database_name [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { USAGE | ALL [ PRIVILEGES ] }ON DOMAIN domain_name [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { USAGE | ALL [ PRIVILEGES ] }ON FOREIGN DATA WRAPPER fdw_name [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { USAGE | ALL [ PRIVILEGES ] }ON FOREIGN SERVER server_name [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { EXECUTE | ALL [ PRIVILEGES ] }ON { { FUNCTION | PROCEDURE | ROUTINE } routine_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]| ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { USAGE | ALL [ PRIVILEGES ] }ON LANGUAGE lang_name [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }ON LARGE OBJECT loid [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }ON SCHEMA schema_name [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { CREATE | ALL [ PRIVILEGES ] }ON TABLESPACE tablespace_name [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT { USAGE | ALL [ PRIVILEGES ] }ON TYPE type_name [, ...]TO role_specification [, ...] [ WITH GRANT OPTION ][ GRANTED BY role_specification ]GRANT role_name [, ...] TO role_specification [, ...][ WITH ADMIN OPTION ][ GRANTED BY role_specification ]
where role_specification can be:[ GROUP ] role_name| PUBLIC| CURRENT_ROLE| CURRENT_USER| SESSION_USER

REVOKE 撤回授权

REVOKE命令收回之前从一个或者更多角色 授予的特权。关键词PUBLIC隐式定义的全部角色的组。

REVOKE [ GRANT OPTION FOR ]{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }[, ...] | ALL [ PRIVILEGES ] }ON { [ TABLE ] table_name [, ...]| ALL TABLES IN SCHEMA schema_name [, ...] }FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )[, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }ON [ TABLE ] table_name [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ { USAGE | SELECT | UPDATE }[, ...] | ALL [ PRIVILEGES ] }ON { SEQUENCE sequence_name [, ...]| ALL SEQUENCES IN SCHEMA schema_name [, ...] }FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }ON DATABASE database_name [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ USAGE | ALL [ PRIVILEGES ] }ON DOMAIN domain_name [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ USAGE | ALL [ PRIVILEGES ] }ON FOREIGN DATA WRAPPER fdw_name [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ USAGE | ALL [ PRIVILEGES ] }ON FOREIGN SERVER server_name [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ EXECUTE | ALL [ PRIVILEGES ] }ON { { FUNCTION | PROCEDURE | ROUTINE } function_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]| ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ USAGE | ALL [ PRIVILEGES ] }ON LANGUAGE lang_name [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }ON LARGE OBJECT loid [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }ON SCHEMA schema_name [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ CREATE | ALL [ PRIVILEGES ] }ON TABLESPACE tablespace_name [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ GRANT OPTION FOR ]{ USAGE | ALL [ PRIVILEGES ] }ON TYPE type_name [, ...]FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]REVOKE [ ADMIN OPTION FOR ]role_name [, ...] FROM role_specification [, ...][ GRANTED BY role_specification ][ CASCADE | RESTRICT ]where role_specification can be:[ GROUP ] role_name| PUBLIC| CURRENT_ROLE| CURRENT_USER| SESSION_USER

权限定义

  • SELECT

    允许 SELECT 从任何列、或特定的列、表、视图、物化视图、或其他类似表格的对象。 也允许使用COPY TO。 还需要这个权限来引用UPDATE 或 DELETE中现有的列值。 对于序列,这个权限还允许使用currval 函数。对于大对象,此权限允许读取对象。

  • INSERT

    允许将新行的INSERT加入表、视图等等。 可以在特定列上授予,在这种情况下INSERT命令中只有那些列可以被分配(其他列将因此而收到默认值)。 还允许使用COPY FROM。

  • UPDATE

    允许 UPDATE 更新任何列、或指定列、表、视图等等。 (实际上,任何有效的UPDATE命令也需要SELECT权限,因为它必须引用表列来确定要更新的行,和/或计算列的新值。) SELECT … FOR UPDATE和SELECT … FOR SHARE除了SELECT权限外,还需要至少一列上的这个权限。 对于序列,这个权限允许使用 nextval 和 setval 函数。对于大对象,此权限允许写入或截断对象。

  • DELETE

    允许 DELETE 从表、视图等等中删除行. (实际上,任何有效的DELETE命令也需要SELECT权限,因为它必须引用表列来确定要删除的行。)

  • TRUNCATE

    允许在表上TRUNCATE。

  • REFERENCES

    允许创建引用表或表的特定列的外键约束。

  • TRIGGER

    允许在表、视图等等上创建触发器。

  • CREATE

    对于数据库,允许在数据库中创建新的模式和发布,并允许在数据库中安装受信任的扩展。
    对于模式,允许在模式中创建新对象。要重命名现有对象,你必须拥有对象 and所包含模式的此权限。
    对于表空间,允许在表空间中创建表、索引和临时文件,并允许创建将表空间作为默认表空间的数据库。
    注意,取消该特权不会改变现有对象的存在或位置。

  • CONNECT

    允许受让者连接到数据库。此权限在连接启动时进行检查(加之pg_hba.conf施加的任何约束).

  • TEMPORARY

    允许在使用数据库时创建临时表。

  • EXECUTE

    允许调用函数或过程,包括使用在函数之上实现的任何运算符。这是适用于函数和过程的唯一权限类型。

  • USAGE

    对于程序语言,允许使用语言来创建该语言的函数。 这是适用于过程语言的唯一权限类型。
    对于模式,允许访问模式中包含的对象(假设对象自己的权限要求也已得到满足)。 从本质上讲,这允许受让者“look up”模式中的对象。如果没有此权限,仍可以看到对象名称,例如通过查询系统目录。 此外,在撤消此权限后,现有会话可能还具有以前执行过此查找的语句,因此这不是阻止对象访问的彻底安全的方法。
    对于序列, 允许使用currval 和 nextval 函数.
    对于类型和域,允许在创建表、函数和其他模式对象时使用类型或域。 (注意,此权限不控制类型的全部 “usage” ,例如查询中出现的类型的值。 它仅防止创建依赖于类型的对象。 此权限的主要目的是控制哪些用户可以对类型创建依赖项,这可能会防止所有者以后更改类型。 )
    对于外部数据包装器,允许使用外部数据包装器创建新服务器。
    对于外部服务器,允许使用服务器创建外部表。受让者还可以创建、更改或删除与该服务器关联的自己的用户映射。

pgsql-Create_ALTER_GRANT_REVOKE命令语法相关推荐

  1. grep的常用命令语法

    grep的常用命令语法 1. 双引号引用和单引号引用 在g r e p命令中输入字符串参数时,最好将其用双引号括起来.例如:"m y s t r i n g".这样做有两个原因,一 ...

  2. linux重定向命令语法,linux的重定向命令应用及语法

    1. 标准输入的控制 语法:命令 文件将命令的执行结果送至指定的文件中. 例如: ls -l > list 将执行"ls -l" 命令的结果写入文件list 中. 语法:命令 ...

  3. Google搜索命令语法大全

    以下是目前所有的Google搜索命令语法,它不同于Google的帮助文档,因为这里介绍 了几个Google不推荐使用的命令语法.大多数的Google搜索命令语法有它特有的使用格式,希望大家能正确使用. ...

  4. Matlab自学笔记四:调用函数基本方法、传递参数、函数工作区、命令语法、调用匿名函数

    1.调用函数的基本方法 题目:创建函数y=x²+x+1 首先,使用上一篇的创建函数文件的方法(推荐先看上一篇:Matlab创建函数文件.函数语法定义.匿名函数.多元函数.局部函数等知识串联理解),创建 ...

  5. Linux中常用的tar解压打包命令语法介绍

    常用的tar解压打包命令语法介绍 1.命令格式 2.命令功能 3.命令参数 4.常见解压/压缩命令 5.使用实例 1.命令格式 tar[必要参数][选择参数][文件] 2.命令功能 用来压缩和解压文件 ...

  6. pgsql 常用命令

    pgsql 常用命令 一.模式(schema) 一个数据库包含一个或多个命名模式,模式中包含着表.模式还包含其他类型的命名对象, 包括数据类型.函数和操作符.相同的对象名称可以被用于不同的模式中而不会 ...

  7. linux tail命令语法

    2019独角兽企业重金招聘Python工程师标准>>> tail命令语法 tail [ -f ] [ -c Number | -n Number | -m Number | -b N ...

  8. CMD命令行 输入行太长 命令语法不正确 Windows CMD 问题解决

    Windows CMD命令行解释器[输入行太长. 命令语法不正确] 这是一个很少见的错误,我在全网搜,大多都是在%CLASSPATH%改成"%CLASSPATH%",但我发现kaf ...

  9. Linux语法格式是什么,linux命令语法格式

    一.命令的一般格式 command [option]... [argument]... command [options] [arguments] 具体说明: 1.command: 表示命令的名称,如 ...

  10. linux的tail命令语法

    tail命令简介 linux tail命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗来讲,就是把某个档案文件的最后几行显示到终端上,如果该档案有更新,tail会自动刷新,确保 ...

最新文章

  1. 数独高阶技巧入门之四:简单异数链
  2. 以简求快--java快速开发框架
  3. JAR文件——2017.08.04
  4. JavaScript —从回调到异步/等待
  5. Html 进行DOM 操作(放缩,颜色...),HTML抓图(放缩,滚动,拼接)
  6. 板式橡胶支座弹性模量怎样计算_Midas Civil支座模拟的详细解决方法
  7. ES6-函数中new.target 方法
  8. Java讲课笔记28:Path接口和Files工具类
  9. springboot启动图标_SpringBoot基础教程
  10. 好久没来51cto了。
  11. TeeChart基础使用手册
  12. 网络基础知识之报文格式介绍
  13. excel转置怎么操作_技能篇:Excel数据处理小技巧
  14. 什么是工业机器人,工业机器人的分类与特点
  15. 谈医药行业网站的运营模式分析
  16. (6)JsonResponse, Cookie, Session
  17. Myeclipse10怎么找到 Servers
  18. 我决定切换到 Vue.js,不再使用 React!
  19. 中石油大学22春季《大学英语(四)#》第一阶段在线作业
  20. 深入理解计算机系统 2.1 节信息存储,深入理解计算机系统(原书第3版)- 第2章 信息的表示和处理 笔记...

热门文章

  1. Coinbase将与全球第二大保险经纪公司Aon合作推出其专属保险公司
  2. 西门子PLC应该学习哪种通信协议?
  3. flash站的seo
  4. 学习笔记(一)MATLAB-SIMULINK-SIMSCAPE(电器库)
  5. .net core 视图文件乱码问题
  6. 如何给Ubuntu16.04更新软件
  7. 2013.4.8早会
  8. 聚星Note02- 后台管理环境搭建(2)
  9. Postgres SQL 设置pgAdmin使用谷歌打开
  10. 资深老师告诉你机加工铣刀选用的原则