一、目录结构
cd /root/pgsql_soft
install_pgsql.sh
pg_hba.conf
postgresql-14.1.tar.gz
postgresql.conf
postgre.sql
test.sql
二、install_pgsql.sh
#!/bin/sh
# 切换到脚本所在目录
work_space=`dirname "${BASH_SOURCE[0]}"`
cd ${work_space}
# 杀死 pg 进程
pg_id=`ps -ef | grep postgres | grep -v "grep" | awk '{print $2}'`
for id in $pg_id
do
kill -9 $id
echo "killed $id"
done
# 软件目录
upload_path=/root/pgsql_soft
# 解压
tar -zxvf $upload_path/postgresql-14.1.tar.gz
# 编译安装
cd postgresql-14.1/
./configure --prefix=/usr/local/postgresql
make && make install
# 创建数据存放路径
cd $upload_path
rm -fr ./postgresql-14.1
mkdir /u01/pgsql
mkdir /u01/pgsql/data
mkdir /u01/pgsql/log
# 创建用户并授权
useradd postgres
chown -R postgres:postgres /usr/local/postgresql
chown -R postgres:postgres /u01/pgsql
# 初始化数据库
su - postgres -c "/usr/local/postgresql/bin/initdb -D /u01/pgsql/data/"
# 启动服务并修改管理员庄户密码,创建用户
su - postgres -c "/usr/local/postgresql/bin/pg_ctl start -l /u01/pgsql/log/pg_server.log -D /u01/pgsql/data/"
su - postgres -c "/usr/local/postgresql/bin/psql -h 127.0.0.1 -p 5432 -U postgres -f $upload_path/postgre.sql"
su - postgres -c "/usr/local/postgresql/bin/pg_ctl stop -D /u01/pgsql/data/"
# 覆盖配置文件
cp -f $upload_path/postgresql.conf /u01/pgsql/data/
cp -f $upload_path/pg_hba.conf /u01/pgsql/data/
# 导入数据
su - postgres -c "/usr/local/postgresql/bin/pg_ctl start -l /u01/pgsql/log/pg_server.log -D /u01/pgsql/data/"
su - postgres -c "export PGPASSWORD=123456;/usr/local/postgresql/bin/psql -h 127.0.0.1 -p 5432 -U cnbai -d test -f $upload_path/test.sql"
三、pg_hba.conf
... ...
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host all all 0.0.0.0/0 md5
... ...
四、postgresql.conf
... ...
data_directory = '/u01/pgsql/data/'
listen_addresses = '*'
... ...
五、postgre.sql
alter user postgres with password '123456';
create user cnbai with password '123456';
create database test owner cnbai;
六、test.sql
create schema test;
... ...
七、问题及解决
执行 ./configure --prefix=/usr/local/postgresql
命令时有可能会报错
configure: error: readline library not found
两种解决方案
yum -y install -y readline-devel
or
# 官方不推荐 , 无法安装时使用
./configure --prefix=/usr/local/postgresql --without-readline
若显示权限不足,需检查是否将安装文件或解压目录放在 /root/
目录下,postgres 用户执行无法访问此目录