数据库实战演练-postgresql权限控制

先上图一张大而全:
在这里插入图片描述

在具体掌握postgresql权限概念之前,首先我们要准确而透彻地了解postgresql的对象层级,如果没法做到那么准确,我来教你啊:

【重点】postgresql对象层级:数据库(database)->模式(schema)->表(table)

再参照上图可以总结出结论:

数据库(database)权限

1、包括Connect、Create、Temporary;
2、Connect很好理解,就是连接数据库的权限,默认创建用户即具有该权限;
3、Create其实是创建下一个层级对象的权限,在这里就是创建模式的权限。

模式(schema)权限

1、包括Create,Usage;
2、Create同样是创建下一个层级对象的权限,在这里就是创建表的权限;
3、Usage就是除了建表权限之外的其他DDL权限,包括删表,修改表结构等。

【知识重点】

个人一直认为postgresql的权限机制是比较割裂的,最明显的体现:即使对schema赋权所有权限,也无法拥有对其表对象数据内容的DML、DQL操作权限。

表(table)权限

1、包括Delete,Insert,References,Select,Trigger,Truncate,Update,这些权限的说明就不多加赘述了。

接下来具体实操:(示例库名:mydb,示例用户名:readonly,示例模式名:myschema)

授予权限:

语法规范

GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP groupname | username }

数据库级别授权

grant all privileges on database mydb to readonly;

等同于(前后两个sql效果一致):

grant connect,create,temporary on database mydb to readonly; 

也可以单一权限授予:

grant create on database mydb to readonly;

模式级别授权

grant all privileges on schema myschema to readonly;

等同于(前后两个sql效果一致):

grant create,usage on schema myschema to readonly;

也可以单一权限授予:

grant usage on schema myschema to readonly;

表级别授权

grant all privileges on all tables in schema myschema to readonly;

等同于(前后两个sql效果一致):

grant delete,insert,references,select,trigger,truncate,update on all tables in schema myschema to readonly;

也可以单一权限授予指定模式下所有表:

grant insert  on all tables in  schema myschema to readonly;

还可以单一权限授予指定某张表:

grant insert on myschema.mytable to readonly;

回收权限:

语法规范

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

回收权限的操作即是将grant…to…替换为revoke…from…即可。跃跃欲试的小伙伴可以留言写下您的手敲大作哦。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值