• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Linux 编译安装PostgreSQL

武飞扬头像
之芫
帮助5

Linux 编译安装PostgreSQL

准备

安装好系统,我的是 centos stream 9

$ cat  /etc/redhat-release 
CentOS Stream release 9

创建专用用户

groupadd postgres
useradd -g postgres postgres
echo postgres | passwd --stdin postgres

防火墙和selinux按照需求关闭,我这是测试环境,索性关闭

关闭selinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
# 输入 getenforce 返回 Permissive 则是关闭状态

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
# 查看是否关闭
systemctl status firewalld.service

创建一个postgres安装目录,不建议放在 home 下,往往 home 磁盘比较小

mkdir -p /opt/pgsql
chown -R postgres:postgres /opt/pgsql

下载编译安装所需软件

yum install gcc gcc-c   readline-devel zlib-devel openssl-devel systemd-devel

编译安装

下面所有操作都是在 postgres 用户下执行

su - postgres

下载好安装包

wget https://ftp.postgresql.org/pub/source/v15.1/postgresql-15.1.tar.bz2
# 验证安装包是否完整,查看 md5 值和 sha256 值对的上就可以
md5sum postgresql-15.1.tar.bz2
sha256sum postgresql-15.1.tar.bz2
# 官方 MD5和sha256,通过浏览器直接打开链接也可以看到
curl -v https://ftp.postgresql.org/pub/source/v15.1/postgresql-15.1.tar.bz2.md5
curl -v https://ftp.postgresql.org/pub/source/v15.1/postgresql-15.1.tar.bz2.sha256

解压

tar xf postgresql-15.1.tar.bz2
cd postgresql-15.1/

编译安装

./configure --prefix=/opt/pgsql/postgresql-15.1 --with-openssl --with-zlib --with-systemd --with-readline
make
make all
make check
make install

# 创建软连接,方便日后升级
ln -sf /opt/pgsql/postgresql-15.1/ /home/postgres/pgsql

初始化并创建数据库

能够正常连接test数据的话就没有问题

# 初始化
/home/postgres/pgsql/bin/initdb -D /opt/pgsql/data
# 启动数据库
/home/postgres/pgsql/bin/pg_ctl -D /opt/pgsql/data -l /opt/pgsql/pgsql.log start
# 创建数据库 test
/home/postgres/pgsql/bin/createdb test
# 连接数据test
/home/postgres/pgsql/bin/psql test

设置PostgreSQL的环境变量

echo "export PATH=/home/postgres/pgsql/bin:$PATH" >> /home/postgres/.bashrc
echo "export LD_LIBRARY_PATH=/home/postgres/pgsql/lib" >> /home/postgres/.bashrc
source /home/postgres/.bashrc

开启远程登录

1、修改 postgresql.conf 文件: vim /opt/pgsql/data/postgresql.conf , 修改listen_addresses的值

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '*'

2、在 pg_hba.conf 文件最后添加如下内容

echo "host all all 0/0 md5" >> /opt/pgsql/data/pg_hba.conf

3、创建需要连接的数据库和用户(也可以用已存在的)

create user appuser with password 'Appuser';
create database mshing owner appuser;
grant all privileges on database mshing to appuser;

4、重启数据库

/home/postgres/pgsql/bin/pg_ctl -D /opt/pgsql/data -l /opt/pgsql/pgsql.log restart

5、测试远程连接

$ psql -h 192.168.253.128 -d mshing -U appuser
Password for user appuser: 
psql (15.1)
Type "help" for help.

mshing=> 
mshing=> exit

# --------
# 未开启远程时直接连接会报错
$ psql -h 192.168.253.128 -d mshing -U appuser
psql: error: connection to server at "192.168.253.128", port 5432 failed: 拒绝连接
        Is the server running on that host and accepting TCP/IP connections?

远程没问题后就可以愉快的使用图形化工具来玩数据库了。比如:Navicat、DataGrip,还有免费开源好用的DBeaver。

用PostgreSQL自研的pgAdmin也是非常不错的选择。

这些操作下来还是不能连接,可以注意一下防火墙、安全组之类的规则。

使用 systemd 管理服务

sudo vim  /etc/systemd/system/postgresql.service
sudo chmod 755 /etc/systemd/system/postgresql.service
sudo systemctl daemon-reload 

内容如下:

[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
User=postgres
Group=postgres
ExecStart=/home/postgres/pgsql/bin/postgres -D /opt/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
学新通

接下来就可以愉快的使用systemd来管理PostgreSQL了

systemctl start postgresql.service
systemctl restart postgresql.service
systemctl stop postgresql.service
systemctl status postgresql.service

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhcjgb
系列文章
更多 icon
同类精品
更多 icon
继续加载