Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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 用户名。