PostgreSQL 16.1 编译安装
/

PostgreSQL 16.1 编译安装

SOSO
2024-01-30 / 0 评论 / 1 阅读 / 正在检测是否收录...

一、PostgreSQL 16.1 编译安装

可用于部署泛微Ecology9
OS: RockyLinux 9.1
DB: PostgreSQL 16.1

QQ: 2219377135

1. 关闭默认防火墙 firewall

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
systemctl mask firewalld
systemctl stop firewalld
dnf remove firewalld

2.安装iptables防火墙

dnf install -y iptables-services

3.编辑iptables配置文件

vim /etc/sysconfig/iptables

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5432 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

#最后重启防火墙使配置生效
systemctl restart iptables.service 

#设置防火墙开机启动
systemctl enable iptables.service 

#重启防火墙
/usr/libexec/iptables/iptables.init restart 

4.关闭SELINUX

vim /etc/selinux/config
SELINUX=disabled 

# 使配置生效
setenforce 0

5.安装依赖包

dnf install -y uuid uuid-devel libuuid libuuid-devel 
dnf install -y tcl tcl-devel  perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake gcc* readline-devel icu libicu-devel

6. 编译PostgreSQL

# 创建目录
mkdir -p /usr/local/pgsql
mkdir -p /usr/local/pgsql/data
mkdir -p /usr/local/pgsql/log

#解压postgreSQL 16.1
tar zxf postgresql-16.1.tar.gz

#编译
cd postgresql-16.1
./configure --prefix=/usr/local/pgsql --with-openssl --with-pgport=5432 --with-tcl --with-perl --with-python --with-libxml --with-libxslt --with-ossp-uuid --with-pam --with-ldap

#gmake 含第三方插件全部编译
gmake world

#gmake 含第三方插件全部安装
gmake install-world

7.创建用户组

groupadd postgres
useradd -g postgres postgres

8.配置权限

chown -R postgres:postgres /usr/local/pgsql
chown -R postgres:postgres /usr/local/pgsql/data
chown -R postgres:postgres /usr/local/pgsql/log
chmod -R 700 /usr/local/pgsql/log

9.配置环境变量

vim /etc/profile.d/pgsql.sh
export PGHOME=/usr/local/pgsql
export PGDATA=/usr/local/pgsql/data
export PATH=$PATH:$PGHOME/bin
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
source /etc/profile.d/pgsql.sh

10.初始化数据库

# 切换到postgres用户
su - postgres

#初始化数据库
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data --encoding=UTF8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8

11.启动数据库

#启动
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start 

#停止
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile stop 

#重启
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile restart 

#查看状态
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile status 

12.配置init启动

#切换到root
su - root

#复制启动文件
cp /usr/local/src/postgresql-14.3/contrib/start-scripts/linux /etc/init.d/postgresql

#设置运行权限
chmod +x /etc/init.d/postgresql

#编辑修改
vi /etc/init.d/postgresql
prefix=/usr/local/pgsql
PGDATA="/usr/local/pgsql/data" 
PGUSER=postgres
service postgresql start
service postgresql restart
service postgresql stop
chkconfig postgresql on

13.配置systemd启动

vi /usr/lib/systemd/system/postgresql.service

[Unit]
Description=PostgreSQL Database Server
After=syslog.target
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data
ExecStop=/usr/local/pgsql/bin/pg_ctl stop
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D /usr/local/pgsql/data
TimeoutSec=300

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start postgresql
systemctl enable postgresql
systemctl restart postgresql
systemctl status postgresql

14.配置密码

#切换到postgres用户
su - postgres

#连接数据库
psql -U postgres -d postgres -hlocalhost -p5432
#参数:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口

# 修改数据库用户postgres的密码为postgres
ALTER USER postgres WITH PASSWORD 'postgres'

#退出控制台
postgres=#\q 

15.修改配置参数

vi /usr/local/pgsql/data/postgresql.conf

port = 5432
max_connections = 1000
listen_addresses = '*' 
log_destination = 'csvlog' 
logging_collector = on   
log_directory = 'log'  

log_filename = 'postgresql-%d.log'  


log_file_mode = 0600 
log_rotation_age = 1d   
log_rotation_size = 1024MB
log_truncate_on_rotation = on
log_lock_waits = off
log_statement = 'none'  

log_duration = on 
log_min_duration_statement = 0 
log_connections = off 
log_disconnections = off
log_line_prefix = '%m [%p] %u %d %r' 
log_timezone = 'Asia/Shanghai' 

16.配置数据库访问权限

vi /usr/local/pgsql/data/pg_hba.conf

# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
systemctl restart postgresql

17. 创建数据库

CREATE USER ecology WITH PASSWORD 'ecology123';
CREATE DATABASE ecology OWNER ecology;
GRANT ALL PRIVILEGES ON DATABASE ecology to ecology;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO ecology; 
0

评论 (0)

取消