2.1.?initdb

2.1.1. 用法
2.1.2. 描述
2.1.3. 选项
2.1.4. 环境变量
2.1.5. 注解

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

2.1.1.?用法

initdb [option...] [ --uxdata | -D ] directory

2.1.2.? 描述

initdb创建一个新的UXDB数据库集群。一个数据库集群是由一个单一服务器实例管理的数据库的集合。

一个数据库集群的创建包括创建存放数据库数据的目录、生成共享目录表(属于整个集群而不是任何特定数据库的表)并且创建template1uxdb数据库。当你后来创建一个新的数据库时,任何在template1数据库中的东西都会被复制(因此,任喊拿庞蜗菲教ㄗ⒉嵬狙安装在template1中的东西都会被自动地复制到后来创建的每一个数据库中)。uxdb数据库是便于用户、工具和第三方应用使用的默认数据库。

尽管initdb将尝试创建指定的数据目录,它可能没有权限(如果想要的数据目录的父目录被根用户拥有)。要在这样一种设置中初始化,作为root创建一个空数据目录,然后使用chown将该目录赋予给数据库用户账户,再然后su成为该数据库用户并运行initdb

initdb必须以将拥有该服务器进程的用户运行,因为该服务器需要访问initdb创建的文件和目录。因为该服务器不能作为root运行,你不能以root运行initdb(事实上它会拒绝这样做)。

initdb初始化该数据库集群的默认区域和字符集编码。当一个数据库被创建时,其字符集编码、排序顺序(LC_COLLATE)和字符集类(LC_CTYPE,例如大写、小写、数字)可以被独立设置。initdbtemplate1数据库确定那些设置,它们将作为所有其他数据库的默认值。

要修改默认排序顺序或字符集类,使用--lc-collate--lc-ctype选项。除CPOSIX之外的排序顺序也有性能罚值。由于这些原因,在运行initdb时选择正确的区域很重要。

余下的区域分类可以在服务器启动之后改变。你也可以使用--locale来为所有区域分类设置默认值,包括排序顺序和字符集类。所有服务器区域值(lc_*)可以通过SHOW ALL显示。

要修改默认编码,使用--encoding

2.1.3.?选项

-A authmethod
--auth=authmethod

这个选项为本地用户指定在ux_hba.conf中使用的默认认证方法(hostlocal行)。initdb将使用指定的认证方法为非复制连接以及复制连接填充ux_hba.conf项。

除非你信任你系统上的所有本地用户,不要使用trust。为了安装方便,trust是默认值。

--auth-host=authmethod

这个选项为通过 TCP/IP 连接的本地用户指定在ux_hba.conf中使用的认证方法(host行)。

--auth-local=authmethod

这个选项为通过 Unix 域套接字连接的本地用户指定在ux_hba.conf中使用的认证方法(local行)。

-D directory
--uxdata=directory

这个选项指定数据库集群应该存放的目录。这是initdb要求的唯一信息,但是你可以通过设定UXDBTA环境变量来避免书写它,这很方便因为之后数据库服务器(uxdb)可以使用同一个变量来找到数据库目录。

-E encoding
--encoding=encoding

选择模板数据库的编码。这也将是后来创建的任何数据库的默认编码,除非你覆盖它。默认值来自于区域,或者如果该值不起作用则为SQL_ASCII

-k
--data-checksums

在数据页面上使用校验码来帮助检测 I/O 系统造成的损坏。启用校验码将会引起显著的性能惩罚。这个选项只能在初始化期间被设置,并且以后不能修改。如果被设置,在所有数据库中会为所有对象计算校验码。

--locale=locale

为数据库集群设置默认区域。如果这个选项没有被指定,该区域将从initdb所运行的环境中继承。

--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将等待所有文件被安全地写到磁盘。这个选项会导致initdb不等待就返回,这当然更快,但是也意味着一次后续的操作系统崩溃可能让数据目录损坏。通常,这个选项对测试有用,但是不应该在创建生产安装时使用。

--pwfile=filename

initdb从一个文件读取数据库超级用户的口令。该文件的第一行被当作口令。

-S
--sync-only

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

-T config
--text-search-config=config

设置默认的文本搜索配置。

-U username
--username=username

选择数据库超级用户的用户名。这个的默认值是实际运行initdb的用户的名称。超级用户的名字是什么真的不重要,但是你可以选择保留常用的名字uxdb,即使操作系统的用户名不同。

-W
--pwprompt

initdb提示要求操作者为数据库管理员uxdb、数据库安全员uxop设置一个口令,该口令会被程序以MD5默认加密算法加密后存储至系统表ux_authid中的rolepassword字段中。当数据库集群启动后,如果管理员uxdb、安全员uxop请求登录,则服务器程序根据初始化uxdb、uxop用户创建时保存的口令进行身份鉴别。

-X directory
--waldir=directory

这个选项指定预写式日志会被存储在哪个目录中。

其他较少使用的选项:

-d
--debug

打印来自引导后端的调试输出以及普通大众不那么感兴趣的一些消息。引导后端被程序initdb用来创建目录表。这个选项会生成大量极端无聊的输出。

-L directory

指定initdb应从哪里寻找它的输入文件来初始化数据库集群。这通常没有必要。如果你需要显式指定它们的位置,你应该被告知。

-n
--no-clean

默认情况下,当initdb确定有一个错误阻止它完整地创建数据库集簇,它会移除在它发现无法完成任务之前创建的任何文件。这个选项会抑制这种整理并且对调试有用。

-s
--show

显示内部设置。

-Z

使用分布式文件系统(UXFS)。

-I

初始化数据库级审计,创建数据库审计员uxad。

initdb提示要求操作者为数据库审计员uxad设置一个口令,该口令会被程序以MD5默认加密算法加密后存储至系统表ux_authid中的rolepassword字段中。当数据库集群以带审计模式启动后,如果审计员uxad请求登录,则服务器程序根据初始化uxad用户创建时保存的口令进行身份鉴别。

-M

启用全数据库级加密,提示用户输入加密秘钥,程序对秘钥采用SHA256算法进行加密,保存至进程中,未在磁盘文件中进行存储。进程退出,此秘钥释放并失效。

注意

UXDB社区版本不支持-I、-M选项。

--encrypted-pwfile=filename

从文件中读取密码,启动加密的数据库。

其他选项:

-V
--version

打印initdb版本并退出。

-?
--help

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

2.1.4.?环境变量

UXDATA

指定数据库集群应该被存放的目录,可以使用-D选项覆盖。

TZ

指定创建的数据集群的默认时区。值应该是一个完整的时区名称。

和大部分其他UXDB工具相似,这个工具也使用libpq支持的环境变量。

2.1.5.?注解

initdb可以通过ux_ctl initdb被调用。

XML 地图 | Sitemap 地图