PostgreSQL 安装及相关配置

记录一下最近安装和配置 PostgreSQL 的过程,

使用了 CentOS 7 和 PostgreSQL 10,包括以下内容

  • 安装

  • 初始化

  • 开放密码登录

  • Oracle FDW

安装

下方链接可以找到最新的安装方法

Linux downloads (Red Hat family)

最近一次成功安装的步骤

CentOS 7 + PostgreSQL 10

  1. 选择版本

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

  1. Install the client packages:

yum install postgresql10

  1. Optionally install the server packages:

yum install postgresql10-server

  1. Optionally initialize the database and enable automatic start:

/usr/pgsql-10/bin/postgresql-10-setup initdb
systemctl enable postgresql-10
systemctl start postgresql-10

补充插件

除了核心数据库的安装,还需要另外安装一个库

yum install postgresql10-contrib

没有这个库,就无法直接通过 CREATE EXTENSION 安装插件

初次登录

root 用户

  1. 找到配置文件目录

systemctl status postgresql-10

在执行结果中找到 -D 后的部分,一般为 /var/lib/pgsql/10/data/

  1. 修改其中的 hba.conf 文件

  2. 将第一个 host 方式中的 ident 改成 md5,允许使用账号密码登录

postgres 用户

  1. 数据库默认开启 postgres 用户,操作系统也有同名用户

  2. 在 shell 中切换到 postgres 用户

su postgres

  1. 登录数据库,Peer 方式

psql

  1. 刷新配置使上述 root 用户修改的配置生效

SELECT pg_reload_conf()

  1. 设置密码

\password

尝试通过密码登录

OracleFdw

  1. 安装 postgresql*-devel

yum install postgresql10-devel

  1. 安装 oracle-instantclient*-devel-*,先从 Oracle 网站下载

rpm -i oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm

  1. 添加环境变量

export ORACLE_HOME=/usr/lib/oracle/12.2/client64/lib

  1. 确认包含 pgxs

/usr/pgsql-10/bin/pg_config --pgxs

反馈

/usr/pgsql-10/lib/pgxs/src/makefiles/pgxs.mk

  1. 安装 oracle-fdw

unzip oracle_fdw-2.2.1.zip
cd oracle_fdw-2.2.1
PATH=/usr/pgsql-10/bin:$PATH make
make install

  1. 修改 ld.so.conf 或往 ld.so.conf.d 下加入一个新规则

echo $ORACLE_HOME > /etc/ld.so.conf.d/oracle.conf

  1. 刷新 ld.so.cache

ldconfg

  1. 进入数据库,安装插件

CREATE EXTENSION oracle_fdw;

如果以当前用户直接启动 PostgreSQL 的服务端,可以省去步骤 6、7 ,但现在是通过 systemctl 启动,会以 postgres 用户来运行,设置在当前用户下的 $ORACLE_HOME这个环境变量不会生效,可以在 ld.so.conf 里加入全局的配置,让所有用户都能找到 /usr/lib/oracle/12.2/client64/lib 下的动态库。否则会出现 postgres 找不到 oracle 动态库而无法启用扩展,并提示:could not load library "/usr/pgsql-10/lib/oracle_fdw.so": libclntsh.so.12.1: cannot open shared object file

浙ICP备15043004号-1