# 23.2.创建数据库

为了创建数据库,PostgreSQL server必须启动并运行(请参阅第19.3节).

数据库是使用SQL命令创建的创建数据库:

CREATE DATABASE name;

哪里*名称*遵循SQL标识符的常规规则。当前角色将自动成为新数据库的所有者。数据库所有者有权在以后删除它(这也会删除其中的所有对象,即使它们有不同的所有者)。

创建数据库是一项受限操作。看见第22.2节了解如何授予许可。

因为您需要连接到数据库服务器才能执行创建数据库但问题仍然是第一可以在任何给定站点创建数据库。第一个数据库总是由initdb初始化数据存储区域时的命令。(见第19.2节)这个数据库叫做博士后.因此,要创建第一个可以连接的“普通”数据库博士后.

第二个数据库,模板1,也会在数据库群集初始化期间创建。每当在群集中创建新数据库时,模板1基本上是克隆的。这意味着你在模板1将被传播到所有随后创建的数据库。因此,请避免在中创建对象模板1除非你想把它们传播到每一个新创建的数据库。更多细节见第23.3节.

为了方便起见,您可以从shell执行一个程序来创建新的数据库,createdb.

createdb dbname

createdb没有魔法。它连接到博士后数据库并发布创建数据库命令,如上所述。这个createdb参考页面包含调用详细信息。注意createdb如果没有任何参数,将使用当前用户名创建数据库。

# 笔记

第21章包含有关如何限制谁可以连接到给定数据库的信息。

有时,您希望为其他人创建一个数据库,并让他们成为新数据库的所有者,以便他们可以自行配置和管理该数据库。要实现这一点,请使用以下命令之一:

CREATE DATABASE dbname OWNER rolename;

来自SQL环境,或者:

createdb -O rolename dbname

从贝壳里。只有超级用户才允许为其他人(即您不是其成员的角色)创建数据库。