世界上只有一种英雄主义,就是看清生活的真相之后依然热爱生活!

PostgreSQL数据库编译安装

2019-04-04
413次查阅
2019/7/8

相关网站

一、安装依赖

yum update -y
yum install -y readline readline-devel zlib zlib-devel python tclx tclx-devel openssl  openssl-devel4 gcc-c++

二、configure配置参数

选项 说明 默认 是否安装
--prefix=PREFIX 安装路径 /usr/local/pgsql 建议
--exec-prefix=EXEC-PREFIX pgsql系统架构文件目录,而不是PREFIX中设置的地方。 这样做可以比较方便地在不同主机之间共享体系相关的文件。 和prefix一致 不建议
--bindir=DIRECTORY 为可执行程序指定目录 exec-prefix/bin 不建议
--sysconfdir=DIRECTORY 用于各种各样配置文件的目录 prefix/etc 一般情下不建议
--libdir=DIRECTORY 设置安装库和动态装载模块的目录 exec-prefix/lib 不建议
--includedir=DIRECTORY C 和 C++ 头文件的目录 preifx/include 不建议
--datarootdir=DIRECTORY 设置下面一些只读文件的根目录。(这些只读文件和数据库本身没有关系,一般指帮忙文档之类的) prefix/share 不建议
--datadir=DIRECTORY 和数据库不相关的只读文件目录 datarootdir 不建议
--localedir=DIRECTORY 设置安装区域数据的目录,特别是消息翻译目录文件。 datarootdir/locale 不建议
--mandir=DIRECTORY PostgreSQL自带的手册页将安装到这个目录,它们被安装在相应的manx子目录里。 默认是DATAROOTDIR/man。 datarootdir/man 不建议
--docdir=DIRECTORY 设置安装文档文件的根目录,”man”页不包含在内。这只为后续选项设置默认值 datarootdir/doc/postgresql 不建议
--htmldir=DIRECTORY PostgreSQL的HTML格式的文档将被安装在这个目录中 datarootdir 不建议
--with-extra-version=STRING 把STRING追加到 PostgreSQL 版本号。   不建议
--with-includes=DIRECTORIES DIRECTORIES是一个冒号分隔的目录列表,这些目录将被加入编译器的头文件搜索列表中。可以理解为pgsql优先搜索这些目录下的依赖包,如果没有再按标准目录查找。
例如:
--with-includes=/opt/gnu/include:/usr/sup/include.
  一般情况下不建议
--with-libraries=DIRECTORIES 和--with-includes类似。   一般情况下不建议
--enable-nls[=LANGUAGES] 打开本地语言支持(NLS),也就是以非英文显示程序消息的能力。LANGUAGES是一个空格分隔的语言代码列表, 表示你想支持的语言。例如--enable-nls=’de fr’ (你提供的列表和实际支持的列表之间的交集将会自动计算出来),该选项需要 Gettext API。
例如:--enable-nls=’de fr’,多个语言使用空格间隔。
  不建议
