postgresql 16.0 源码安装部署
-
环境准备
系统 主机名 IP地址 centos7.9 postgres 192.168.200.56 -
软件准备
postgresql-16.0.tar.gz https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz
-
依赖安装
yum -y install systemd-devel readline readline-devel zlib-devel gcc
-
创建安装用户
useradd postgres # 设置用户密码,密码设置复杂一点 echo '123456' | passwd --stdin postgres
-
源码编译安装
# 安装目录 mkdir -p /data/server/pgsql # 数据目录 mkdir -p /data/server/pgsql/data # 日志目录 mkdir -p /data/server/pgsql/logs # 解压编译安装 tar -zxvf postgresql-16.0.tar.gz cd postgresql-16.0 ./configure --prefix=/data/server/pgsql --without-icu --with-systemd make && make install # 修改目录属主、属组 chown -R postgres:postgres /data/server/pgsql # 切换到postgres用户初始化数据目录 su - postgres /data/server/pgsql/bin/initdb -D /data/server/pgsql/data
-
开机自启设置
vim /etc/systemd/system/postgresql.service
[Unit] Description=PostgreSQL 16.0 database server Documentation=man:postgres(1) After=network-online.target Wants=network-online.target [Service] Type=forking User=postgres Group=postgres OOMScoreAdjust=-1000 ExecStart=/data/server/pgsql/bin/pg_ctl start -D /data/server/pgsql/data -l /data/server/pgsql/logs/postgresql.log ExecStop=/data/server/pgsql/bin/pg_ctl stop -D /data/server/pgsql/data ExecReload=/data/server/pgsql/bin/pg_ctl reload -D /data/server/pgsql/data -l /data/server/pgsql/logs/postgresql.log TimeoutSec=0 [Install] WantedBy=multi-user.target
-
启动服务
systemctl daemon-reload systemctl enable postgresql systemctl start postgresql
-
防火墙放行端口
firewall-cmd --zone=public --permanent --add-port=5432/tcp firewall-cmd --reload
-
连接数据库
# 切换到 postgres用户 su - postgres /data/server/pgsql/bin/psql # 创建用户及密码 postgres=# create user gadmin password '123456'; # 创建指定拥有者gadmin的数据库tt postgres=# create database tt owner gadmin;
-
修改配置文件
-
postgresql.conf
# 修改监听地址,否则无法远程连接 listen_addresses = '*' port = 5432 # 修改最大连接数 max_connections = 1024
-
pg_hba.conf
# IPv4 local connections: host all all 127.0.0.1/32 trust # 增加如下一行,远程连接, # tt为数据库名,gadmin为用户名,192.168.200.0/24为允许连接的地址范围,md5使用密码验证 host tt gadmin 192.168.200.0/24 md5
-
-
重启服务
# 重启服务后就能使用gadmin账户远程连接tt数据库了 systemctl restart postgresql
-
DBeaver连接postgresql