pg库角色成员关系

pg库角色成员关系

1.pg库可以创建组角色,将普通角色加入该组成为组成员角色,可以继承该组的权限

1.1 创建一个组角色

  mydb=# create role login_group;
  CREATE ROLE 

1.2 创建两个普通角色

  mydb=# create role aliex login;                   
  CREATE ROLE              
  mydb=# create role bob login;  
  CREATE ROLE    

1.3 此时两个普通角色是没查询‘userinfo’表权限的

  mydb=> select * from userinfo;
  ERROR:  permission denied for relation userinfo     

1.4 将两个普通角色加入‘login_group’组,并且给‘login_group’组授予查询‘userinfo’表的权限

  mydb=# grant login_group to aliex;
  GRANT ROLE                        
  mydb=# grant login_group to bob;  
  GRANT ROLE    
  mydb=# grant select on userinfo to loggin_group;
  GRANT                                           

1.5 此时两个普通角色继承了login_group组查询‘userinfo’的权限

  [user1@localhost ~]$ psql -h 192.168.1.200 -U bob mydb;
  mydb=> select * from userinfo;
   id | name                                    
  ----+------                   
    1 | 卫庄                      
    1 | tom                     
  (2 rows)

2. 删除角色(drop role rolename)角色如果有对象依赖关系未解除,直接删除会报错

2.1 给bob角色赋予创建数据库的权限

   mydb=# alter role bob with createdb;
   ALTER ROLE    

2.2 使用bob用户登入postgres数据,并创建一个数据库

   [user1@localhost ~]$ psql -h 192.168.1.200 -U bob postgres;                                            
   postgres=> create database bobdb;                      
   CREATE DATABASE  
   postgres=> \l                                                                                              
                                        List of databases                                     
      Name    |   Owner    | Encoding |   Collate   |    Ctype    |     Access privileges     
   -----------+------------+----------+-------------+-------------+---------------------------
    bobdb     | bob        | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                           

2.3 直接删除bob角色验证

   mydb=# drop role bob;                                                 
   ERROR:  role "bob" cannot be dropped because some objects depend on it
   DETAIL:  owner of database bobdb  

2.4 将数据库转移给aliex

   mydb=# alter database bobdb owner to aliex;                                    
   ALTER DATABASE
   mydb=# \l                                                                                                               
                                        List of databases                                     
      Name    |   Owner    | Encoding |   Collate   |    Ctype    |     Access privileges     
   -----------+------------+----------+-------------+-------------+---------------------------
    bobdb     | aliex      | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |  

2.5 数据库依赖关系转移后再次删除bob角色

   mydb=# drop role bob;
   DROP ROLE
   mydb=# \du bob                                               
              List of roles            
    Role name | Attributes | Member of 
   -----------+------------+-----------

2.6 另一种权限转移的方式

   bobdb=# reassign owned  by aliex to  bob; # 将转移给aliex的bobdb再转移回给bob
   bobdb=# \l                                                                                 
                                        List of databases                                     
      Name    |   Owner    | Encoding |   Collate   |    Ctype    |     Access privileges     
   -----------+------------+----------+-------------+-------------+---------------------------
    bobdb     | bob        | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |             

2.7 系统默认角色

   pg_read_all_settings  读取所有配置变量,包含通常只对超级用户可见的配置变量
   pg_read_scan_stats    读取所有‘pg_stat_*’视图并使用各种统计相关的扩展,甚至通常只对超级用户可见的扩展
   pg_stat_scan_tables   执行可能对表进行需要很长时间 "ACCESS SHAERE" 锁定的监视功能
   pg_signal_backend     给其它后端发送信号
   pg_monitor            读取/执行各种监视视图和函数.此角色是pg_read_all_settings,pg_read_scan_stats,pg_stat_scan_tables的成员
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值