--with-pgport=NUMBER 端口 5432 一般情况下不建议
--with-perl 服务器端语言Perl,涉及到服务器端编程   不建议
--with-python 服务器端语言python,涉及到服务器端编程   不建议
--with-tcl 服务器端语言tcl,涉及到服务器端编程   不建议
--with-tclconfig=DIRECTORY 服务器端语言tcl的配置目录。配置文件为tclConfig.sh,涉及到服务器端编程   不建议
--with-gssapi 编译 GSSAPI 认证支持。在很多系统上,GSSAPI(通常是 Kerberos 安装的一部分)系统不会被安装在默认搜索位置(例如/usr/include、/usr/lib),因此你必须使用选项--with-includes和--with-libraries来配合该选项。configure将会检查所需的头文件和库以确保你的 GSSAPI 安装足以让配置继续下去。   不建议
--with-krb-srvnam=NAME     不建议
--with-icu 例如:--with-icu ICU_CFLAGS=’-I/some/where/include’ ICU_LIBS=’-L/some/
where/lib -licui18n -licuuc -licudata’   不建议
--with-openssl 安装 openssl   建议
--with-pam 编译PAM(可插拔认证模块)支持。   不建议
--with-bsd-auth 编译 BSD 认证支持(BSD 认证框架目前只在 OpenBSD 上可用)   不建议
--with-ldap 为认证和连接参数查找编译LDAP支持。在 Unix 上,这需要安装OpenLDAP包。在 Windows 上将使用默认的WinLDAP库。configure将会检查所需的头文件和库以确保你的 OpenLDAP安装足以让配置继续下去。   不建议
--with-systemd 编译对systemd 服务通知的支持。如果服务器是在systemd 机制下被启动,这可以提高集成度,否则不会有影响 。要使用这个选项,必须安装libsystemd 以及相关的头文件。   不建议
--without-readline 避免使用Readline库(以及libedit)。这个选项禁用了psql中的命令行编辑和历史, 因此我们不建议这么做。 默认支持 不建议
--with-libedit-preferred 使用libedit编辑命令行(一般指的BSD) 默认使用readline 不建议
--with-bonjour macOS推荐安装   不建议
--with-uuid=LIBRARY LIBRARY可选[“bsd”,”e2fs”,”ossp”]   不建议
--with-libxml     不建议
--with-libxslt     不建议
--disable-float4-byval 禁用float4类型,该选项消耗性能 启用 不建议
--disable-float8-byval 禁用float8类型,该选项消耗性能 启用 不建议
--with-segsize=SEGSIZE 超大数据表文件,会切分成若干个大小不超过SEGSIZE的小文件。该值的设置参考系统大文件的最大值。单位G。2的N次幂
Tips : 编译时不带单位
1G 建议
--with-blocksize=BLOCKSIZE 设置块大小,单位K。2的N次幂,1-32K之间
Tips : 编译时不带单位
8K 建议
--with-wal-segsize=SEGSIZE 指定WAL日志文件的大小,单位M。2的N次幂。设置区间 1 - 1024M
Tips : 编译时不带单位
  建议
--with-wal-blocksize=BLOCKSIZE 指定WAL日志的块大小。单位K。2的N次幂。设置区间 1 - 64K
Tips : 编译时不带单位
  建议
--disable-spinlocks 即便PostgreSQL对于该平台没有 CPU 自旋锁支持,也允许编译成功。自旋锁支持的缺乏会导致较差的性能,因此这个选项只有当编译终端或者通知你该平台缺乏自旋锁支持时才应被使用。 开启 不建议
--disable-strong-random 如果操作系统不支持 strong random numbers ,则启用该选项。 开启 不建议
--disable-thread-safety 禁用客户端库的线程安全性。这会阻止libpq和ECPG程序中的并发线程安全地控制它们私有的连接句柄。 开启 不建议
--with-system-tzdata=DIRECTORY PostgreSQL包含它自己的时区数据库,它被用于日期和时间操作。这个时区数据库实际上是和 IANA 时区数据库相兼容的,后者在很多操作系统如 FreeBSD、Linux和Solaris上都有提供,因此再次安装它可能是冗余的。当这个选项被使用时,将不会使用DIRECTORY中系统提供的时区数据库,而是使用包括在 PostgreSQL 源码发布中的时区数据库。DIRECTORY必须被指定为一个绝对路径。/usr/share/zoneinfo在某些操作系统上是一个很有可能的路径。注意安装例程将不会检测不匹配或错误的时区数据。如果你使用这个选项,建议你运行回归测试来验证你指定的时区数据能正常地工作在PostgreSQL中。这个选项主要针对那些很了解他们的目标操作系统的二进制包发布者。使用这个选项主要优点是不管何时当众多本地夏令时规则之一改变时, PostgreSQL 包不需要被升级。另一个优点是如果时区数据库文件在安装时不需要被编译, PostgreSQL 可以被更直接地交叉编译。   不建议
--without-zlib 避免使用Zlib库。这样就禁用了pg_dump和 pg_restore中对压缩归档的支持。这个选项只适用于那些没有这个库的少见的系统。 开启 不建议
--enable-debug 把所有程序和库以带有调试符号的方式编译。这意味着你可以通过一个调试器运行程序来分析问题。 这样做显著增大了最后安装的可执行文件的大小,并且在非 GCC 的编译器上,这么做通常还要关闭编译器优化, 这些都导致速度的下降。但是,如果有这些符号的话,就可以非常有效地帮助定位可能发生问题的位置。目前,我们只是在你使用 GCC 的情况下才建议在生产安装中使用这个选项。但是如果你正在进行开发工作,或者正在使用 beta 版本,那么你就应该总是打开它。 关闭 不建议
--enable-coverage 开发pgsql使用 关闭 不建议
--enable-profiling 开发pgsql使用 关闭 不建议
--enable-cassert 开发pgsql使用 关闭 不建议
--enable-depend 开发pgsql使用 关闭 不建议
--enable-dtrace   关闭 不建议
--enable-tap-tests   关闭 不建议

