这里打算安装一个15.3版本的pg单实例,将其安装到/data/postgres下
一 安装步骤
1.1 安装依赖包
yum install -y bison flex readline-devel zlib-devel
yum install -y docbook-dtds docbook-style-xsl fop libxslt
yum install -y gcc
/*
检查是否安装成功:
rpm -qa | grep -E 'bison|flex|readline-devel|zlib-devel'
rpm -qa | grep -E 'docbook-dtds|docbook-style-xsl|fop|libxslt'
rpm -qa | grep gcc
*/
1.2 下载安装包

1.3 创建用户
#创建postgres 用户
useradd postgres
#设置用户密码
passwd postgres
1.4 创建目录
mkdir -p /data/postgres/data
chown -R postgres:postgres /data/postgres/
1.5 编译安装
su - postgres
cd /data/postgres
将安装包上传至该路径下。
tar -zxvf postgresql-15.3.tar.gz
cd postgresql-15.3/
./configure --prefix=/data/postgres
make
make install
这里会将 PostereSQL安装到“/data/postgres” 目录下。
#删除安装包:
rm -rf /data/postgres/postgresql-15.3.tar.gz
1.6 修改bash_profile文件,设置 PostgreSQL 的环境变量。
vi /home/postgres/.bash_profile
新增:
export PGHOME=/data/postgres
export PGDATA=/data/postgres/data
export PGLIB=/data/postgres/lib
export PATH=$PGHOME/bin:$PATH
#使环境变量生效。
source /home/postgres/.bash_profile
1.7 初始化数据库。
cd /data/postgres/
bin/initdb -D data/
在数据库初始化成功之后,输出结果如下。
Success. You can now start the database server using:
bin/pg_ctl -D data/ -l logfile start

1.8 启动 PostgreSQL
bin/pg_ctl -D data/ -l logfile start
启动成功后输出结果如下。
waiting for server to start....done
server started
1.9 为数据库用户postgres用户设置密码
[postgres@mypgtest postgres]$ psql
psql (15.3)
Type "help" for help.
postgres=# alter user postgres with password '自定义密码';
1.10 配置pg
1.10.1 修改Postgresql.conf文件
修改listen_addresses,允许所有客户端访问。
cd /data/postgres/data
vi postgresql.conf
这里将listen_addresses改为*:
listen_addresses = '*'
1.10.2 修改pg_hba.conf
① 增加以下配置:
host all all 0.0.0.0/0 md5
② 将local的METHOD由trust改为password
默认从服务器上登陆数据库,不用输入密码,不安全,需要进行如下修改:
#local all all trust
local all all password
1.11 重启pg数据库
重启数据库,使上述配置生效
cd /data/postgres
pg_ctl -D data/ -l logfile restart
1.12 配置pg开机自启动
用root用户操作。
1.12.1 新建service文件
cd /etc/systemd/system
vi postgresql.service,新增如下内容:
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
Documentation=http://www.postgresql.org/docs/12/static/
After=network.target
[Service]
Type=forking
User=postgres
ExecStart=/data/postgres/bin/pg_ctl -D /data/postgres/data -l /data/postgres/logfile start
ExecStop=/data/postgres/bin/pg_ctl -D /data/postgres/data -l /data/postgres/logfile stop
ExecReload=/data/postgres/bin/pg_ctl -D /data/postgres/data -l /data/postgres/logfile reload
TimeoutSec=300
Restart=on-failure
[Install]
WantedBy=multi-user.target
1.12.2 加载服务
systemctl daemon-reload
1.12.3 验证用systemctl方式启动
#先关闭之前启动的数据库
su - postgres
/data/postgres/bin/pg_ctl -D /data/postgres/data -l /data/postgres/logfile stop
#验证用systemctl方式启停数据库
#用root用户启动
systemctl start postgresql
#查看是否启动成功
systemctl status postgresql
ps -ef | grep postgres
1.12.4 设置开机自启动
systemctl enable postgresql
二 安装相关插件
用postgres用户安装。
2.1 安装passwordcheck插件
pg提供的passwordcheck插件可以进行简单的密码复杂度检查。
① 安装该插件:
cd /data/postgres/postgresql-15.3/
./configure --prefix=/data/postgres
cd contrib/passwordcheck/
make
make install
② 修改配置文件 /data/postgres/data/postgresql.conf 中的参数 shared_preload_libraries。
shared_preload_libraries = 'passwordcheck'
③ 重启 PostgreSQL
用root用户重启
systemctl restart postgresql
--本篇文章参考自《PostgreSQL数据库实战派》,并做了些许改动(改动了数据目录路径)

1949

被折叠的 条评论
为什么被折叠?



