ubuntu18源码安装postgresql15.2数据库

由于官方的源只能安装到pg10这个版本,整了好一会没有成功就改为源码安装了。

下载源代码源码并解压

 wget https://ftp.postgresql.org/pub/source/v15.2/postgresql-15.2.tar.gz
 tar -xf  postgresql-15.2.tar.gz 
 cd postgresql-15.2/ 

安装C++相关开发库和编译工具

 apt install make gcc tar pkg-config libicu-dev libreadline-dev zlib1g-dev -y

开始编译

设置pg编译后的二进制包存放目录为/opt/postgresql-15.2

sudo ./configure --prefix=/opt/postgresql-15.2
make
make install

执行./configure 和make 需要几分钟时间。执行完成后 如果没有报错则表示编译源码完成。接下来进入二进制包目录中,创建data logs目录 用于存放数据和日志,

cd /opt/postgresql-15.2
#用于存放数据和日志,
mkdir {data,logs}
#授权给postgres账户 如果还没有postgres账号需要创建
groupadd postgres
useradd -g postgres postgres
chown -R postgres:postgres /opt/postgresql-15.2

此目录也可以打包成tar.gz压缩包供以后再次安装使用,就不需要再去重新编译了。

初始化数据库和启动数据库

开始之前先切换至postgres账户su postgres

#切换账号
su postgres
#进入安装目录
cd /opt/postgresql-15.2
#初始化数据库 这一步如果成功了 会打印启动数据库的命令。如果没有就是失败了
bin/initdb -D /opt/postgresql-15.2/data
#使用pg_ctl启动数据库
bin/pg_ctl -D /opt/postgresql-15.2/data -l /opt/postgresql-15.2/postgresql.log start
#可以创建一个test数据库试一下 这一步可以不操作
bin/createdb test

常用配置

pg的配置文件默认存放在数据库中。常用的配置文件有:
1、postgresql.conf 主要是数据库服务器的全局配置
2、pg_hba.conf 客户端认证规则,配置了哪些用户和哪些IP地址可以连接到数据库服务器。

配置运行远程访问
  • data/postgresql.conf文件
    listen_addresses = ' * ' #改为*表示监听任意网卡的端口 默认为localhost
  • data/pg_hba.conf文件
    host all all 0.0.0.0/0 trust #新写入一条规则 允许所有IP 所有数据库访问
配置账号密码

输入psql命令行 默认使用postgres账户进入数据库

#修改postgres密码
ALTER USER postgres WITH PASSWORD 'postgres'; 
#登录数据库
psql 

制作系统systemd服务

使用systemd服务主要是方便pg数据库的启动和停止 方便交给systemd去管理,也能设置开机自启动。
开始之前先停止上面手动启动的数据库。因为要基于systemd服务启动。

bin/pg_ctl -D /opt/postgresql-15.2/data -l /opt/postgresql-15.2/postgresql.log stop

创建文件 vim /etc/systemd/system/postgresql.service

[Unit]
Description=PostgreSQL
After=network-online.target

[Service]
Type=forking
WorkingDirectory=/opt/postgresql-15.2/bin
User=postgres
ExecStart=/opt/postgresql-15.2/bin/pg_ctl -D /opt/postgresql-15.2/data -l /opt/postgresql-15.2/logs/postgresql.log start
ExecStop=/opt/postgresql-15.2/bin/pg_ctl -D /opt/postgresql-15.2/data stop
Restart=always
RestartSec=40s
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=postgresql
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 设置开机启动
    systemctl enable postgresql
  • 启动数据库
    systemctl start postgresql
  • 查看数据库状态
    systemctl status postgresql
  • 停止数据库
    systemctl stop postgresql
posted @ 2024-04-27 18:13  peachyy  阅读(96)  评论(0编辑  收藏  举报