如下:
第一个蛋? ..\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语句的封装