(六)PostgreSQL的组织结构(1)

PostgreSQL的组织结构(1)

在 PostgreSQL 中,用户、数据库和 schema 是数据库管理和组织结构中非常基础且重要的概念。它们在定义数据库的访问权限、组织数据以及在多用户环境中管理数据方面起着核心作用。以下是每个概念的简要说明:

用户(Roles)

在 PostgreSQL 中,通常所说的"用户"实际上是指"带有登录权限的角色"(Roles)。PostgreSQL 中的角色可以拥有登录数据库的权限,也可以拥有对数据库对象(比如数据表、视图等)的操作权限。角色可以代表单个用户,也可以代表一组用户权限。

  • 创建角色 :可以使用 CREATE ROLE 命令创建新角色。

    sql 复制代码
    CREATE ROLE username WITH LOGIN PASSWORD 'password';

例子:

创建test1、test2这两个角色,test1可以正常登录;test2不行。

sql 复制代码
--创建新角色
postgres=# create role test1 with login password 'Da.....123';
CREATE ROLE
postgres=# create role test2;
CREATE ROLE
postgres=# \du
                             List of roles
 Role name |                         Attributes                         
-----------+------------------------------------------------------------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS
 test1     | 
 test2     | Cannot login

--登录测试
[pg16@test ~]$ psql -d postgres -U test1 
psql (16.2)
Type "help" for help.

postgres=> exit
[pg16@test ~]$ psql -d postgres -U test2
psql: error: connection to server on socket "/tmp/.s.PGSQL.5777" failed: FATAL:  role "test2" is not permitted to log in

postgres=# 
  • 赋予角色权限 :可以使用 GRANT 来赋予权限。

    sql 复制代码
    GRANT ALL PRIVILEGES ON DATABASE dbname TO username;

数据库(Databases)

在 PostgreSQL 中,数据库是存储数据的容器。一个 PostgreSQL 服务器实例可以包含多个数据库,每个数据库是独立的,数据库之间的数据是隔离的。

  • 创建数据库 :使用 CREATE DATABASE 命令创建数据库。

    sql 复制代码
    CREATE DATABASE dbname;

Schema

Schema 是数据库内部用于组织和隔离数据的逻辑容器。一个数据库可以包含多个 schema,每个 schema 内可以包含数据表、视图、索引等对象。Schema 可以用来方便地管理数据,比如控制数据库访问权限,或者组织数据,让不同的用户/角色访问不同的数据集。

  • 创建 Schema :使用 CREATE SCHEMA 命令创建 schema。

    sql 复制代码
    CREATE SCHEMA schemaname AUTHORIZATION username;

用户、数据库和 Schema 的关系

  • **角色(用户)**控制登录和权限:角色可以有登录权限,并可以被授权来访问或操作数据库中的特定对象(如 schema、表等)。
  • 数据库是独立的数据容器:每个数据库相互独立,不同数据库之间数据是隔离的。
  • Schema是在特定数据库内部用来进一步组织数据的:它允许你在同一数据库内创建逻辑分组的数据对象,例如,不同的 schema 可以被用来分隔不同项目或应用的数据,或者用来分隔不同用户的数据。

理解这三个概念及它们之间的关系,对于合理地设计和维护 PostgreSQL 数据库是非常重要的。

谨记:心存敬畏,行有所止。

相关推荐
草莓熊Lotso2 小时前
Linux 基础 IO 初步解析:从 C 库函数到系统调用,理解文件操作本质
linux·运维·服务器·c语言·数据库·c++·人工智能
Cx330❀2 小时前
从零实现Shell命令行解释器:原理与实战(附源码)
大数据·linux·数据库·人工智能·科技·elasticsearch·搜索引擎
EverydayJoy^v^8 小时前
RH134学习进程——十二.运行容器(1)
linux·运维·容器
岁岁种桃花儿8 小时前
MySQL从入门到精通系列:InnoDB记录存储结构
数据库·mysql
b***25119 小时前
电池组PACK自动化生产线的关键流程与核心优势
运维·自动化
jiunian_cn10 小时前
【Redis】hash数据类型相关指令
数据库·redis·哈希算法
冉冰学姐10 小时前
SSM在线影评网站平台82ap4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm框架·在线影评平台·影片分类
哲伦贼稳妥10 小时前
职场发展-遇到以下情况请直接准备后手吧
运维·经验分享·其他·职场和发展
Exquisite.11 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
北塔软件11 小时前
北塔方案 | 政府行业IT运维解决方案
运维·it运维·解决方案·政务