PostgreSQL学习笔记(一):数据库、模式、表空间、用户、用户角色

这篇具有很好参考价值的文章主要介绍了PostgreSQL学习笔记(一):数据库、模式、表空间、用户、用户角色。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念

    本文讨论所说的都是 PostgreSQL 数据库的相关定义内容,其中名词以及翻译如下:
数据库:database
模式:schema
表:table
表空间:tablespace
用户:use
用户角色:role

数据库(database)

PostgreSQL 通用的语法:

database.schema.table

    在 PostgreSQL 数据库中,数据库(database)可以认为是物理层面数据集合。当使用不同的文字编码/排序规则等管理数据对象时,不同的文字编码规则/排序规则要创建独立的的数据库。PostgreSQL 关于文字编码/排序规则等行为的默认规则是以database为单位的。当需要对一组数据库表(或函数等)的并发数进行单独控制时,需要对这些表(或函数等)放入一个新建的 database 中,PostgreSQL 对最大并发访问会话进行单独控制的最小单元是 database。

    当需要对一组数据库表(或函数等数据库对象)的访问进行严格隔离时(不仅仅是通过 SQL 层面的 priviledge 来控制),在 PostgreSQL 中,    对于 Access 的控制,除了 SQL 级别的权限控制之外,可以在 pg_hba.conf 配置文件中进行会话级别的认证控制。
会话级别的高精度访问控制可做到:
【1】会话来源(IP地址);
【2】会话所使用的数据库用户;
【3】会话连接目标的Database名

模式(schema)

    模式是数据库中的一个概念,可以将其理解为一个命名空间或目录,不同的模式下可以有相同名称的表、函数等对象而不会产生冲突。如果没有模式的概念,那么不同用户或者开发者在创建各自数据库对象命名时可能会发生冲突以及相互干扰等问题,有了模式,就可以避免这些问题。模式的好处如下:

  • 允许多个用户使用同一个数据库且用户之间不会互相干扰
  • 把数据库对象放在不同的模式下组织成逻辑组,使数据库对象更加便于管理
  • 第三方应用可以放在不同的模式中,这样就不会和其他对象的名字产生冲突了

    一个数据库包含一个或者多个模式,模式中又包含了表、函数以及操作符等数据库对象。其中的层级关系是:数据库-模式-对象。需要注意的是,虽然能创建多个数据库实例,但不能同时访问不同数据库中的对象,当需要访问另一个数据库中的表或其他对象时,需要重新连接到这个数据库,而模式却没有此限制,一个用户在连接到一个数据库后,就可以同时访问这个数据库中多个模式的对象。

表空间(tablespace)

    不同的数据库表空间有不同的定义。在 PostgreSQL 中,表空间允许在文件系统中定义数据库对象存储的位置,实质上就是指定一个目录。

应用场景

  • 存储磁盘没有空间时,可以使用表空间把数据存在其它地方;
  • 利用表空间对数据库进行性能优化。常用来将频繁使用的数据表或者索引放在高性能的硬盘上,而较少使用的放在普通硬盘上。

自带表空间

  • pg_default:用来存储系统目录对象,用户表、用户表index、临时表、临时表index、内部临时表的默认空间。
  • pg_global:用来存储系统字典表。

pg_tblspc 存储手动创建表空间的软连接信息。初始是空的,当手动增加表空间时,该目录下会自动生成一个软连接,指向表空间设定的路径。

    一个表空间可以让多个数据库使用,而一个数据库可以使用多个表空间,属于“多对多”的关系。注意:Oracle 中一个表空间只属于一个数据库,而一个数据库可以使用多个表空间,属于“一对多”的关系。

用户(user)和 角色(role)

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

  1. 我用下面的psql创建了角色kanon:
    CREATE ROLE kanon PASSWORD ‘kanon’;
    接着我使用新创建的角色kanon登录,PostgreSQL给出拒绝信息:
    FATAL: role ‘kanon’ is not permitted to log in.
    说明该角色没有登录权限,系统拒绝其登录。

  2. 我又使用下面的psql创建了用户kanon2:
    CREATE USER kanon PASSWORD ‘kanon2’;
    接着我使用kanon2登录,登录成功。

    难道这两者有区别吗?查看文档,又这么一段说明:“CREATE USER is the same as CREATE ROLE except that it implies LOGIN.”----CREATE USER 除了默认具有 LOGIN 权限之外,其他与 CREATE ROLE 是完全相同的。
    为了验证这句话,修改 kanon 的权限,增加 LOGIN 权限:ALTER ROLE kanon LOGIN;再次用kanon登录,成功!
