# 初始化数据库
initdb — 创建一个新的 PostgreSQL 数据库集群
# 概要
初始化数据库
[选项
...][ --pgdata
| -d
]目录
# 描述
初始化数据库
创建一个新的 PostgreSQL 数据库集群。数据库集群是由单个服务器实例管理的数据库集合。
创建数据库集群包括创建数据库数据所在的目录、生成共享目录表(属于整个集群而不是任何特定数据库的表)以及创建模板1
和postgres
数据库。当您稍后创建一个新数据库时,模板1
数据库被复制。(因此,任何安装在模板1
会自动复制到以后创建的每个数据库中。)postgres
database 是供用户、实用程序和第三方应用程序使用的默认数据库。
虽然初始化数据库
将尝试创建指定的数据目录,如果所需数据目录的父目录是 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=*
目录*
此选项指定应存储数据库集群的目录。这是唯一需要的信息初始化数据库
,但您可以通过设置PGDATA
环境变量,这可以很方便,因为数据库服务器(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
.