第一个测试,以查看您是否可以访问数据库服务器,就是尝试创建一个数据库。一个正在运行的 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
(对于此命令,数据库名称不会默认为用户帐户名。您始终需要指定它。)此操作会物理删除与数据库关联的所有文件,并且无法撤消,因此仅应在经过深思熟虑后执行此操作。
有关 createdb
和 dropdb
的更多信息,请分别参阅 createdb 和 dropdb。
[1] 作为对此工作原理的解释:PostgreSQL 用户名与操作系统用户帐户是分开的。当您连接到数据库时,可以选择以哪个 PostgreSQL 用户名连接;如果不选择,它将默认为与您当前操作系统帐户相同的名称。碰巧的是,始终存在一个与启动服务器的操作系统用户具有相同名称的 PostgreSQL 用户帐户,并且碰巧该用户始终具有创建数据库的权限。您可以不以该用户身份登录,也可以在所有位置指定 -U
选项以选择要连接到的 PostgreSQL 用户名。
如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表单 报告文档问题。