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

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

安装完postgresql后,我们发现它自带了3个数据库。postgres、template0、template1

postgres=# \lList of databasesName    |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    | ICU Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+-------------+-------------+------------+-----------+-----------------------postgres  | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |            |           | template0 | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |            |           | =c/postgres          +|          |          |                 |             |             |            |           | postgres=CTc/postgrestemplate1 | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |            |           | =c/postgres          +|          |          |                 |             |             |            |           | postgres=CTc/postgres
(3 rows)

postgres

在 PostgreSQL 中,postgres 库是默认创建的数据库,它通常用作新用户的初始数据库以及进行各种操作和管理任务的地方。

作用和用途

  1. 默认连接数据库:当用户第一次连接到 PostgreSQL 实例时,如果没有指定特定的数据库,通常会连接到 postgres 数据库。这使得新用户在开始创建自己的数据库之前有一个默认的操作环境。

  2. 管理和维护任务:数据库管理员(DBA)通常使用 postgres 数据库执行一些管理任务,如查询系统目录、管理用户(角色)和权限,以及执行数据库级别的维护操作等。

  3. 模板数据库:尽管 postgres 数据库本身不是模板数据库(PostgreSQL 使用名为 template1 的数据库作为新数据库的默认模板),但在实践中,很多数据库管理员会使用 postgres 库来创建或测试数据库对象和策略,然后在新的用户数据库中实施这些对象和策略。

  4. 系统级别的查询和操作postgres 数据库也经常被用来执行系统级别的查询,比如查询 pg_cataloginformation_schema 这样的系统目录来获取数据库实例的全局信息。

注意事项

  • 虽然 postgres 数据库通常用于上述目的,但强烈建议开发者或测试者创建并使用自己的数据库环境,以避免在 postgres 数据库中意外更改数据或配置,这些更改可能会影响到其他数据库或整个 PostgreSQL 实例的运行。

  • 对于生产环境,将具体的业务数据和应用存储在单独创建的数据库中,而不是默认的 postgres 数据库中,是一种最佳实践。这样做有助于保持环境的清洁、安全,以及更好地管理和维护数据。

简而言之,postgres 数据库作为 PostgreSQL 提供的默认数据库,主要用作初始连接点以及执行系统级别的管理和查询任务。但对于任何具体的业务应用或数据存储,建议创建专用的数据库。

template0template1

在 PostgreSQL 中,template0 是一个特殊的系统数据库模板,它的存在具有重要意义。PostgreSQL 允许通过现有数据库来创建新数据库,而 template0template1 是创建新数据库时可供选择的模板数据库。然而,template0template1 在用途和功能上有一些关键的区别。

template0 的主要用途

  1. 恢复默认设置template0 提供了一个干净的状态,反映了 PostgreSQL 安装时数据库的初始状态。如果 template1 被不小心修改了,template0 可用于创建一个全新的、未修改的数据库。

  2. 创建新数据库时指定编码:当需要以与 template1 不同的编码创建数据库时,template0 是理想的选择。使用 template0,用户可以创建具有不同编码或 LC_COLLATE(排序规则)设置的数据库。

理解 template0template1

template1

  • 默认模板template1 是 PostgreSQL 中创建新数据库时的默认模板。除非在创建数据库时明确指定了其他模板(包括 template0),否则新创建的数据库会复制 template1 的内容。
  • 用户自定义template1 可以被修改。这意味着,你可以向 template1 中添加公共数据或者设置数据库级别的配置,这样所有基于 template1 创建的新数据库都会继承这些数据和设置。这对于需要在多个数据库中重复使用相同设置或数据的场景很有用。
  • 恢复默认模板的后备选项:由于 template1 可能被修改,所以存在它可能无法用作创建新数据库的默认模板的风险。这就是 template0 存在的意义之一。