三、安装

下载:
wget https://ftp.postgresql.org/pub/source/v10.9/postgresql-10.9.tar.bz2
tar jxvf postgresql-10.9.tar.bz2 && cd postgresql-10.9
编译安装:
./configure --prefix=/usr/local/pgsql \
--with-openssl \
--with-segsize=4 \
--with-blocksize=16 \
--with-wal-segsize=512 \
--with-wal-blocksize=32
make
make install
创建用户组:
groupadd postgres && useradd -g postgres postgres
mkdir -p /data/pgsql/{data,log}
chown -R postgres:postgres /data/pgsql
配置环境变量:
vim /etc/profile
export PGDATA=/data/pgsql/data
export PGHOME=/usr/local/pgsql
export PATH=$PGHOME/bin:$PATH

source /etc/profile

四、数据库操作

su - postgres   # 切换用户
initdb          # 初始化数据库
pg_ctl -D /data/pgsql/data -l /data/pgsql/log/logfile start     # 启动
pg_ctl stop -D /data/pgsql/data                                 # 停止
pg_ctl restart -D /data/pgsql/data                              # 重启

五、配置允许远程访问

安装PostgreSQL数据库之后,默认只能本地访问连接。如果想在其他主机上访问PostgreSQL数据库服务器,就需要进行相应的配置。

vim /data/pgsql/data/postgresql.conf
#listen_addresses = 'localhost' 修改为 listen_addresses = '*'

vim /data/pgsql/data/pg_hba.conf
host    all             all             0.0.0.0/0               password

修改 postgres 用户密码:

su - postgres
psql
postgres=# ALTER USER postgres WITH PASSWORD '123456';
\q

六、PostgreSQL 认证方式

打开data/pg_hba.conf,指定当一个连接匹配这条记录时,要使用的认证方式。

  • trust无条件地允许连接。这种方法允许任何可以与PostgreSQL数据库服务器连接的用户以他们期望的任意PostgreSQL数据库用户身份登入,而不需要口令或者其他任何认证。
  • reject无条件地拒绝连接。这有助于从一个组中”过滤出”特定主机,例如一个reject行可以阻塞一个特定的主机连接,而后面一行允许一个特定网络中的其余主机进行连接。
  • md5要求客户端提供一个双重 MD5 加密的口令进行认证。
  • password要求客户端提供一个未加密的口令进行认证。因为口令是以明文形式在网络上发送的,所以我们不应该在不可信的网络上使用这种方式。
  • gss用 GSSAPI 认证用户。只对TCP/IP 连接可用。
  • sspi用 SSPI 来认证用户。只在Windows 上可用。
  • ident通过联系客户端的 ident 服务器获取客户端的操作系统名,并且检查它是否匹配被请求的数据库用户名。Ident 认证只能在 TCIP/IP 连接上使用。当为本地连接指定这种认证方式时,将用 peer 认证来替代。
  • peer从操作系统获得客户端的操作系统用户,并且检查它是否匹配被请求的数据库用户名。这只对本地连接可用。
  • ldap使用LDAP服务器认证。
  • radius用 RADIUS 服务器认证。
  • cert使用 SSL 客户端证书认证。
  • pam使用操作系统提供的可插入认证模块服务(PAM)认证。
  • bsd使用由操作系统提供的 BSD 认证服务进行认证。

1条评论

想说点什么?