1.3. 创建一个数据库

看看你能否访问数据库服务器的第一个例子就是试着创建一个数据库。一台 运行着的PostgreSQL服务器可以管理许多数据 库。通常我们会为每个项目和每个用户单独使用一个数据库。

节点管理员可能已经为你创建了可以使用的数据库。他应该已经告诉你这个 数据库的名字。如果这样你就可以省略这一步,并且跳到下一节。

以创建一个mydb新数据库为例:

$ createdb mydb

如果没有报错,那么这一步就成功了,你就可以忽略本节余下的部分了。

如果返回类似信息:

createdb: command not found

说明PostgreSQL没有正确安装,要么是完全没有安装,要么是设置的环境变量有错误,如果是这样,那么可以用绝对路径调用该命令:

$ /usr/local/pgsql/bin/createdb mydb

在你的节点上这个路径可能不一样。请和管理员联系或者看看安装指导以获取 正确的位置。

另外一种响应可能是这样:

createdb: could not connect to database postgres: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

这意味着服务器没有启动,或者没有在createdb预期的地方启动。同样, 你也要检查安装指导或者找管理员。

另外一个响应可能是这样:

createdb: could not connect to database postgres: FATAL:  role "joe" does not exist

在这里提到了你自己的登陆名。如果管理员没有为你创建PostgreSQL用户帐号, 就会发生这些现像。PostgreSQL用户帐号和操作系统用户帐号是不同的。如果你 就是管理员,参阅Chapter 20以获取创建用户帐号的帮助。你需要变成安装PostgreSQL 的操作系统用户的身份(通常是postgres)才能创建第一个用户帐号。 也有可能是赋予PostgreSQL用户名和操作系统用户名不同;这种情况下,你需要 使用-U开关或者使用PGUSER环境变量声明PostgreSQL用户名。

如果你有个数据库用户帐号,但是没有创建数据库所需要的权限,那么你会看到 下面的东西

createdb: database creation failed: ERROR:  permission denied to create database

并非所有用户都经过了创建新数据库的授权。如果PostgreSQL拒绝为你创建数据库, 那么你需要让节点管理员赋予你创建数据库的权限。出现这种情况时请咨询你的节点 管理员。如果你自己安装了PostgreSQL,那么你应该以你启动数据库服务器的用户 身份登陆然后参考手册完成权限的赋予工作。 [1]

你还可以用其它名字创建数据库。PostgreSQL 允许你在一个节点上创建任意数量的数据库。数据库名必须是以字母开头并且 小于63个字符长。一个方便的做法是创建和你当前用户名同名的数据库。许多 工具假设它为缺省的数据库名,所以这样可以节省敲键。要创建这样的数据库, 只需要键入:

$ createdb

如果你再也不想使用你的数据库了,那么你可以删除它。比如,如果你是数 据库mydb的属主(创建人),那么你就可以用下面的命令 删除它:

$ dropdb mydb

(对于这条命令而言,数据库名不是缺省的用户名,你必须明确声明它)这个动 作物理上将所有与该数据库相关的文件都删除并且不可恢复,因此做这件事之 前一定要想清楚。

更多关于createdbdropdb的信息可以 在createdbdropdb小节找到。

Notes

[1]

PostgreSQL用户名与系统账户名是不同的。 当连接数据库时,可以选择用哪个PostgreSQL用户连接。 如果没有选择,那么会自动选择用与当前系统用户名相同的用户来连接。 当这样做到的时候,会有一个与当前系统用户名相同的PostgreSQL用户来启动服务, 同时该用户还拥有创建数据库的权限。当然,你也可用通过使用-U选项来声明要使用的用户名。