由于官方的源只能安装到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