On this page
22.2. 创建数据库
为了创建数据库,PostgreSQL 服务器必须已启动并正在运行(请参阅Section 18.3)。
使用 SQL 命令CREATE DATABASE创建数据库:
CREATE DATABASE name;
name
*遵循 SQL 标识符的常规规则。当前角色自动成为新数据库的所有者。数据库所有者有特权在以后将其删除(即使它们具有不同的所有者,这也会删除数据库中的所有对象)。
数据库的创建是受限制的操作。有关如何授予权限的信息,请参见Section 21.2。
由于您需要连接到数据库服务器才能执行CREATE DATABASE
命令,因此问题仍然是如何在任何给定站点上创建* first *数据库。初始化数据存储区时,第一个数据库始终由initdb
命令创建。 (请参阅Section 18.2。)此数据库称为postgres
。 因此,要创建第一个“普通”数据库,可以连接到postgres
。
在数据库集群初始化期间,还将创建第二个数据库template1
,。每当在集群中创建新数据库时,template1
基本上都会被克隆。这意味着您在template1
中所做的任何更改都会传播到所有随后创建的数据库。因此,除非希望将它们传播到每个新创建的数据库,否则请避免在template1
中创建对象。更多详细信息出现在Section 22.3中。
为方便起见,您可以从 Shell 执行一个程序来创建新数据库createdb
。
createdb dbname
createdb
没有魔法。完全如上所述,它连接到postgres
数据库并发出CREATE DATABASE
命令。 createdb参考页包含调用详细信息。请注意,不带任何参数的createdb
将使用当前用户名创建数据库。
Note
Chapter 20包含有关如何限制谁可以连接到给定数据库的信息。
有时您想为其他人创建数据库,并让他们成为新数据库的所有者,以便他们可以自己配置和 Management 它。为此,请使用以下命令之一:
CREATE DATABASE dbname OWNER rolename;
在 SQL 环境中,或者:
createdb -O rolename dbname
从 Shell。仅超级用户被允许为其他人(即,您不是其成员的角色)创建数据库。