时间:2021-05-24
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=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视图中报告。
注:如果数据目录已经存在且初始化了的话,initdb将不会运行。
补充:postgresql 初始化 initdb 出现No such file or directory
如下:
me@me:/opt/HighGo/Develop/bin$ <span style="color:rgb(51,51,255);">./initdb -D ../data -W</span>The files belonging to this database system will be owned by user "me".This user must also own the server process.The database cluster will be initialized with locale "en_US.UTF-8".The default database encoding has accordingly been set to "UTF8".The default text search configuration will be set to "english".creating directory ../data ... okcreating subdirectories ... okselecting default max_connections ... 100selecting default shared_buffers ... 32MBcreating configuration files ... okcreating template1 database in ../data/base/1 ... okinitializing pg_authid ... okEnter new systemuser password: Enter it again: Enter syssao password: Enter it again: Enter syssso password: Enter it again: setting dba password ... okinitializing dependencies ... ok<span style="color:rgb(204,0,0);">creating system views ... FATAL: could not open extension control file "/opt/HighGo/Develop/share/postgresql/extension/file_fdw.control": No such file or directorySTATEMENT: /*</span> * PostgreSQL System Views * * Copyright (c) 1996-2012, PostgreSQL Global Development Group * * src/backend/catalog/system_views.sql原因是file_fdw.control插件没有安装.进入源代码目录下的contrib目录下.找到file_fdw文件进入其中,编译安装,
makemake install同理出现:
creating system views ... FATAL: could not open extension control file "/opt/HighGo/Develop/share/postgresql/extension/dblink.control": No such file or directory.在contrib目录下进入到dblink文件中,make,make install
所以如果出现一些其他的hstore.control 等.相应的安装上.
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java中初始化块详解在Java中,有两种初始化块:静态初始化块和非静态初始化块.静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块
Java中数组初始化和OC其实是一样的,分为动态初始化和静态初始化,动态初始化:指定长度,由系统给出初始化值静态初始化:给出初始化值,由系统给出长度在我们使用数
AngularJS学习笔记之基本指令(init、repeat)ng-init初始化变量{{name+','+age}}ng-init初始化对象ng-init初始
C++静态成员的类内初始化详解及实例代码一般来说,关于C++类静态成员的初始化,并不会让人感到难以理解,但是提到C++静态成员的"类内初始化"那就容易迷糊了。我
Goinit函数详解init()函数会在每个包完成初始化后自动执行,并且执行优先级比main函数高。init函数通常被用来:对变量进行初始化检查/修复程序的状态