ocp考试资料群:569933648 验证码:ocp ocp 12c 19c考试题库解析与资料群:钉钉群号:35277291
全部博文(486)
分类: 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咨询老师观看下载
从零开始学,一学就会,赶紧加入吧!