↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2
测试版PostgreSQL 19 Beta 4 尚未正式发布,内容与行为在正式发布前可能变化。正式内容请看当前版本。

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

(对于这条命令,数据库名不会默认成用户帐号名,你始终需要显式指定它。)这个操作会从物理上删除与该数据库关联的所有文件,而且无法撤销,因此务必三思而后行。

关于createdb和dropdb的更多信息,可分别参见createdb和dropdb。



[1] 这之所以可行,是因为PostgreSQL用户名与操作系统用户帐号是分开的。当你连接到数据库时,可以选择以哪个PostgreSQL用户名连接;如果不指定,默认就会使用你当前操作系统帐号的名称。恰好总会有一个PostgreSQL用户帐号,其名称与启动服务器的操作系统用户相同,而该用户也总是有权创建数据库。除了直接以该用户身份登录之外,你还可以在各处使用-U选项来选择连接时使用的PostgreSQL用户名。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游会在正式发布前持续修订。