创建数据库
要查看您是否可以访问数据库服务器,第一个测试是尝试创建数据库。正在运行的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用户帐户与操作系统用户帐户不同。)如果您是管理员,请参阅第 22 章以获取有关创建帐户的帮助。您需要成为安装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和的更多信息可分别在createdb和dropdbdropdb中找到。
[1]解释一下为什么这样做: PostgreSQL用户名与操作系统用户帐户是分开的。连接到数据库时,您可以选择以哪个PostgreSQL用户名进行连接;如果不选择,它将默认使用与您当前操作系统帐户相同的名称。实际上,总会有一个PostgreSQL用户帐户与启动服务器的操作系统用户同名,而且该用户也总是有创建数据库的权限。除了以该用户身份登录外,您还可以在任何地方指定选项-U以选择要连接的PostgreSQL用户名。