# 初始化数据库

initdb — 创建一个新的 PostgreSQL 数据库集群

# 概要

初始化数据库 [选项...][ --pgdata | -d ]目录

# 描述

初始化数据库创建一个新的 PostgreSQL 数据库集群。数据库集群是由单个服务器实例管理的数据库集合。

创建数据库集群包括创建数据库数据所在的目录、生成共享目录表(属于整个集群而不是任何特定数据库的表)以及创建模板1postgres数据库。当您稍后创建一个新数据库时,模板1数据库被复制。(因此,任何安装在模板1会自动复制到以后创建的每个数据库中。)postgresdatabase 是供用户、实用程序和第三方应用程序使用的默认数据库。

虽然初始化数据库将尝试创建指定的数据目录,如果所需数据目录的父目录是 root 拥有的,它可能没有权限。要在这样的设置中进行初始化,请以 root 身份创建一个空的数据目录,然后使用chown将该目录的所有权分配给数据库用户帐户,然后成为要运行的数据库用户初始化数据库.

初始化数据库必须以拥有服务器进程的用户身份运行,因为服务器需要有权访问初始化数据库创建。由于服务器不能以root身份运行,因此您不能运行初始化数据库作为根。(实际上它会拒绝这样做。)

出于安全原因,由初始化数据库默认情况下,只能由集群所有者访问。这--允许组访问选项允许与集群所有者在同一组中的任何用户读取集群中的文件。这对于以非特权用户身份执行备份很有用。

初始化数据库初始化数据库集群的默认语言环境和字符集编码。字符集编码,排序规则(LC_COLLATE) 和字符集类 (LC_CTYPE,例如,upper,lower,digit)可以在创建数据库时单独设置。初始化数据库确定这些设置模板1数据库,它将作为所有其他数据库的默认值。

要更改默认排序顺序或字符集类,请使用--lc-整理--lc-ctype选项。整理订单以外的C要么POSIX也有性能损失。由于这些原因,在运行时选择正确的语言环境很重要初始化数据库.

稍后启动服务器时可以更改剩余的语言环境类别。你也可以使用--locale为所有语言环境类别设置默认值,包括排序规则和字符集类。所有服务器语言环境值 (lc_*) 可以通过显示显示所有.更多细节可以在第 24.1 节.

要更改默认编码,请使用--编码.更多细节可以在第 24.3 节.

# 选项

-一种 *授权方法*
--auth=*授权方法*

此选项指定用于本地用户的默认身份验证方法pg_hba.conf (主持人当地的行)。初始化数据库将预填充pg_hba.conf使用指定身份验证方法进行非复制以及复制连接的条目。

不使用相信除非您信任系统上的所有本地用户。相信为便于安装的默认设置。

--auth-主机=*授权方法*

此选项指定本地用户通过 TCP/IP 连接的身份验证方法pg_hba.conf (主持人行)。

--auth-本地=*授权方法*

此选项通过 Unix 域套接字连接指定本地用户的身份验证方法pg_hba.conf(当地的行)。

-D *目录*
--pgdata=*目录*

此选项指定应存储数据库集群的目录。这是唯一需要的信息初始化数据库,但您可以通过设置PGD​​ATA环境变量,这可以很方便,因为数据库服务器(postgres) 稍后可以通过相同的变量找到数据库目录。

-E *编码*
--编码=*编码*

选择模板数据库的编码。这也将是您稍后创建的任何数据库的默认编码,除非您在那里覆盖它。默认值是从语言环境派生的,或者SQL_ASCII如果那不起作用。PostgreSQL 服务器支持的字符集在第 24.3.1 节.

-g
--允许组访问

允许与群集所有者在同一组中的用户读取由创建的所有群集文件initdb。此选项在Windows上被忽略,因为它不支持POSIX样式的组权限。

-k
--数据校验和

在数据页上使用校验和来帮助检测I/O系统的损坏,否则该系统将保持沉默。启用校验和可能会导致明显的性能损失。如果设置,将计算所有数据库中所有对象的校验和。所有校验和失败都将在pg_统计数据库看法看见第30.2节详细信息。

--地点=*场所*

设置数据库群集的默认区域设置。如果未指定此选项,则区域设置将从initdb跑进来。语言环境支持如中所述第24.1节.

--信用证核对=*场所*
--lc ctype=*场所*
--信用证信息=*场所*
--信用证货币=*场所*
--lc数字=*场所*
--lc时间=*场所*

喜欢--地点,但仅设置指定类别中的区域设置。

--无区域设置

相当于--语言环境=C.

-N
--不同步

默认情况下,initdb将等待所有文件安全写入磁盘。此选项会导致initdb无需等待即可返回,速度更快,但这意味着随后的操作系统崩溃可能会导致数据目录损坏。通常,此选项对测试有用,但在创建生产安装时不应使用。

--没有指示

默认情况下,initdb将编写如何在集群输出结束时启动集群的说明。此选项会导致忽略这些说明。这主要用于包装的工具initdb在特定于平台的行为中,这些指令可能不正确。

--pwfile=*文件名*

使initdb从文件中读取数据库超级用户的密码。文件的第一行作为密码。

-S
--仅同步

安全地将所有数据库文件写入磁盘并退出。这不会执行任何正常的initdb操作。

-T*配置*
--文本搜索配置=*配置*

设置默认的文本搜索配置。看见违约_文本_搜索_配置了解更多信息。

-U*用户名*
--用户名=*用户名*

选择数据库超级用户的用户名。这默认为正在运行的有效用户的名称initdb超级用户的名字其实并不重要,但人们可能会选择保留惯用的名字postgres,即使操作系统用户的名字不同。

-W
--pwprompt

使initdb提示输入密码以提供数据库超级用户。如果你不打算使用密码验证,这并不重要。否则,在设置密码之前,您将无法使用密码身份验证。

-X*目录*
--瓦尔迪尔=*目录*

此选项指定预写日志应存储的目录。

--wal segsize=*大小*

设定沃尔玛细分市场规模,以兆字节为单位。这是WAL日志中每个单独文件的大小。默认大小为16兆字节。该值必须是介于1和1024(兆字节)之间的2的幂。此选项只能在初始化期间设置,以后不能更改。

调整此大小以控制日志传送或归档的粒度可能很有用。此外,在具有大量WAL的数据库中,每个目录中WAL文件的绝对数量可能会成为性能和管理问题。增加WAL文件大小将减少WAL文件的数量。

还提供了其他不太常用的选项:

-d
--调试

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

--丢弃缓存

使用调试\u丢弃\u缓存=1选项这需要很长时间,并且只用于深度调试。

-L*目录*

指定位置initdb应该找到它的输入文件来初始化数据库集群。这通常是不必要的。如果需要明确指定它们的位置,系统会告诉您。

-n
--不干净

默认情况下initdb确定某个错误阻止它完全创建数据库群集,它会在发现无法完成作业之前删除可能已创建的所有文件。此选项禁止整理,因此对调试非常有用。

其他选择:

-五
--版本

打印initdb版本并退出。

-?
--救命

显示有关initdb命令行参数的帮助,然后退出。

# 环境

PGDATA

指定存储数据库群集的目录;可以使用-D选项

PG_颜色

指定是否在诊断消息中使用颜色。可能的值是总是, 汽车从不.

TZ

指定创建的数据库群集的默认时区。该值应为完整的时区名称(请参见第8.5.3节).

与大多数其他PostgreSQL实用程序一样,该实用程序也使用libpq支持的环境变量(请参阅第34.15节).

# 笔记

initdb也可以通过pg_ctl initdb.

# 另见

pg_ctl, 博士后