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

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 / 7.1
历史版本PostgreSQL 7.2 已于 2007 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

3.2. 创建数据库集簇 #

在做任何事情之前,必须先在磁盘上初始化一个数据库存储区域。我们 把它称为数据库集簇。(SQL 标准则说目录集簇。)数据库集簇是一组可通过单个运行中的数据库服务 器实例访问的数据库。初始化之后,数据库集簇会包含一个名为 template1 的数据库。顾名思义,它会作为后续新建 数据库的模板;不应将它用于实际工作。

从文件系统角度看,数据库集簇就是一个目录,所有数据都存储在其下。 我们将它称为数据目录或数据区域 。数据存放位置完全由你决定,没有默认值,不过诸如 /usr/local/pgsql/data 或 /var/lib/pgsql/data 这样的位置比较常用。要 初始化数据库集簇,请使用随 PostgreSQL 一起安装的命令 initdb。数据库系统在文件系统中 的目标位置通过 -D 选项指定,例如

$ initdb -D /usr/local/pgsql/data

注意,必须以 PostgreSQL 用户账户登录后 再执行此命令,该账户已在上一节介绍。

提示

除了使用 -D 选项,也可以设置环境变量 PGDATA。

如果指定的目录尚不存在,initdb 会尝试创建它。 它很可能没有这样做的权限(如果你听从了我们的建议,创建的是非特权 账户)。这种情况下,你应该(以 root 身份)自行创建该目录,并将其 所有权转移给 PostgreSQL 用户账户。过程 可能如下:

root# mkdir /usr/local/pgsql/data
root# chown postgres /usr/local/pgsql/data
root# su postgres
postgres$ initdb -D /usr/local/pgsql/data

如果数据目录看起来属于一个已经初始化过的安装, initdb 将拒绝运行。

由于数据目录包含存储在数据库中的全部数据,必须妥善保护它免遭 未经授权的访问。因此,initdb 会撤销除 PostgreSQL 用户账户以外所有人的访问 权限。

不过,尽管目录内容是安全的,pg_hba.conf 默认 的 trust 认证方法却允许任何本地用户连接到 数据库,甚至成为数据库超级用户。如果你不信任其他本地用户,我们 建议使用 initdb 的 -W 或 --pwprompt 选项为数据库超级用户指定口令。运行 initdb 之后,在首次启动服务器之前 修改 pg_hba.conf,把 trust 认证改为 md5 或 password。(其他可能更方便的方法包括使用 ident 认证或文件系统权限来限制连接。更多信息见 第 4 章。)

运行 initdb 时你可能遇到的一个意外是类似这样的 通知:

NOTICE:  Initializing database with en_US collation order.
        This locale setting will prevent use of index optimization for
        LIKE and regexp searches.  If you are concerned about speed of
        such queries, you may wish to set LC_COLLATE to "C" and
        re-initdb.  For more information see the Administrator's Guide.

此通知是为了警告你,当前选择的区域设置会导致索引按某种顺序排序, 使它们无法用于 LIKE 和正则表达式搜索。如果你需要这类搜索的良好 性能,应当把当前区域设置改为 C 并重新运行 initdb。在大多数系统上,设置当前区域设置的 方法是更改环境变量 LC_ALL 或 LANG 的值。特定数据库集簇中使用的排序顺序由 initdb 设置,事后无法更改,除非转储全部数据、 重新运行 initdb 再重新装载数据。因此,现在就 作出正确选择很重要。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。