1.3. 创建数据库

查看是否可以访问数据库服务器的第一个测试是尝试创建数据库。运行中的 PostgreSQL 服务器可以 Management 许多数据库。通常,每个项目或每个用户使用一个单独的数据库。

您的站点 Management 员可能已经创建了一个数据库供您使用。在这种情况下,您可以省略此步骤,然后跳到下一部分。

要创建一个新数据库,在此示例中名为mydb,请使用以下命令:

$ createdb mydb

如果没有响应,则说明此步骤成功,您可以跳过本节的其余部分。

如果您看到类似以下信息:

createdb: command not found

则 PostgreSQL 安装不正确。根本没有安装它,或者您的 Shell 的搜索路径未设置为包括它。尝试使用绝对路径调用该命令:

$ /usr/local/pgsql/bin/createdb mydb

您网站上的路径可能不同。请与您的站点 Management 员联系,或查看安装说明以纠正这种情况。

另一个响应可能是这样的:

createdb: could not connect to database postgres: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

这意味着服务器未启动,或者未在createdb预期的位置启动。再次,检查安装说明或咨询 Management 员。

另一个响应可能是这样的:

createdb: could not connect to database postgres: FATAL:  role "joe" does not exist

提到您自己的登录名。如果 Management 员没有为您创建 PostgreSQL 用户帐户,则会发生这种情况。 (PostgreSQL 用户帐户与 os 用户帐户不同.)如果您是 Management 员,请参见Chapter 21以获取有关创建帐户的帮助。您需要成为安装 PostgreSQL 的 os 用户(通常是postgres)才能创建第一个用户帐户。也可能是您被分配了一个与 os 用户名不同的 PostgreSQL 用户名。在这种情况下,您需要使用-U开关或设置PGUSER环境变量来指定您的 PostgreSQL 用户名。

如果您有一个用户帐户,但没有创建数据库所需的特权,则将看到以下内容:

createdb: database creation failed: ERROR:  permission denied to create database

并非每个用户都有权创建新数据库。如果 PostgreSQL 拒绝为您创建数据库,则站点 Management 员需要授予您创建数据库的权限。如果发生这种情况,请咨询您的站点 Management 员。如果您自己安装了 PostgreSQL,则出于本教程的目的,应以启动服务器的用户帐户登录。 [1]

您还可以使用其他名称创建数据库。 PostgreSQL 允许您在给定站点上创建任意数量的数据库。数据库名称必须以字母开头的字符,并且长度限制为 63 个字节。一个方便的选择是使用与当前用户名相同的名称创建一个数据库。许多工具都假定数据库名称为默认名称,因此可以节省一些键入时间。要创建该数据库,只需键入:

$ createdb

如果您不想再使用数据库,则可以将其删除。例如,如果您是数据库mydb的所有者(创建者),则可以使用以下命令销毁它:

$ dropdb mydb

(对于此命令,数据库名称并非默认为用户帐户名称.您始终需要指定它.)此操作实际上会删除与数据库关联的所有文件,并且无法撤消,因此只能做很多事情的预见。

分别在createdbdropdb中可以找到有关createdbdropdb的更多信息。


[1]作为其工作原理的解释:PostgreSQL 用户名与 os 用户帐户分开。连接数据库时,可以选择连接的 PostgreSQL 用户名。如果您不这样做,它将默认使用与当前 os 帐户相同的名称。碰巧的是,总会有一个 PostgreSQL 用户帐户与启动服务器的 os 用户同名,并且碰巧该用户始终具有创建数据库的权限。除了以该用户身份登录外,您还可以在各处指定-U选项,以选择 PostgreSQL 用户名作为连接对象。