PG中user与schema管理

文章介绍了PG数据库中schema的概念,作为对象的集合,允许不同对象在同一数据库内分类存储且互不冲突。用户可以创建并拥有多个模式,公共的public模式对所有用户开放。模式的管理涉及权限授权,包括对象访问和模式本身的使用权。删除模式需谨慎,可能需要先删除依赖的对象。此外,PG的搜索路径不同于Oracle,它按照设定的顺序查找对象。
摘要由CSDN通过智能技术生成

PG中user与schema管理

schema概念

  • 对象的集合叫做模式。比如A用户下有几张表和对应的索引,那么该用户下的所有对象的集合就叫作A模式。
  • 可以把用户下拥有的对象根据业务分类,不同的对象存放在不同的模式下。
  • 新建的数据库默认会创建不同的模式来管理对象,比如information_schema,pg_toast,pubilc等模式。
  • 不同的schema下可以有相同的名字的表、函数等对象,互相之间是不冲突的。只要有权限,每个schema的对象死可以相互调用的。

用户与schema对应关系

  • 一个用户可以创建与拥有多个模式。(oracle一个用户默认创建根用户名一样的模式,pg不会默认创建)
  • 一个模式只能属于一个用户
  • 普通用户创建模式时需要授权在指定的数据库下创建模式的权限
    授权 grant create on database 数据库名 to 用户名
    创建模式 create schema 模式名
    在这里插入图片描述
    oracle: select * form sport.basketball;其中sport是模式名,basketball是对象名(因为oracle用户名和模式名一样所以常会误会sport是用户名)
    pg: form sport.basketball;其中sport是模式名,basketball是对象名

Public schema

  • 初始化数据库时会自动创建一个public模式,共享给所有用户使用,任何用户都可以把创建在该模式下,由于PG中一个用户对应多个模式,创建用户时没有创建对应的默认模式,而对象都是基于模式管理的,所以创建一个公用的模式public
  • 基于数据库安全考虑可以删除public模式

Schema管理

  • 授权某个模式下的对象访问权限个其他用户,则需要先授权访问该模式的权限给其他用户。
    授权模式权限:GRANT USAGE ON SCHEMA 模式名 TO 用户名
    授权对象权限:GRANT SELECT ON 模式名.对象名 TO 用户名
  • 删除模式。只能由其拥有者或者超级用户来删除
    DROP SCHEMA 模式名;(需要先删掉该模式下的所有对象)
    删除模式时同时删除所依赖的对象
    DROP SCHEMA 模式名 CASCADE;

搜索路径

这一点与oracle是不一样的,oracle是根据字典表来搜索的

  • 查看搜索路径
    show search_path
  • 设置搜索路径
    set search_path=" u s e r " , p u b l i c ; 其中 user",public; 其中 user"public;其中user是获取当前用户名,如果用户下存在相同名字的模式,则搜索路径也将会包含该模式。
  • \d命令搜索规律
  • 如果在前面的搜索路径中找到了对象则会放弃后面模式的搜索
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值