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

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

initdb

initdb — 创建一个新的 Postgres 数据库集簇

大纲

initdb [--pgdata ] | [-D ]dbdir [[--sysid ] | [-i ]sysid] [[--pwprompt] | [-W]] [[--encoding ] | [-E ]encoding] [-L directory] [[--noclean] | [-n]] [[--debug] | [-d]]

描述

initdb创建一个新的 Postgres数据库集簇或系统。数据库集簇是由单个 postmaster 管理的一组数据库的集合。

创建数据库系统包括:创建存放数据库数据的目录,生成共享目录表(属于整个集簇而不是任何特定数据库的表),以及创建 template1 数据库。当你创建新数据库时,template1 数据库中的所有内容都会被复制。其中包含为内建类型等内容填好的目录表。

你不能以 root 身份执行initdb;它必须由将运行数据库服务器的 Unix 用户账户运行。这是因为你同样不能以 root 身份运行数据库服务器,而服务器需要访问initdb创建的文件。此外,在初始化阶段,还没有用户和访问控制被安装,Postgres只会以当前 Unix 用户的名称连接,因此你必须在将拥有服务器进程的账户下登录。

虽然initdb会尝试创建指定的数据目录,但它往往没有权限这样做,因为所需数据目录的父目录常常是 root 所有的目录。要设置这样的安排,可以先以 root 身份创建一个空的数据目录,然后用chown把该目录的所有权移交给数据库用户账户,再su成为数据库用户,最后以数据库用户身份运行initdb。

选项

--pgdata=dbdir
-D dbdir

这个选项指定在文件系统中何处存放数据库。这是 initdb所需的唯一信息,但你可以通过设置 PGDATA环境变量来免于写出它,这样很方便,因为数据库服务器(postmaster)之后可以通过同一个变量找到数据库目录。

--sysid=sysid
-i sysid

选择数据库超级用户的系统 ID。默认为运行initdb的用户的有效用户 ID。超级用户的 sysid 是什么其实并不重要,但人们可能会选择从某个数字(如 1)开始编号。

--pwprompt
-W

让initdb提示输入要赋予数据库超级用户的口令。如果你不打算使用口令认证,这无关紧要。否则,在设置好口令之前,你将无法使用口令认证。

--encoding=encoding
-E encoding

选择模板数据库的多字节编码。这也会是你以后创建的任何数据库的默认编码,除非在那里另行覆盖。要使用多字节编码特性,必须在构建时指定,同时你还要选择这个选项的默认值。

还有其他一些较少使用的参数:

-L directory

指定initdb到哪里寻找它初始化数据库系统所需的输入文件。这通常是不必要的。如果需要显式指定它们的位置,系统会告诉你。

--noclean
-n

默认情况下,当 initdb判定某个错误使它无法完全创建数据库系统时,它会删除在发现无法完成工作之前可能已创建的所有文件。这个选项抑制清理,因此对调试有用。

--debug
-d

打印引导后端的调试输出以及一些公众较少感兴趣的其他消息。引导后端是 initdb用来创建目录表的程序。这个选项会产生大量极其无聊的输出。

See also

PostgreSQL Administrator's Guide

提交更正

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