一、安装环境

类型版本
操作系统CentOS 7.9
postgresql15.2

二、提前准备

2.1 下载安装包

下载地址: https://www.postgresql.org/ftp/source/ ,这里我选择的是15.2,下载文件: postgresql-15.2.tar.gz

2.2 安装依赖包

在要安装postgresql数据库的服务器上执行以下命令安装所需要的依赖包:

yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake

三、安装postgres

类型目录
PG源码解压目录/opt/postgresql-15.2
PG安装目录/opt/postgresql
PG数据目录/opt/postgresql/data

3.1 解压安装包

tar xvf postgresql-15.2.tar.gz

3.2 编译postgresql源码

cd /opt/postgresql-15.2
./configure --prefix=/opt/postgresql

安装选项解释:

选项描述
–prefix=prefix安装到prefix指向的目录;默认为/usr/local/pgsql
–bindir=dir安装应用程序到dir;默认为prefix/bin
–with-docdir=dir安装文档到dir;默认为prefix/doc
–with-pgport=port设置默认的服务器端网络连接服务TCP端口号
–with-tcl为服务端提供Tcl存储过程支持
–with-perl为服务端提供Perl存储过程支持
–with-python为服务端提供Python存储过程支持

3.3 安装

make && make install

安装完成后,进入/opt/postgresql目录可以看到安装后的postgresql的文件如下:

3.4 创建用户

groupadd postgres
useradd -g postgres postgres
id postgres

3.5 创建数据目录与修改权限

cd /opt/postgresql
mkdir data
chown postgres:postgres data

3.6 配置环境变量

su - postgres
vi .bash_profile

增加如下内容:

1
2
3
export PGHOME=/opt/postgresql
export PGDATA=/opt/postgresql/data
PATH=$PATH:$PGHOME/bin

生效

source .bash_profile

3.7 初使用化数据库

使用postgres用户,执行:

initdb

初始化成功如下:

这个时候可以看到 /opt/postgresql/data 已经有文件了。

3.8 配置服务

修改“/opt/postgresql/data”目录下两个文件

文件名描述
postgresql.conf配置PostgreSQL数据库服务器的相应的参数。
pg_hba.conf配置对数据库的访问权限。

postgresql.conf中,参数“listen_addresses”表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。

找到最下面这一行 ,这样局域网的人才能访问。红色为新添加内容。

1
2
3
# IPv4 local connections:
host all all 0.0.0.0/0 trust
host all all 127.0.0.1/32 trust

3.9 开机自启动

PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下。

linux文件即为linux系统上的启动脚本

cd /opt/postgresql-15.2/contrib/start-scripts

使用root帐号修改linux文件权限

chmod a+x linux
cp linux /etc/init.d/postgresql #复制linux文件到/etc/init.d目录下,更名为postgresql
vi /etc/init.d/postgresql

修改/etc/init.d/postgresql文件的两个变量

prefix设置为postgresql的安装路径:/opt/postgresql
PGDATA设置为postgresql的数据目录路径:/opt/postgresql/data

设置postgresql服务开机自启动

chkconfig --add postgresql

3.10 启动

service postgresql start

四、测试

4.1 切换为postgres用户,进入客户端:

psql
create user quartz password 'quartz123';
ALTER ROLE quartz SUPERUSER;
create database wno_quartz;
GRANT ALL PRIVILEGES ON DATABASE wno_quartz TO quartz;

4.2 常见问题

连接PGSQL报错column “datlastsysoid“ does not exist Line1:SELECT DISTINCT datalastsysoid FROM pg_database

出现这个问题确实是数据库管理工具不支持PG15版本的绑定,需要更换数据库软件,或降低PGSQL的版本使用。