那么,事情就明了了:CREATE ROLE kanon PASSWORD ‘kanon’ LOGIN 等同于 CREATE USER kanon PASSWORD ‘kanon’.
这就是 ROLE/USER 的区别。
PostgreSQL学习笔记(一):数据库、模式、表空间、用户、用户角色文章来源地址https://www.toymoban.com/news/detail-512252.html

到了这里,关于PostgreSQL学习笔记(一):数据库、模式、表空间、用户、用户角色的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用

    MySQL数据库和postgresql数据库之间的差异并不多,这里的差异指的是对SQL语言的支持两者并不大,但底层的东西差异是非常多的,例如,MySQL的innodb引擎概念,数据库用户管理,这些和postgresql相比是完全不同的(MySQL用户就是用户,没有角色,postgresql有用户,有角色,但差异不

    2024年02月14日
    浏览(66)
  • MySQL数据库学习笔记(二)

    排序查询 :select 字段列表 from [表名]  order by  [字段名1] [asc升序/desc降序,默认值为升序],[字段名2] [排序方式];//字段名1为优先级排序,如果字段名1有相同的,再以字段名2排序 聚合函数 : count 统计数量(一般不选null的列) max 最大值 min 最小值 sum 总和 avg 平均值 Select

    2024年02月11日
    浏览(29)
  • python学习笔记(三)—数据库篇

    数据库编程是指在应用程序中使用数据库管理系统(DBMS)进行数据存储、检索和处理的过程。数据库提供了一种结构化的方式来组织和存储数据,使得数据的管理更加高效和可靠。 关系数据库是一种基于关系模型的数据库系统,使用表(表格)来存储和组织数据。每个表由

    2024年02月11日
    浏览(26)
  • 【数据库】什么是 PostgreSQL?开源数据库系统

    PostgreSQL 是一个开源的对象关系数据库系统,本文,我们将讨论 PostgreSQL、它的用途和好处。 PostgreSQL 是由 PostgreSQL Global Development Group 开发的高级 开源关系数据库管理系统(RDBMS) 。它作为 POSTGRES 项目的一部分于 1986 年在加州大学伯克利分校启动,它最初于 1996 年 7 月 8 日发布

    2023年04月08日
    浏览(33)
  • postgresql数据库定时备份到远程数据库

    1.老规矩,服务器目录结构: conf目录无内容 profile: 其中: 最后一行 export PGPASSWORD=‘root’ 是需要备份的数据库的密码,因为直接用 pg_dump 命令备份需要输入密码交互,而我们需要达到自动备份,所以借助这种方式不需要输入密码 docker-compose.yml: 启动容器: 然后再data目录下面

    2024年02月09日
    浏览(36)
  • PostgreSQL Linux操作PostgreSQL数据库

    PostgreSQL教程 菜鸟教程:https://www.runoob.com/postgresql/postgresql-tutorial.html 登录PG数据库:psql -U 用户名(U需要大写) 登录PG数据库(指定主机、端口,并进入指定数据库): psql -U 用户名 -h 127.0.0.1 -p 5432 -d 数据库名 -U 登录的用户名 -h 连接的主机(默认127.0.0.1,可替换成远程主机

    2024年02月11日
    浏览(46)
  • SQL学习笔记——创建数据库和表

    一、创建数据库和表 1、创建数据库 打开 SSMS(Microsoft SQL Server Management Studio)→新建查询→输入如下图的sql语句→点击执行 成功后可以看到左侧数据库中成功创建了“CPXS”产品销售数据库。对应路径下新增数据库文件。 说明: 主数据库文件扩展名为.mdf,表示Main Data File;

    2024年02月01日
    浏览(37)
  • WPF实战学习笔记08-创建数据库

    创建文件夹 ./Context 创建文件 ./Context/BaseEnity.cs ./Context/Memo.cs ./Context/MyTodoContext.cs ./Context/Todo.cs ./Context/User.cs 创建数据对象 ./Context/BaseEnity.cs ./Context/Memo.cs ./Context/MyTodoContext.cs 创建数据库DbSet ./Context/Todo.cs ./Context/User.cs 添加nuget包 Microsoft.EntityFrameworkCore.Design Shared design-time co

    2024年02月16日
    浏览(29)
  • 学习笔记-MySql数据库介绍与连接

    一.MySQL数据库介绍 MySQL是一个关系型数据库管理系统,在 WEB 应用方面,MySQL是最好的 RDMS (Relational Database Management System,关系数据库管理系统) 应用软件,它是由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品,MySQL 是最流行的关系型数据库管理系统中的一个。 1.特点 开源,

    2024年01月19日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包