要查看您是否可以访问数据库服务器,首先要尝试创建一个数据库。一个正在运行的 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 用户名进行连接。
如果您在文档中发现任何不正确之处、与您在使用特定功能时的体验不符之处,或需要进一步澄清的地方,请使用 此表单 来报告文档问题。