StupidBeauty
Read times:3457Posted at:Wed Feb 15 00:22:03 2017 - no title specified

PostgreSQL 9.5.6文档翻译 : initdb

名字

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

概要

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

说明

initdb 用于创建 一个新的PostgreSQL数据库群. 一个数据库群,指的是, 一组被同一个服务器实例管理的数据库.

创建数据库 群,具体来说,包括以下动作:创建用于存储数据库数据 的目录;生成共享 的目录表 ( 这些表属于整个群, 而不是属于任何单个数据库 ) ;创建 template1 postgres 数据库. 当妳日后创建一个新数据库时, template1 数据库 中的所有东西都会被复制过去. (因此 template1 中加入的任何东西, 都被会自动复制到日后新创建的每个数据库中. ) postgres 数据库 是一个默认数据库, 被设计为让用户 工具和第三方程序使用.

initdb 会尝试着创建指定的数据目录,但是,如果预期 数据目录 的亲代目录是root 用户所有的话,它可能没有权限来 做对应的操作。 要在这样的情况下做出操作的话,则, 以 root 用户来创建一个空的数据目录,然后,使用 chown 命令 来将该目录的所有权赋予给数据库用户账号,然后,使用 su 切换 成要用来运行 initdb 的数据库用户。

initdb 必须 以拥有该服务器进程的那个用户的身份来运行,因为服务器需要访问 initdb 所创建的那些文件和目录。由于服务器 不能以 root 用户的身份运行,因此,妳同样不能以 root 用户的身份来运行 initdb (事实 上,它自己就会拒绝这样做。 )

initdb 会初始化该数据库群的默认语系(locale)和字符集编码。 在创建数据库时,以下各个参数都可以分别单独指定:字符集编码 ;排列顺序 ( LC_COLLATE ) ;字符集类别 ( LC_CTYPE ,例如大写 、小写、数字 ) initdb 确定 的是, template1 数据库中对于以上各个参数的选项, 这会成为所有其它数据库的默认值。

要改变默认的排列顺序或字符集类别,则,使用 --lc-collate --lc-ctype 选项。 C POSIX 之外的排列顺序,都会对性能有一定影响。由于 这些原因, 在运行 initdb 时,务必要选择好正确的语系。

其它 的语系类别,可以在日后启动服务器的时候修改 妳还可以使用 --locale 为所有的语系类型设置默认值,包括排列顺序和字符集类别。服务器 全部 的语系值 ( lc_* ) ,可使用 SHOW ALL 命令来显示。欲知更多细节 ,请阅读 小节22.1

要改变默认的编码,则使用 --encoding 选项。欲知更多细节 ,请阅读 小节22.3

选项

-D  directory
--pgdata= directory

这个选项,指定的是, 要用来存放数据库 群的目录。 这是 initdb 所要求的唯一一个必选参数,但是 ,妳也可以避免直接写出来,具体做法是,设置 PGDATA 环境变量 这种做法本身也会带来便利,因为数据库服务器 ( postgres ) 也可以在日后利用同一个环境变量值找到数据库目录。

-U  username
--username= username

指定数据库 中超级用户的用户名。默认 值是运行 initdb 时的实际用户名。 超级用户的实际名字并不重要,不过,一般使用惯例的postgres作为名字,即使实际的操作系统用户名不是这个也没关系。

环境变量

PGDATA

指定 要用来存放数据库群的目录;可使用 -D 选项来覆盖。

参考

pg_ctl postgres

千金静雅 懂得护理的卫生巾

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands