postgresql技术大讲堂 -凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 593413
  • 博文数量: 486
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4941
  • 用 户 组: 普通用户
  • 注册时间: 2018-07-05 13:59
个人简介

ocp考试资料群:569933648 验证码:ocp ocp 12c 19c考试题库解析与资料群:钉钉群号:35277291

文章分类

全部博文(486)

文章存档

2024年(3)

2023年(35)

2021年(151)

2020年(37)

2019年(222)

2018年(38)

我的朋友
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: mysql/postgresql

2023-03-03 10:52:34


postgresql从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对pg基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱pg、学习pg的同学们有帮助,欢迎持续关注cuug pg技术大讲堂。

part 8:pg对象管理

内容1:postgresql 对象权限概述

内容2:postgresql 对象权限授权

内容3:postgresql 查看对象权限

内容4:postgresql 对象权限回收


8.1、对象权限概述

1、每个数据库对象都有一个所有者,默认情况下,所有者拥有该对象的所有权限

2、在数据库中所有的权限都和角色挂钩

3、对超级用户postgres不做权限检查,其它用户走acl(access control list)

4、对于数据库对象,开始只有所有者和超级用户可以做任何操作,其它走acl

对象级别的权限

表级对象权限控制

列级别权限控制

序列权限控制

类型域的权限控制(域简单来说就是自定义的带约束的数据类型)

fdw权限控制

fs权限控制

函数权限控制

\h grant显示所有可设置的访问权限

对象权限列表

rolename=xxxx -- privileges granted to a role =xxxx -- privileges granted to public r -- select ("read") w -- update ("write") a -- insert ("append") d -- delete d -- truncate x -- references t -- trigger x -- execute u -- usage c -- create c -- connect t -- temporary arwddxt -- all privileges (for tables, varies for other objects) * -- grant option for preceding privilege /yyyy --role that granted this privilege

对象权限含义

select:允许从指定表,视图或序列的任何列或列出的特定列进行select。也允许使用copy to。在 update或delete中引用现有列值也需要此权限。对于序列,此权限还允许使用currval函数。对于大对象,此权限允许读取对象。

insert:允许将新行insert到指定的表中。如果列出了特定列,则只能在insert命令中为这些列分配(因 此其他列将接收默认值)。也允许copy from。

update:允许更新指定表的任何列或列出的特定列,需要select权限。

delete:允许删除指定表中的行,需要select权限。

truncate:允许在指定的表上截断数据。

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

trigger:允许在指定的表上创建触发器。

create:对于数据库,允许在数据库中创建新的schema、table、index。

connect:允许用户连接到指定的数据库。在连接启动时检查此权限。

temporary、temp:允许在使用指定数据库时创建临时表。

execute:允许使用指定的函数或过程以及在函数。

usage:对于schema,允许访问指定模式中包含的对象;对于sequence,允许使用currval和nextval函数。对于类型和域,允许在创建表,函数和其他模式对象时使用类型或域。

all privileges:一次授予所有可用权限。


8.2、对象权限授权

对象权限授权 

每种类型的对象权限都不一样,详细可参考:

基本语法参考(表对象):

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 ]

授权示例

授权单个权限给用户

grant select on tab_name to role_name;

授权多个/所有权限给用户

grant select, update, insert on tab_name to role_name; grant all on tab_name to role_name;

授权某模式下所有表的查询权限给用户

grant select on all tables in schema schema_name to role_name;

授权列权限给用户

grant select (col1), update (col1) on tab_name to role_name;

授权所有权限给所有用户

grant all on tab_name to public;


8.3、查看对象权限

查看对象权限

查看对象权限数据字典表

information_schema.table_privileges

显示对象的访问权限列表

\z或\dp [tablename]

查看对象权限示例

查看对象权限数据字典表

select grantor,grantee,privilege_type,is_grantable from information_schema.table_privileges where table_name='t1';

查看对象权限示例

 显示对象的访问权限列表

\z或\dp [tablename]


8.4、对象权限回收

回收示例

回收单个权限

revoke select on tab_name from role_name;

回收多个/所有权限

revoke select, update, insert on tab_name from role_name; 

revoke all on tab_name from role_name;

回收某模式下所有表的查询权限

revoke select on all tables in schema schema_name from role_name;

回收列权限

revoke select (col1), update (col1) on tab_name from role_name;

回收所有权限

revoke all on tab_name from public;

回收示例(特例) 

任何用户对public模式都有all的权限,为了安全可以禁止用户对public 模式的create权限。

revoke create on schema public from public;

属主可以取消自己在指定表上的某些权限

revoke updae on tab_name from role_name;revoke all on tab_name from role_name;

属主可以授权自己在指定表上的某些权限


grant all on tab_name to role_name;

以上就是part 8 - pg对象权限管理 的内容,欢迎进群一起探讨交流,钉钉交流群:35,82,24,60,往期视频联系cuug咨询老师观看下载

从零开始学,一学就会,赶紧加入吧!


阅读(154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图