Postgresql:创建数据库 先有蛋?先有鸡?
如下:
第一个蛋? ..\share\下的postgres.bki、*.sql文件
initdb.exe 根据 ..\share\下的postgres.bki、*.sql文件 初始化数据库存储簇。这时该初始化簇包含3个数据库、一个supuser!
- 默认调用initdb.exe的os用户(postgres)的同名用户连接数据库(postgres)
- virgin(处女——纯洁啊)模板数据库tmeplate0:模板、不可以连接
- 通用模板数据库template1:模板,可以连接
- 默认调用initdb.exe的os用户(postgres)的同名的超级用户(postgres)
create database new_db_name[template {template1(默认)|template_name}]
- 这里的template_name指模板数据库可以是任何数据库。super用户和owner用户可以想怎么做就怎么做,否则只有模板数据库才可以让普通具有createdb权限的用户指定该数据库作为模板
- 默认用户数据库:完全可以干掉!默认情况下,postgresql让template1默认数据库可以接受用户的连接!
- 默认数据库可以重建,他就是普通用户数据库
- template1模板数据库也可以干掉!不过你要知道,他基本上是最后一个可以删除的数据库了!如果没有其他正常的用户数据库,你就准备重新 initdb.exe吧!!!
- template1数据库可以重建!必须要制定其他模板了!如果没有该库,就不能使用没有template子句的create database 了
数据库的两个属性标志
- datistemplate:是否是可以供普通用户可以使用的模板数据库,对supuser 和 owner 用户无效
- datallowconn:是否允许用户连接到该数据库!任何要作为模板进行clone的数据库必须是干净的,不能有其他连接!对对supuser 和 owner 用户也是如此!
create database db_name
[
[with]
[owner [=] other_role_name] --只有superuser才能指定其他owner。默认当前 role
[encoding [=] encoding_name] --字符集编码,默认utf8
[template [=] template_db_name] --(模板)数据库,默认template1
[tablespace [=] tablespace_name] --默认表空间,默认pg_default
[connection limit [=] connlimit] --运行的并非连接数,默认不限制(-1)
]
创建数据库必须有create database 权限 或 superuser
不允许在事务内执行
使用程序createdb.exe是对create database语句的封装
分类:
Postgres
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)