怎么在postgresql中使用initdb进行初始化

  

怎么在postgresql中使用initdb进行初始化?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

initdb 官网

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

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

尽管initdb将尝试创建指定的数据目录,但如果所需数据目录的父目录是根目录,则它可能没有权限。要再这样的设置中初始化,需要创建一个空数据目录作为根目录,然后使用chown将目录的所有权分配给数据库用户账户,然后su成为运行initdb的数据库用户。

initdb必须作为拥有服务器进程的用户运行,因为服务器需要访问initdb创建的文件和目录。由于服务器不能作为root用户运行,所以也不能作为root用户运行initdb。

出于安全原因,在默认情况下,initdb创建的新集群只能由集群所有者访问。——allow-group-access选项允许与集群所有者属于同一组的任何用户读取集群中的文件。这对于作为非特权用户执行备份非常有用。

initdb初始化数据库集群的默认语言环境和字符集编码。在创建数据库时,可以分别设置字符集编码、排序顺序(LC_COLLATE)和字符集类(LC_CTYPE,例如upper、lower、digit)。initdb确定template1数据库的那些设置,这些设置将作为所有其他数据库的默认设置。

要更改默认的排序顺序或字符集类,请使用——lc-collate和——lc-ctype选项。除了C或POSIX之外的排序顺序也会造成性能损失。由于这些原因,在运行initdb时选择正确的语言环境是很重要的。

其余的语言环境类别可以在服务器启动后更改。还可以使用——locale设置所有语言环境类别的默认值,包括排序顺序和字符集类。所有服务器语言环境值(lc_*)都可以通过SHOW All来显示。

常用参数:

-D directory/--pgdata=https://www.yisu.com/zixun/directory此选项指定应该存储数据库集群的目录。必传。也可以设置环境变量PGDATA来替换-D选项。

-U username/--username=username选择数据库superuser的用户名。这默认为运行initdb的用户的名称。

-E encoding/--encoding=encoding选择模板数据库的编码。这也是您稍后创建的任何数据库的默认编码,

--lc-collate/--lc-ctype更改默认的排序顺序或字符集类。

-k/--data-checksums在数据页上使用校验和来帮助检测I/O系统的损坏,否则系统将是静默的。启用校验和可能会导致显著的性能损失。如果设置,则计算所有数据库中所有对象的校验和。所有校验和失败将在pg_stat_database视图中报告。

所以postgresql初始化可能使用的命令是:

su - pguser001 -c "/u01/pgsql/bin/initdb --username=pguser001 --encoding=UTF8 --lc-collate=C --lc-ctype=en_US.
  utf8 ——data-checksums  -D /data" 

注:如果数据目录已经存在且初始化了的话,initdb将不会运行。

<强>补充:postgresql初始化initdb出现没有这样的文件或目录

1。initdb出现

,致命的:,could  not  open  extension  control  file “/opt/HighGo/开发/共享/postgresql/扩展/file_fdw.control":, No  such  file 或是目录。

如下:

me@me:/opt/HighGo/开发/bin,美元& lt; span 祝辞。/initdb  -D  . ./data  -W , files  belonging 用却;能够database  system  will  be  owned  by  user “me"。   却,能够user  must  also  own 从而server 过程。   从而database  cluster  will  be  initialized  with  locale “en_US.UTF-8"。   从而default  database  encoding  has  accordingly  been  set 用“UTF8"。   从而default  text  search  configuration  will  be  set 用“english"。   creating  directory  . ./data …,好吧   creating  subdirectories …,好吧   selecting  default  max_connections ……, 100   selecting  default  shared_buffers ……32 mb   creating  configuration  files ……,好吧   creating  template1  database 拷贝. ./数据/基地/1,…,好吧   initializing  pg_authid …,好吧   密码:Enter  new  systemuser    又Enter  it :,   Enter  syssao 密码:   又Enter  it :,   Enter  syssso 密码:   又Enter  it :,   setting  dba  password ……,好吧   initializing  dependencies …,好吧   & lt; span 祝辞creating  system  views ……,致命的:,could  not  open  extension  control  file “/opt/HighGo/开发/共享/postgresql/扩展/file_fdw.control":, No  such  file 或是目录   声明:/* & lt;/span>   ,* PostgreSQL  System 视图   ,*   ,* Copyright  (c), 1996 - 2012, PostgreSQL  Global  Development 组   ,*   ,* src/后端/目录/system_views.sql

怎么在postgresql中使用initdb进行初始化