1.3数据库创建

175 阅读3分钟

1.3. 创建数据库

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

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

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

$ createdb mydb

如果这未产生任何响应,则此步骤成功,您可以跳过本节的其余部分。

如果您看到类似于以下内容的消息:

createdb: command not found

那么PostgreSQL没有正确安装。要么根本没有安装它,要么你的 shell 的搜索路径没有设置为包含它。尝试改用绝对路径调用命令:

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

您站点的路径可能不同。请与站点管理员联系或查看安装说明以更正此问题。

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

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

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

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

其中提到了您自己的登录名。如果管理员尚未为您创建 PostgreSQL 用户帐户,则会发生这种情况。(PostgreSQL 用户帐户不同于操作系统用户帐户。如果您是管理员,请参阅第 21 章以获取有关创建帐户的帮助。您需要成为安装PostgreSQL的操作系统用户(通常)才能创建第一个用户帐户。也可能是为您分配了一个与您的操作系统用户名不同的 PostgreSQL 用户名;在这种情况下,您需要使用开关或设置环境变量来指定您的 PostgreSQL 用户名。postgres``-U``PGUSER

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

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

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

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

$ createdb

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

$ dropdb mydb

(对于此命令,数据库名称不默认为用户帐户名称。您始终需要指定它。此操作会以物理方式删除与数据库关联的所有文件,并且无法撤消,因此只能通过深思熟虑来完成此操作。

更多关于和可以分别在 createdb 和 dropdb 中找到。createdb``dropdb


[1]作为为什么这样做的解释:PostgreSQL用户名与操作系统用户帐户是分开的。连接到数据库时,您可以选择要连接的 PostgreSQL 用户名;否则,它将默认使用与您当前操作系统帐户相同的名称。碰巧的是,总会有一个与启动服务器的操作系统用户同名的PostgreSQL用户帐户,并且该用户始终具有创建数据库的权限。除了以该用户身份登录之外,您还可以在任何地方指定选项以选择要连接的 PostgreSQL 用户名。-U