2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2

1.3. 创建数据库 #

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

您的站点管理员可能已经为您创建了一个数据库。如果是这样,您可以跳过此步骤,直接进入下一节。

要从命令行创建新数据库(本例中名为 mydb),请使用以下命令:

$ createdb mydb

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

如果您看到类似的消息:

createdb: command not found

则表示 PostgreSQL 未正确安装。要么根本没有安装,要么您的 shell 的搜索路径未设置为包含它。请尝试使用绝对路径调用命令:

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

您所在站点的路径可能不同。请联系您的站点管理员或查看安装说明来纠正这种情况。

另一个可能的响应是:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
        Is the server running locally and accepting connections on that socket?

这意味着服务器未启动,或者它监听的端口不是 createdb 期望与之通信的端口。再次检查安装说明或咨询管理员。

另一个可能的响应是:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  role "joe" does not exist

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

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

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

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

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

$ createdb

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

$ dropdb mydb

(对于此命令,数据库名不会默认使用用户帐户名。您必须始终指定它。)此操作会物理删除与数据库相关的所有文件,且无法撤销,因此只能经过深思熟虑后执行。

有关 createdbdropdb 的更多信息,请分别参阅 createdbdropdb



[1] 解释为何如此:PostgreSQL 用户名与操作系统用户帐户是分开的。连接数据库时,您可以选择连接的 PostgreSQL 用户名;如果未选择,则默认使用与您当前操作系统帐户相同的名称。碰巧的是,总会有一个 PostgreSQL 用户帐户,其名称与启动服务器的操作系统用户名称相同,而且该用户也始终拥有创建数据库的权限。您也可以不登录为该用户,而是在所有地方使用 -U 选项来选择一个 PostgreSQL 用户名进行连接。

提交更正

如果您在文档中发现任何不正确之处、与您在使用特定功能时的体验不符之处,或需要进一步澄清的地方,请使用 此表单 来报告文档问题。