PostgreSQL的模式、表、空间、用户间的关系

本文详细介绍了PostgreSQL中Schema、表空间、用户与角色的概念及它们之间的关系。Schema用于逻辑组织数据库对象,表空间确定数据的物理存储位置,角色与用户在权限管理中相辅相成。文章通过实例解析了如何创建和管理这些概念,强调了正确配置对数据库管理和性能优化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在平时的工作中,我们经常接触到数据库表用户以及角色的使用,由于经常使用默认的数据库表空间模式(Schema),所以我们往往忽略了数据库表空间和模式的概念以及作用。

接下来,先介绍一下模式和表空间的定义以及作用。

什么是Schema?

一个数据库包含一个或多个已命名的模式,模式又包含表。模式还可以包含其它对象, 包括数据类型函数操作符等。同一个对象名可以在不同的模式里使用而不会导致冲突; 比如,herschemamyschema都可以包含一个名为mytable的表。 和数据库不同,模式不是严格分离的:只要有权限,一个用户可以访问他所连接的数据库中的任意模式中的对象。

我们需要模式的原因有好多:

  • 允许多个用户使用一个数据库而不会干扰其它用户。
  • 把数据库对象组织成逻辑组,让它们更便于管理。
  • 第三方的应用可以放在不同的模式中,这样它们就不会和其它对象的名字冲突。

模式类似于操作系统层次的目录,只不过模式不能嵌套。

什么是表空间?

表空间是实际的数据存储的地方。一个数据库schema可能存在于多个表空间,相似地,一个表空间也可以为多个schema服务。

通过使用表空间,管理员可以控制磁盘的布局。表空间的最常用的作用是优化性能,例如,一个最常用的索引可以建立在非常快的硬盘上,而不太常用的表可以建立在便宜的硬盘上,比如用来存储用于进行归档文件的表。

PostgreSQL表空间、数据库、模式、表、用户、角色之间的关系

角色与用户的关系

PostgreSQL中,存在两个容易混淆的概念:角色/用户。之所以说这两个概念容易混淆,是因为对于PostgreSQL来说,这是完全相同的两个对象。唯一的区别是在创建的时候:

1.我用下面的psql创建了角色custom:

CREATE ROLE custom PASSWORD 'custom';

接着我使用新创建的角色custom登录,PostgreSQL给出拒绝信息:

FATAL:role 'custom' is not permitted to log in.

说明该角色没有登录权限,系统拒绝其登录

2.我又使用下面的psql创建了用户guest:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值