Ubuntu 22 安装 postgresql-17.4
1. 安装编译依赖
首先安装编译 PostgreSQL 所需的依赖包:sudo apt updatesudo apt install -y build-essential libreadline-dev zlib1g-dev flex bison libxml2-dev
libssl-dev libxslt-dev libsystemd-dev libpq-dev uuid-dev
2. 下载并解压源码包
# 解压源码包
tar -zxvf postgresql-17.4.tar.gz
cd postgresql-17.4
3. 配置编译参数
使用configure
脚本配置编译选项(可根据需求调整,以下为常用配置):
sudo apt install -y build-essential libreadline-dev zlib1g-dev flex bison libxml2-dev libssl-dev libxslt-dev libsystemd-dev libpq-dev uuid-dev--prefix= # 安装路径--with-systemd # 支持systemd服务管理--with-openssl # 启用SSL支持--with-libxml # 启用XML支持--with-libxslt # 启用XSLT支持--enable-thread-safety # 启用线程安全
4. 编译并安装
# 编译(-j参数指定CPU核心数加速编译,如-j10)
make -j10# 安装(需要root权限)
sudo make install
5. 创建专用用户和数据目录
# 创建postgres用户和组
sudo groupadd postgres
sudo useradd -g postgres postgres# 创建数据目录并授权
sudo mkdir -p /home/frank/proTools/postgresql-17/datasudo chmod o+x /home/frank/proTools
sudo chmod o+x /home/frank/proTools/postgresql-17
sudo chmod o+x /home/frank/proTools/postgresql-17/bin
sudo chown -R postgres:postgres /home/frank/proTools/postgresql-17
6. 初始化数据库集群
# 切换到postgres用户执行初始化
sudo -u postgres /bin/bash
# 初始化数据库(指定数据目录)
/home/frank/proTools/postgresql-17/bin/initdb -D /home/frank/proTools/postgresql-17/data
# 退出postgres用户
exit
7. 配置系统服务(systemd)
sudo nano /etc/systemd/system/postgresql-17.service
[Unit]
Description=PostgreSQL 17 database server
After=network.target[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGDATA=/home/frank/proTools/postgresql-17/data
ExecStart=/home/frank/proTools/postgresql-17/bin/pg_ctl start -D ${PGDATA} -l /var/log/postgresql/postgres.log
ExecStop=/home/frank/proTools/postgresql-17/bin/pg_ctl stop -D ${PGDATA}
ExecReload=/home/frank/proTools/postgresql-17/bin/pg_ctl reload -D ${PGDATA}
Restart=on-failure[Install]
WantedBy=multi-user.target
保存退出:Ctrl+O → 回车 → Ctrl+X。
创建日志目录并授权:
sudo mkdir -p /var/log/postgresql
sudo chown -R postgres:postgres /var/log/postgresql
添加到path
export PATH=$PATH:/home/frank/proTools/postgresql-17/bin
8. 启动服务并验证
# 重载systemd配置
sudo systemctl daemon-reload# 启动服务
sudo systemctl start postgresql-17# 设置开机自启
sudo systemctl enable postgresql-17# 检查服务状态
sudo systemctl status postgresql-17# 验证版本
/home/frank/proTools/postgresql-17/bin/psql --version
9. 基本使用
# 登录PostgreSQL(切换到postgres用户)
sudo -u postgres /home/frank/proTools/postgresql-17/bin/psql# 设置postgres用户密码
ALTER USER postgres WITH PASSWORD 'your_password';# 退出psql
\q
10 允许 PostgreSQL 远程连接(修改配置)
vim /home/frank/proTools/postgresql-17/data/postgresql.conf 添加下面配置
listen_addresses = '*' # 允许所有IP访问(也可指定具体IP)vim /home/frank/proTools/postgresql-17/data/pg_hba.conf 添加下面配置
host all all 0.0.0.0/0 md5
sudo ufw allow 5432
sudo systemctl restart postgresql-17
11 使用客户端连接