PostgreSQL 安装及相关配置
记录一下最近安装和配置 PostgreSQL 的过程,
使用了 CentOS 7 和 PostgreSQL 10,包括以下内容
-
安装
-
初始化
-
开放密码登录
-
Oracle FDW
安装
下方链接可以找到最新的安装方法
Linux downloads (Red Hat family)
最近一次成功安装的步骤
CentOS 7 + PostgreSQL 10
- 选择版本
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- Install the client packages:
yum install postgresql10
- Optionally install the server packages:
yum install postgresql10-server
- 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 用户
- 找到配置文件目录
systemctl status postgresql-10
在执行结果中找到 -D 后的部分,一般为 /var/lib/pgsql/10/data/
-
修改其中的 hba.conf 文件
-
将第一个 host 方式中的 ident 改成 md5,允许使用账号密码登录
postgres 用户
-
数据库默认开启 postgres 用户,操作系统也有同名用户
-
在 shell 中切换到 postgres 用户
su postgres
- 登录数据库,Peer 方式
psql
- 刷新配置使上述 root 用户修改的配置生效
SELECT pg_reload_conf()
- 设置密码
\password
尝试通过密码登录
OracleFdw
- 安装
postgresql*-devel
yum install postgresql10-devel
- 安装
oracle-instantclient*-devel-*
,先从 Oracle 网站下载
rpm -i oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
- 添加环境变量
export ORACLE_HOME=/usr/lib/oracle/12.2/client64/lib
- 确认包含 pgxs
/usr/pgsql-10/bin/pg_config --pgxs
反馈
/usr/pgsql-10/lib/pgxs/src/makefiles/pgxs.mk
- 安装 oracle-fdw
unzip oracle_fdw-2.2.1.zip
cd oracle_fdw-2.2.1
PATH=/usr/pgsql-10/bin:$PATH make
make install
- 修改 ld.so.conf 或往 ld.so.conf.d 下加入一个新规则
echo $ORACLE_HOME > /etc/ld.so.conf.d/oracle.conf
- 刷新 ld.so.cache
ldconfg
- 进入数据库,安装插件
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