前言

PostgreSQL是一款免费的开源数据库,可以免费用于商业用途中,所以较受企业的欢迎,而且自身工作中使用的也是PostgreSQL数据库,所以在有了Linux服务器后第一时间想搭建起自己的数据库实例。

准备工作

升级服务器上的依赖防止出现未知问题

[root] yum -y update

创建数据库用户postgres,此用户主要用于数据库相关的维护操作

[root] useradd postgres  #新用户名
[root] passwd postgres   #设置新用户的密码

PostgreSQL官网找到你想使用的数据库版本,复制gz或bz2格式的文件路径,通过wget命令获取。

[root] cd /opt
[root] mkdir postgreSQL #该目录用于安装postgreSQL数据库
[root] chown postgres:postgres postgreSQL #修改相应权限
[root] wget https://ftp.postgresql.org/pub/source/v9.6.3/postgresql-9.6.3.tar.gz

下载完成后解压刚下载的压缩包

[root] pwd
> /opt
[root] tar -xzf postgresql-9.6.3.tar.gz #如果下载bz2后缀文件则使用-xjf

在系统中配置相关的环境变量,此处配置的/opt/postgres为后续的

[root] vim /etc/profile
[root] #添加下面的配置到末尾
export PATH=/opt/postgreSQL/bin:$PATH
export PGHOME=/opt/postgreSQL
export PGDATA=/opt/postgreSQL/data/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGHOME/lib/
export PATH=$PGHOME/bin:$PATH:$HOME/bin

[root] source /etc/profile #更新使配置生效

安装PostgreSQL服务

配置数据库信息并编译

[root] yum -y install readline-devel zlib-devel #安装前环境准备
[postgres] ./configure --prefix=/opt/postgreSQL
> #配置可能提示一些库不存在导致失败,解决方法在下方
[postgres] make
[postgres] make install

初始化并启动数据库测试

[postgres] /opt/postgreSQL/bin/initdb -E utf8 #初始化数据库
[postgres] /opt/postgreSQL/bin/pg_ctl -l /opt/postgreSQL/service.log start #启动数据库
[postgres] netstat -ano | grep 5432 #查看服务是否已经正确监听5432端口

让数据库随服务器启动自启动

数据库安装好后通过pg_ctl形式运行的数据在服务器重启后就会关闭,所以我们需要配置类似Windows中的开机启动。 数据库启动的脚本路径为

/opt/postgreSQL/contrib/start-scripts/linux 其中我们需要修改linux脚本中的启动目录使其匹配我们安装的路径

[postgres] vim /opt/postgreSQL/contrib/start-scripts/linux

修改相应路径

# Installation prefix
prefix=/opt/postgreSQL
# Data directory
PGDATA="/opt/postgreSQL/data"

将修改后的文件复制到启动目录下

[root] cp /opt/postgreSQL/contrib/start-scripts/linux /etc/init.d/postgresql
[root] chkconfig --level 2345 postgresql on #设置开机启动

测试、使用数据库

由于我们的数据库安装完成后默认是只能在本机访问的,我们可以通过配置使得主机可以由远程访问

[postgres] vim /opt/postgreSQL/postgresql.conf
> listen_address="*" #由监听本地连接改为监听所有连接,并注意要将前面的“#”号去掉
$ vim /opt/postgreSQL/pg_hba.conf
> 修改IPV4地址监听,新增一条记录
host    all             all            0.0.0.0/0            md5

需要重新启动pg_ctl使上述设置生效

过程中的一些坑

  1. 在运行./configure时提示“configure: error: xxx library not found”,搜索并安装相应的包即可
[root] yum search xxx #注意选择带有devel.x86_64后缀的对应库文件进行安装
  1. python3 连接postgresql报错 linux-gnu.so: undefined symbol: PQconninfo
[root] /sbin/ldconfig /opt/postgreSQL/lib