PostgreSQL 9.5.3 文档 | |||
---|---|---|---|
上一页 | 上一级 | 章 21. 管理数据库 | 下一页 |
为了创建一个数据库,PostgreSQL服务器必须启动并运行 (见第 17.3 节)。
数据库用 SQL 命令CREATE DATABASE创建:
CREATE DATABASE name;
其中name遵循SQL标识符的一般规则。 当前角色自动成为该新数据库的所有者。 以后删除这个数据库也是该所有者的特权(同时还会删除其中的所有对象, 即使那些对象有不同的所有者)。
创建数据库是一个受限的操作。 参阅第 20.2 节获取如何赋予权限的信息。。
因为你需要连接到数据库服务器来执行CREATE DATABASE命令, 那么还有一个问题是任意给定站点的第一个数据库是怎样创建的? 第一个数据库总是由initdb命令在初始化数据存储区域时创建 (见第 17.2 节)。这个数据库被称为 postgres。 因此要创建第一个"普通"数据库时,你可以连接到postgres。
在数据库集簇初始化期间也会创建第二个数据库template1, 。当在集簇中创建一个新数据库时, 实际上就是克隆了template1。这就意味着你对 template1所做的任何修改都会体现在所有随后创建的数据库中。 因此应避免在template1中创建对象, 除非你想把它们传播到每一个新创建的数据库中。 详见第 21.3 节。
为了方便,你还可以用一个程序来创建新数据库: createdb.
createdb dbname
createdb没什么神奇的。它连接到postgres 数据库并且发出CREATE DATABASE命令,和前面介绍的完全一样。 createdb参考页包含了调用细节。 注意不带任何参数的createdb将创建一个与当前用户名同名的数据库。
注意: 第 19 章 包含有关如何限制谁能连接到一个给定数据库的信息。
有时候你想为其他人创建一个数据库,并且使其成为新数据库的所有者, 这样他就可以自己配置和管理这个数据库。要实现这个目标, 使用下列命令之一:用于 SQL 环境的
CREATE DATABASE dbname OWNER rolename;
或者用于 shell 的
createdb -O rolename dbname
只有超级用户才被允许为其他人(即为一个你不是其成员的角色)创建一个数据库。