• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >PostgreSQL > PostgreSQL教程(十二):角色和权限管理介绍

PostgreSQL教程(十二):角色和权限管理介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了postgresql 用户权限,postgresql 权限,postgresql教程,postgresql安装教程,postgresql使用教程等相关知识,希望本文的分享对您有所帮助

PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户。角色可以拥有数据库对象,如表、索引,也可以把这些对象上的权限赋予其它角色,以控制哪些用户对哪些对象拥有哪些权限。
   
一、数据库角色:

    1. 创建角色:
      CREATE ROLE role_name;
 </div>
    2. 删除角色:
      DROP ROLE role_name;
    </div>
    3. 查询角色:

    检查系统表pg_role,如:
      SELECT usename FROM pg_role;
 </div>
    也可以在psql中执行\du命令列出所有角色。
   
二、角色属性:

    一个数据库角色可以有一系列属性,这些属性定义他的权限,以及与客户认证系统的交互。

    1. 登录权限:

    只有具有LOGIN属性的角色才可以用于数据库连接,因此我们可以将具有该属性的角色视为登录用户,创建方法有如下两种:
      CREATE ROLE name LOGIN PASSWORD '123456‘;
    CREATE USER name PASSWORD '123456';
    </div>
    2. 超级用户:
    数据库的超级用户拥有该数据库的所有权限,为了安全起见,我们最好使用非超级用户完成我们的正常工作。和创建普通用户不同,创建超级用户必须是以超级用户的身份执行以下命令:
      CREATE ROLE name SUPERUSER;
    </div>
    3. 创建数据库:
    角色要想创建数据库,必须明确赋予创建数据库的属性,见如下命令:
      CREATE ROLE name CREATEDB;
    </div>
    4. 创建角色:
    一个角色要想创建更多角色,必须明确给予创建角色的属性,见如下命令:
      CREATE ROLE name CREATEROLE;
 </div>
   
三、权限:

    数据库对象在被创建时都会被赋予一个所有者,通常而言,所有者就是执行对象创建语句的角色。对于大多数类型的对象,其初始状态是只有所有者(或超级用户)可以对该对象做任何事情。如果要允许其它用户可以使用该对象,必须赋予适当的权限。PostgreSQL中预定义了许多不同类型的内置权限,如:SELECT、INSERT、UPDATE、DELETE、RULE、REFERENCES、TRIGGER、CREATE、TEMPORARY、EXECUTE和USAGE。

    我们可以使用GRANT命令来赋予权限,如:
      GRANT UPDATE ON accounts TO joe;
 </div>
    对于上面的命令,其含义为将accounts表的update权限赋予joe角色。此外,我们也可以用特殊的名字PUBLIC把对象的权限赋予系统中的所有角色。在权限声明的位置上写ALL,表示把适用于该对象的所有权限都赋予目标角色。
    要撤销权限,使用合适的REVOKE命令:
      REVOKE ALL ON accounts FROM PUBLIC;
 </div>
    其含义为:对所有角色(PUBLIC)撤销在accounts对象上的所有权限(ALL)。

四、角色成员:

    在系统的用户管理中,通常会把多个用户赋予一个组,这样在设置权限时只需给该组设置即可,撤销权限时也是从该组撤消。在PostgreSQL中,首先需要创建一个代表组的角色,之后再将该角色的membership权限赋给独立的用户角色即可。
    1. 创建一个组角色,通常而言,该角色不应该具有LOGIN属性,如:
      CREATE ROLE name;  
 </div>
    2. 使用GRANT和REVOKE命令添加和撤消权限:
      GRANT group_role TO role1, ... ;
    REVOKE group_role FROM role1, ... ;
 </div>
  一个角色成员可以通过两种方法使用组角色的权限,如:
    1. 每个组成员都可以用SET ROLE命令将自己临时"变成"该组成员,此后再创建的任何对象的所有者将属于该组,而不是原有的登录用户。
    2. 拥有INHERIT属性的角色成员自动继承它们所属角色的权限。
    见如下示例:
      CREATE ROLE joe LOGIN INHERIT;  --INHERIT是缺省属性。
    CREATE ROLE admin NOINHERIT;
    CREATE ROLE wheel NOINHERIT;
    GRANT admin TO joe;
    GRANT wheel TO admin;
 </div>
    现在我们以角色joe的身份与数据库建立连接,那么该数据库会话将同时拥有角色joe和角色admin的权限,这是因为joe"继承(INHERIT)"了admin的权限。然而与此不同的是,赋予wheel角色的权限在该会话中将不可用,因为joe角色只是wheel角色的一个间接成员,它是通过admin角色间接传递过来的,而admin角色却含有NOINHERIT属性,这样wheel角色的权限将无法被joe继承。
  这样wheel角色的权限将无法被joe继承。此时,我们可以在该会话中执行下面的命令:
    SET ROLE admin;
 </div>
    在执行之后,该会话将只拥有admin角色的

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PostgreSQL教程(十二):角色和权限管理介绍
  • 用一整天的时间安装postgreSQL NTFS权限

相关文章

  • 2017-09-08浅谈 PostgreSQL 的 timestamp 类型
  • 2017-05-11PostgreSQL 数据库性能提升的几个方面
  • 2017-05-11PostgreSQL教程(七):函数和操作符详解(3)
  • 2017-05-11CentOS 7下安装PostgreSQL 9.6的教程分享
  • 2017-05-11PostgreSQL中常用的时间日期脚本使用教程
  • 2017-05-11深入理解PostgreSQL的MVCC并发处理方式
  • 2017-05-11phpPgAdmin 配置文件参数说明中文版
  • 2017-05-11PostgreSQL中的OID和XID 说明
  • 2017-05-11Debian中PostgreSQL数据库安装配置实例
  • 2017-05-11Windows下Postgresql数据库的下载与配置方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Windows PostgreSQL 安装图文教程
    • 深入理解PostgreSQL的MVCC并发处理方式
    • PostgreSQL教程(十八):客户端命令(2)
    • 深入解读PostgreSQL中的序列及其相关函数的用法
    • Mybatis调用PostgreSQL存储过程实现数组入参传递
    • Linux CentOS 7安装PostgreSQL9.3图文教程
    • PostgreSQL之分区表(partitioning)
    • Debian中PostgreSQL数据库安装配置实例
    • PostgreSQL安装、配置及简单使用方法
    • PostgreSQL教程(十一):服务器配置

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有