重建postgresql模板数据库template1

本文演示了如何使用psql命令行工具来更新PostgreSQL中的模板数据库。包括设置模板状态、删除及重新创建模板1数据库的过程。
$ psql -U postgres postgres
postgres=# update pg_database set datistemplate = false where datname='template1';
UPDATE 1
postgres=# drop database template1;
DROP DATABASE
postgres=# create database template1 template=template0;
CREATE DATABASE
postgres=# update pg_database set datistemplate = true where datname='template1';
UPDATE 1
postgres=#
PostgreSQL 安装后通常会创建一些默认数据库,例如 `postgres` 和 `template0`、`template1`。这些数据库PostgreSQL 的运行和管理中具有特定的作用。 - `template1` 和 `template0` 是模板数据库,用于在创建新数据库时作为模板使用。`template1` 是默认的模板,用户可以对其进行修改,而 `template0` 是一个干净的模板,通常不建议修改[^1]。 - `postgres` 是一个默认的数据库,通常用作超级用户的默认登录数据库,许多管理工具和命令默认连接到该数据库进行操作[^1]。 由于这些数据库承担着基础功能,因此 **PostgreSQL 不允许直接删除这些默认数据库**。尝试删除可能会导致错误或影响数据库系统的正常运行[^2]。 如果出于某些特殊需求希望删除默认数据库(如 `postgres`),唯一可行的方式是通过数据库实例的重建或重新初始化集群(例如使用 `initdb` 命令),但这将清除所有数据库和数据,仅适用于全新部署的环境[^3]。 ### 删除普通数据库的注意事项 如果尝试删除的是非默认数据库,需确保没有活动连接,否则会报错,例如: ```bash ERROR: database "xxx_prod" is being accessed by other users DETAIL: There are 33 other sessions using the database. ``` 为避免此类问题,可以在删除前终止所有连接: ```sql SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'xxx_prod'; ``` 然后执行删除命令: ```sql DROP DATABASE xxx_prod; ``` ### 修改默认配置与访问控制 如果希望更改默认数据库的行为或访问控制,可以编辑以下配置文件: - `postgresql.conf`:用于设置内存、连接、日志等全局参数[^3]。 - `pg_hba.conf`:用于定义客户端认证规则,控制哪些用户可以从哪些 IP 地址连接数据库。 修改后需重启 PostgreSQL 服务以使配置生效。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值