template0

  • 干净的初始状态template0 提供了一个干净的、未经修改的数据库模板,反映了 PostgreSQL 安装时的初始状态。它保证了即使 template1 被修改,你仍然可以创建一个干净、原始状态的数据库。
  • 字符集和校对规则的变更template0 允许创建与默认设置(template1可能已经修改)不同的字符集或校对规则的数据库。这在需要支持多语言或特定字符集/校对规则的新数据库时非常有用。
  • 不可修改:为了保持其作为干净模板的角色,template0 是只读的,不允许对其进行更改。这确保了无论系统如何变化,template0 都能提供一个一致的、未经修改的状态,用于创建新的数据库。

使用 template0 创建数据库

CREATE DATABASE newdb WITH TEMPLATE template0 ENCODING 'UTF8';

这个例子显示了如何使用 template0 创建一个新的 UTF-8 编码的数据库。使用 template0 是一个保险的选择,特别是当 template1 因为某些原因(例如,包含了特定于应用的设置或对象)而不适用时。

注意事项

  • template0template1 都不应该用于普通业务数据的存储。它们是系统级别的数据库,主要用于作为创建新数据库的模板。
  • 默认情况下,template0 是不允许连接的,这是为了防止意外修改其中的内容。
--尝试连接template0库,会报错。说明了默认禁止这种操作。
template1=# \c template0
2024-04-10 20:24:13.817 PDT [47814] FATAL:  database "template0" is not currently accepting connections
connection to server on socket "/tmp/.s.PGSQL.5777" failed: FATAL:  database "template0" is not currently accepting connections
Previous connection kept--尝试连接template1,可以正常登录。 
template1=# \c template1
You are now connected to database "template1" as user "postgres".
template1=# 

template0 提供了一种创建具有特定设置(如编码和排序规则)新数据库的方法,同时也作为一个后备选项,保证在 template1 被修改的情况下还能创建新的数据库。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/307871.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模板方法模式:定义算法骨架的设计策略

在软件开发中,模板方法模式是一种行为型设计模式,它在父类中定义一个操作的算法框架,允许子类在不改变算法结构的情况下重定义算法的某些步骤。这种模式是基于继承的基本原则,通过抽象类达到代码复用的目的。本文将详细介绍模板方…

《积极情绪的力量》 - 三余书屋 3ysw.net

积极情绪的力量 大家好,今天我们解读的这本书名为《积极情绪的力量》。在情绪的世界里,我们可以分为积极和消极两类,但让人留下深刻印象的是,许多人更容易体验到消极情绪,如抑郁、恐惧、焦虑、挫败和烦躁等。这并非令…

Windows安装MongoDB结合内网穿透轻松实现公网访问本地数据库

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

OpenHarmony实例应用:【常用组件和容器低代码】

介绍 本篇Codelab是基于ArkTS语言的低代码开发方式实现的一个简单实例。具体实现功能如下: 创建一个低代码工程。通过拖拽的方式实现任务列表和任务信息界面的界面布局。在UI编辑界面实现数据动态渲染和事件的绑定。 最终实现效果如下: 相关概念 低代…

传输层协议——UDP/TCP协议

目录 端口号 端口号范围 pidof UDP协议 UDP协议格式 UDP特点 UDP缓冲区 UDP的注意事项 基于UDP的应用层协议 TCP协议 TCP协议格式 序号与确认序号 窗口大小 6个标记位 紧急指针 确认应答机制 连接管理机制 三次握手 四次挥手 超时重传机制 流量控制 滑动…

MoCo v1(CVPR 2020)原理与代码解读

paper:Momentum Contrast for Unsupervised Visual Representation Learning official implementation:https://github.com/facebookresearch/moco 背景 最近的一些研究提出使用对比损失相关的方法进行无监督视觉表征学习并取得了不错的结果。尽管是受…

.net 6 集成NLog

.net 6 webapi项目集成NLog 上代码step 1 添加nugetstep 2 添加支持step 3 添加配置文件 结束 上代码 step 1 添加nuget 添加nuget 包 Roc step 2 添加支持 修改program.cs var builder WebApplication.CreateBuilder(args); // 添加NLog日志支持 builder.AddRocNLog();ste…

