# 1.3.创建数据库
查看是否可以访问数据库服务器的第一个测试是尝试创建一个数据库。运行中的PostgreSQL server可以管理许多数据库。通常,每个项目或每个用户都使用一个单独的数据库。
站点管理员可能已经为您创建了一个数据库。在这种情况下,你可以省略这一步,直接跳到下一节。
要创建一个新的数据库,在本例中命名为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的操作系统用户(通常是博士后
)创建第一个用户帐户。也可能是您被分配了一个与您的操作系统用户名不同的PostgreSQL用户名;在这种情况下,你需要使用-U
切换或设置PGUSER
环境变量来指定PostgreSQL用户名。
如果您有一个用户帐户,但它没有创建数据库所需的权限,您将看到以下内容:
createdb: error: database creation failed: ERROR: permission denied to create database
并非每个用户都有创建新数据库的权限。如果PostgreSQL拒绝为您创建数据库,则网站管理员需要授予您创建数据库的权限。如果发生这种情况,请咨询您的网站管理员。如果您自己安装了PostgreSQL,那么出于本教程的目的,您应该使用启动服务器的用户帐户登录。[1]
还可以使用其他名称创建数据库。PostgreSQL允许您在给定站点上创建任意数量的数据库。数据库名称必须以字母开头,长度限制为63字节。一个方便的选择是创建一个与当前用户名同名的数据库。许多工具都假定数据库名称为默认名称,因此它可以为您节省一些输入。要创建该数据库,只需键入:
$ createdb
如果不想再使用数据库,可以将其删除。例如,如果您是数据库的所有者(创建者)mydb
,您可以使用以下命令销毁它:
$ dropdb mydb
(对于此命令,数据库名称不默认为用户帐户名称。您始终需要指定它。)此操作将物理上删除与数据库关联的所有文件,并且无法撤消,因此只有经过大量的事先考虑,才能执行此操作。