重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: pg 数据库 template0 与 template1 区别与 联系 [打印本页]

作者: 郑全    时间: 2025-8-1 10:17
标题: pg 数据库 template0 与 template1 区别与 联系
本帖最后由 郑全 于 2025-8-1 10:26 编辑

在 PostgreSQL 中,template0 和 template1 是两个特殊的 模板数据库,它们是创建新数据库时的 “模板”,新数据库会继承模板库的结构、配置和部分数据。两者的设计目的和使用场景有明确区别,理解它们的关系与差异对数据库管理至关重要。
一、核心关系:模板与新数据库的继承 template0 和 template1 都是初始化数据库集簇(通过 initdb 命令)时自动创建的,是所有新数据库的 “源头”:


新数据库会继承模板库的:

二、核心区别:用途与特性
维度
template1
template0
定位
可修改的默认模板
不可修改的 “纯净” 模板
是否允许修改
允许用户连接并创建对象(表、函数等)
不建议修改,默认禁止普通用户连接
包含内容
初始与 template0 一致,可添加自定义对象
仅包含 PostgreSQL 初始化时的核心系统对象
典型用途
作为默认模板,批量创建含相同自定义对象的数据库
用于创建与集簇初始化配置一致的 “纯净” 数据库,或修改字符集等基础参数
连接限制
允许连接(psql -d template1)
默认禁止连接(需特殊参数 postgres --single -d template0)


三、详细说明1. template1:默认的 “可定制模板”2. template0:“原始备份” 模板四、总结
合理使用这两个模板,可以简化数据库创建流程,同时避免因配置不一致导致的问题





欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2