PostgreSQL_通过schema控制用户权限

背景环境

schema的特点

  • schema概念像命名空间
  • schema下不能再有schema嵌套
  • 各个对象比如表,函数等存放在各个schema下
  • 同一个schema下不能有重复的对象名字,但在不同schema下可以重复

使用schema的作用

  • 方便管理多个用户共享一个数据库,但是又可以互相独立.
  • 方便管理众多对象,更有逻辑性
  • 方便兼容某些第三方应用程序,创建对象时是有schema的

比如要设计一个复杂系统,由众多模块构成,有时候模块间又需要有独立性。各模块存放单独的数据库显然是不合适的。 这时候使用schema来分类各模块间的对象,再对用户进行适当的权限控制,这样逻辑也非常清晰。

常用数据库中的schema异同

大多数数据库都有schema或者同等意义的概念,但是含义和具体操作不同。

  • PostgreSQL中,一个database下可以有多个schema。可以给schema指定一个owner,如果没有指定,那么当前用户就是schema的默认owner。
  • 在Oracle数据库中不能直接新建一个schema,系统在创建一个用户的同时为这个用户创建一个同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。
  • 在MySQL中没有schema,所以创建一个database的效果和建立一个schema是相同的。我们可以简单的理解为,MySQL中的database就是schema。

本次测试软件环境如下

CentOS 7 x64

PostgreSQL 11.1

权限矩阵

我们需要在PostgreSQL中建立一个database,并且在这个db下建立多个schema。每个schema有自己的owner,并且db owner可以操作所有schema。

简单的权限关系矩阵如下

user \ schema S00 S01 S02
db_demo_owner (db owner 主用户) Y Y Y
schema_owner_01(子用户) N Y N
schema_owner_02(子用户) N N Y

初始化数据库

Superuser创建用户和数据库

-- 使用superuser登录(admin是提前建立的superuser,避免直接使用postgres)
psql --username=admin --dbname=postgres --password
复制代码
-- 新建用户,这个用户将成为Master用户
drop user if exists db_demo_owner;
create user db_demo_owner with password 'xxx';

-- 新建一个子用户
drop user if exists schema_owner_01;
create user schema_owner_01 with password 
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值