On this page
initdb
initdb —创建一个新的 PostgreSQL 数据库集群
Synopsis
initdb [ option ...] [ --pgdata | -D ] directory
Description
initdb创建一个新的 PostgreSQL 数据库集群。数据库集群是由单个服务器实例 Management 的数据库的集合。
创建数据库集群包括以下步骤:创建数据库数据将驻留在其中的目录;生成共享目录表(属于整个集群而不是任何特定数据库的表);以及创建template1和postgres数据库。以后创建新数据库时,将复制template1数据库中的所有内容。 (因此,安装在template1中的所有内容都会自动复制到以后创建的每个数据库中.)postgres数据库是默认数据库,供用户,Util 和第三方应用程序使用。
尽管initdb会尝试创建指定的数据目录,但是如果所需数据目录的父目录是 root 拥有的,它可能没有权限。要在这种设置中进行初始化,请创建一个空数据目录作为 root 用户,然后使用chown将该目录的所有权分配给数据库用户帐户,然后使用su成为要运行initdb的数据库用户。
initdb必须以拥有服务器进程的用户身份运行,因为服务器需要有权访问initdb创建的文件和目录。由于服务器不能以 root 用户身份运行,因此也不能以 root 用户身份运行initdb。 (实际上它将拒绝这样做.)
initdb初始化数据库集群的默认语言环境和字符集编码。创建数据库时,可以分别为数据库设置字符集编码,排序规则(LC_COLLATE)和字符集类(LC_CTYPE,例如大写,小写,数字)。 initdb确定template1数据库的那些设置,这些设置将用作所有其他数据库的默认设置。
要更改默认的排序规则 Sequences 或字符集类别,请使用--lc-collate和--lc-ctype选项。除C或POSIX以外的排序规则也有性能损失。由于这些原因,在运行initdb时选择正确的语言环境很重要。
服务器启动以后,可以更改其余的区域设置类别。您还可以使用--locale设置所有语言环境类别的默认值,包括排序规则和字符集类。可以通过SHOW ALL显示所有服务器的语言环境值(lc_*)。可以在Section 23.1中找到更多详细信息。
要更改默认编码,请使用--encoding。可以在Section 23.3中找到更多详细信息。
Options
-A authmethod--auth=authmethod- 此选项为在
pg_hba.conf(host和local行)中使用的本地用户指定默认的身份验证方法。initdb将使用指定的身份验证方法针对非复制以及复制连接预填充pg_hba.conf条目。
- 此选项为在
除非您信任系统上的所有本地用户,否则请不要使用trust。 trust是易于安装的默认值。
--auth-host=authmethod- 该选项为通过
pg_hba.conf(host行)中使用的 TCP/IP 连接的本地用户指定身份验证方法。
- 该选项为通过
--auth-local=authmethod- 此选项为通过
pg_hba.conf(local行)中使用的 Unix 域套接字连接指定本地用户的身份验证方法。
- 此选项为通过
-D directory--pgdata=directory- 此选项指定数据库集群应存储的目录。这是
initdb所需的唯一信息,但是您可以避免通过设置PGDATA环境变量来编写它,这很方便,因为数据库服务器(postgres)以后可以通过相同的变量找到数据库目录。
- 此选项指定数据库集群应存储的目录。这是
-E encoding--encoding=encoding- 选择模板数据库的编码。这也是以后创建的任何数据库的默认编码,除非您在此处覆盖它。默认值是从区域设置派生的;如果不起作用,则返回
SQL_ASCII。 Section 23.3.1中描述了 PostgreSQL 服务器支持的字符集。
- 选择模板数据库的编码。这也是以后创建的任何数据库的默认编码,除非您在此处覆盖它。默认值是从区域设置派生的;如果不起作用,则返回
-k--data-checksums- 在数据页上使用校验和,以帮助检测 I/O 系统的损坏,否则这些损坏将是静默的。启用校验和可能会导致明显的性能损失。此选项只能在初始化期间设置,以后不能更改。如果设置,将为所有数据库中的所有对象计算校验和。
--locale=locale- 设置数据库集群的默认语言环境。如果未指定此选项,则从
initdb运行的环境中继承区域设置。Section 23.1中描述了区域设置支持。
- 设置数据库集群的默认语言环境。如果未指定此选项,则从
--lc-collate=locale--lc-ctype=locale--lc-messages=locale--lc-monetary=locale--lc-numeric=locale--lc-time=locale- 类似于
--locale,但仅将语言环境设置为指定的类别。
- 类似于
--no-locale- 等效于
--locale=C。
- 等效于
-N--no-sync- 默认情况下,
initdb将 await 所有文件安全地写入磁盘。此选项使initdb无需 await 就返回,这更快,但是这意味着随后的 os 崩溃可能会使数据目录损坏。通常,此选项对于测试很有用,但在创建生产安装时不应使用。
- 默认情况下,
--pwfile=filename- 使
initdb从文件中读取数据库超级用户的密码。文件的第一行用作密码。
- 使
-S--sync-only- 将所有数据库文件安全地写入磁盘并退出。这不会执行任何常规的 initdb 操作。
-T config--text-search-config=config- 设置默认的文本搜索配置。有关更多信息,请参见default_text_search_config。
-U username--username=username- 选择数据库超级用户的用户名。默认为运行
initdb的有效用户的名称。超级用户名到底是什么并不重要,但是即使 os 用户名不同,也可以选择保留惯用名称 postgres。
- 选择数据库超级用户的用户名。默认为运行
-W--pwprompt- 发出
initdb提示 Importing 密码以授予数据库超级用户。如果您不打算使用密码身份验证,那么这并不重要。否则,在设置密码之前,您将无法使用密码身份验证。
- 发出
-X directory--waldir=directory- 此选项指定应在其中存储预写日志的目录。
其他不常用的选项也可用:
-d--debug- 打印来自引导后端的调试输出和其他一些公众不太感兴趣的消息。引导程序后端是
initdb用于创建目录表的程序。此选项会产生大量非常无聊的输出。
- 打印来自引导后端的调试输出和其他一些公众不太感兴趣的消息。引导程序后端是
-L directory- 指定
initdb应该在哪里找到其 Importing 文件以初始化数据库集群。通常这不是必需的。系统将告知您是否需要明确指定其位置。
- 指定
-n--no-clean- 默认情况下,当
initdb确定某个错误导致其无法完全创建数据库集群时,它会在发现无法完成作业之前删除可能已创建的所有文件。此选项禁止整理,因此对于调试很有用。
- 默认情况下,当
Other options:
-V--version- 打印 initdb 版本并退出。
-?--help- 显示有关 initdb 命令行参数的帮助,然后退出。
Environment
PGDATA- 指定要存储数据库集群的目录;可以使用
-D选项覆盖。
- 指定要存储数据库集群的目录;可以使用
TZ- 指定创建的数据库集群的默认时区。该值应为完整的时区名称(请参见Section 8.5.3)。
与大多数其他 PostgreSQLUtil 一样,该 Util 也使用 libpq 支持的环境变量(请参见Section 33.14)。
Notes
initdb也可以通过pg_ctl initdb调用。