mysql8.0高可用集群架构实战

MySQL :: MySQL Shell 8.0 :: 7 MySQL InnoDB Cluster 基本概述 InnoDB Cluster是MySQL官方实现高可用读写分离的架构方案,其中包含以下组件 MySQL Group Replication,简称MGR,是MySQL的主从同步高可用方案,包括数据同步及角色选举Mysql Shell 是InnoDB Cluster的管理工具,用…

单链表详解(无哨兵位),实现增删改查

1.顺序表对比单链表的缺点 中间或头部插入时,需要移动数据再插入,如果数据庞大会导致效率降低每次增容就需要申请空间,而且需要拷贝数据,释放旧空间增容造成浪费,因为一般都是以2倍增容 2.链表的基础知识 链表也是线…

【随笔】Git 高级篇 -- 快速定位分支 ^|~(二十三)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

[面向对象] 单例模式与工厂模式

单例模式 是一种创建模式,保证一个类只有一个实例,且提供访问实例的全局节点。 工厂模式 面向对象其中的三大原则: 单一职责:一个类只有一个职责(Game类负责什么时候创建英雄机,而不需要知道创建英雄机要…

SQL 注入之 Windows/Docker 环境 SQLi-labs 靶场搭建!

在安全测试领域,SQL注入是一种常见的攻击方式,通过应用程序的输入执行恶意SQL查询,从而绕过认证和授权,可以窃取、篡改或破坏数据库中的数据。作为安全测试学习者,如果你要练习SQL注入,在未授权情况下直接去…

DedeCMS 未授权远程命令执行漏洞分析

dedecms介绍 DedeCMS是国内专业的PHP网站内容管理系统-织梦内容管理系统,采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板、网站升级转移均提供很大的便利,健壮的模板标签为站长DIY自己的网站提供了强有力…

【AIGC】本地部署通义千问 1.5 (PyTorch)

今天想分享一下 Qwen 1.5 官方用例的二次封装( huggingface 说明页也有提供源码),其实没有太多的技术含量。主要是想记录一下如何从零开始在不使用第三方工具的前提下,以纯代码的方式本地部署一套大模型,相信这对于技术…

Springboot+Vue项目-基于Java+MySQL的旅游网站系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

JDX图片识别工具:扫描PDF文件批量改名的应用场景

业务场景 案例1:人事部人员扫描了几百份简历,保存为PDF格式,但是名字是一串数字,不好分辨,有没有能识别里面姓名内容并自动重命名文件的方法 案例2:财务人员有的批量导出很多PDF电子发票,导出…

MATLAB 构建协方差矩阵,解算特征值和特征向量(63)

MATLAB 局部点云构建协方差矩阵,解算特征值和特征向量(63) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 对于某片有待分析的点云,我们希望构建协方差矩阵,计算特征值和特征向量,这是很多算法必要的分析方法,这里提供完整的计算代码(验证正确) !!! 特别需要注意…

swiftui macOS实现加载本地html文件

import SwiftUI import WebKitstruct ContentView: View {var body: some View {VStack {Text("测试")HTMLView(htmlFileName: "localfile") // 假设你的本地 HTML 文件名为 index.html.frame(minWidth: 100, minHeight: 100) // 设置 HTMLView 的最小尺寸…

分享 GoLand 2024.1 激活的方案,支持JetBrains全家桶

大家好,欢迎来到金榜探云手! GoLand 公司简介 JetBrains 是一家专注于开发工具的软件公司,总部位于捷克。他们以提供强大的集成开发环境(IDE)而闻名,如 IntelliJ IDEA、PyCharm、和 GoLand等。这些工具被广…

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第二套

华为海思校园招聘-芯片-数字 IC 方向 题目分享(共9套,有答案和解析,答案非官方,未仔细校正,仅供参考)——第二套(共九套,每套四十个选择题) 部分题目分享,完整版获取&am…