1,下载地址
2,安装编译安装依赖包
yum -y install zlib-devel readline-devel gcc
3, 将下载的tgz包,上传到服务器,并解压
tar -zxvf postgresql-14.1.tar.gz
4, 进入解压包,执行编译安装, 并初始化数据库实例
cd postgresql-14.1
./configure
make
make install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data/
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/ #初始化数据库实例
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l logfile start #启动数据库实例,logfile是相对路径
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l logfile status #查看数据库实例启动状况
5, 将postgresql设置为系统服务
root 用户下
vim /usr/lib/systemd/system/postgresql.service
[Unit]
#描述
Description=postgresql
#在此服务启动后才启动,这里可以不写
After=network.target
[Service]
#服务的类型,常用的有 simple(默认类型) 和 forking。默认的 simple 类型可以适应于绝大多数的场景,因此一般可以忽略这个参数的配置。
#而如果服务程序启动后会通过 fork 系统调用创建子进程,然后关闭应用程序本身进程的情况,则应该将 Type 的值设置为 forking,
#否则 systemd 将不会跟踪子进程的行为,而认为服务已经退出。 pg需要通过fork来创建一些子进程,所以这里选择forKing
Type=forking
User=postgres
Group=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /home/postgres/logfile start
ExecStop=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /home/postgres/logfile stop
ExecReload=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /home/postgres/logfile restart
#是否给服务分配独立的临时空间(true/false),要给的
#PrivateTmp=true
#TimeoutSec=300
#Restart=always
#RestartSec=5
[Install]
#和前面的 Wants 作用相似,只是后面列出的不是服务所依赖的模块,而是依赖当前服务的模块。
#“WantedBy=multi-user.target” 表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
#当然还需要 systemctl enable 激活这个服务以后自动运行才会生效
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start postgresql
[root@localhost postgresql-14.1]# systemctl status postgresql
● postgresql.service - postgresql
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
Active: active (running) since 二 2022-01-18 17:54:10 CST; 5s ago
Process: 15916 ExecStart=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /home/postgres/logfile start (code=exited, status=0/SUCCESS)
Main PID: 15918 (postgres)
CGroup: /system.slice/postgresql.service
├─15918 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
├─15920 postgres: checkpointer
├─15921 postgres: background writer
├─15922 postgres: walwriter
├─15923 postgres: autovacuum launcher
├─15924 postgres: stats collector
└─15925 postgres: logical replication launcher
1月 18 17:54:10 localhost.localdomain systemd[1]: Starting postgresql...
1月 18 17:54:10 localhost.localdomain pg_ctl[15916]: pg_ctl: another server might be running; trying to start server anyway
1月 18 17:54:10 localhost.localdomain systemd[1]: Started postgresql.
6,修改配置文件
6-1 postgresql 访问控制的配置文件
vim /usr/local/pgsql/data/pg_hba.conf
IPv4 local connections:
host all all 192.168.11.125/24 trust
6-2 修改监听地址以及监听ip
vim /usr/local/pgsql/data/postgresql.conf
listen_addresses = '*' # what IP address(es) to listen on;
# defaults to 'localhost'; use '*' for all
port = 5432 # (change requires restart)
重启服务即可,systemctl restart postgresql