创建一个数据库
创建一个数据库#
为了创建数据库,必须先运行 OushuDB 服务(参阅 连接和认证 )。
数据库是用 SQL 命令 CREATE DATABASE 创建的:
CREATE DATABASE name;
这里的 name 遵循SQL标识符的一般规则。当前角色自动成为此新数据库的所有者。同时,以后删除这个数据库也是这个用户的特权 (同时还会删除其中的所有对象,即使那些对象有不同的所有者)。
创建数据库是一个有限制的操作。参阅 认证方法 获取如何赋予权限的信息。
连接数据库服务器才能执行CREATE DATABASE命令,那么第一个数据库是怎样创建的? 第一个数据库总是由initdb命令在初始化数据存储区的时候创建的 (参阅 创建一个数据库集群 )。这个数据库叫postgres。因此要创建第一个用户数据库时你可以与postgres连接。
在数据库集群初始化时会创建另一个名为template1 的数据库。在创建一个新的数据库时,实际上就是克隆(复制)了template1数据库。这就意味着你对template1所做的任何修改都会传播到所有随后创建的数据库中。因此,避免在template1中创建对象,除非你想要这些对象传播到每个新建的数据库中。
另外,为了方便,你还可以在shell中用createdb 程序来创建新数据库:
createdb dbname
createdb实质就是和postgres连接并执行CREATE DATABASE 命令,就像上面描述的那样。createdb的手册页包含它的使用细节。注意不带任何参数调用createdb将创建默认数据库,这可能不是你想要的。
备注
客户端认证 包含有关如何限制哪些用户可以连接某个特定数据库的信息。
有时候你想为其它人创建一个数据库,并且应该使他成为新数据库的所有者,这样他就可以自己配置和管理这个数据库。要实现这个目标,使用下列命令中的一条:
CREATE DATABASE dbname OWNER rolename;
用于 SQL 环境,或:
createdb -O rolename dbname
用于命令行。只有数据库的超级用户才能为其它用户创建数据库(即,你不是其中的成员)。