当前位置: 首页 > ops >正文

PostgreSQL17 编译安装+相关问题解决

更新时间:2025.6.6,当前最新稳定版本17.5,演示的是17.5,最新测试版本18beta1
演示系统:debian12
很多时候,只有编译安装才能用上最新的软件版本或指定的版本。这也是编译安装的意义。

一、编译安装

(一)相关链接

链接:postgresql官网
这里可以看到目前的版本:postgresql当前可用版本

(二)下载源码并编译

以下操作默认使用root用户,如果非root用户请自行添加sudo提权
个人习惯在/usr/local目录安装软件

1.进入目录并下载源码

官方下载地址: pgsql17.5

cd /usr/local && wget https://ftp.postgresql.org/pub/source/v17.5/postgresql-17.5.tar.gz

2.解压源代码

tar -zxvf postgresql-17.5.tar.gz && cd postgresql-17.5

3.安装相关依赖

根据自己需要的增加依赖,这里的依赖是根据下面的编译参数确定的。(简单来讲,就是扩展的功能需要依赖外部已有的程序),我这里装一些常用的。
如果你的ssh客户端不支持多行,需要手动合并成一行来运行
pgsql的拓展能力很强,有很多插件可以安装,不过默认的情况下初学也是够用了。
下面的依赖还包括了postgis的依赖(最后两行,不需要可以去掉)。有一些常用插件是默认编译的,安装完成后可以直接使用简单命令就可以使用。

apt-get -y install 
build-essential
liblz4-dev lz4 bison flex
pkg-config libreadline-dev zlib1g-dev
libxml2-dev libxml2 libssh-dev
uuid-dev libossp-uuid-dev llvm clang
libgeos-dev libproj-dev libprotobuf-c-dev 
protobuf-c-compiler gdal-bin libgdal-dev xsltproc

4.编译安装

编译参数,根据自己的需要添加。
查看所有编译参数:
安装的位置不是数据存放地址,数据通常放到别的分区

./configure --help
./configure
--enable-debug
--with-lz4
--with-openssl
--with-libxml
--with-ossp-uuid
--with-llvm

如果没有报错,则提示类似下面内容:

在这里插入图片描述

编译安装

make && make install

(三)初始化数据和用户

1.创建用户

初始化pgsql不能用root账户
添加用户组

groupadd postgres

添加用户

useradd -g postgres postgres -m

2.创建数据目录

pgsql的默认数据存储目录是/var/pgsqldata

创建文件夹(我就默认的来创建)

mkdir /var/pgsqldata

转移所属权

chown postgres:postgres /var/pgsqldata

3.配置环境变量

编辑环境变量文件

vi /etc/profile

添加如下内容,并保存(pghome和pgdata的变量名不能改成别的,否则无法启动)
PGDATA这个数据地址,调成自己的数据目录(如果单机多开这个可以不不设置这次变量)

export PGHOME=/usr/local/pgsql
export PGDATA=/var/pgsqldata
PATH=$PATH:$PGHOME/bin:$PGHOME/bin

刷新环境变量

source /etc/profile

4.切换postgres用户并初始化数据库

除了这一步要用postgres用户,其他都可以用root创建
pgsql不允许用root初始化和登录,必须用创建的账号
先进入到指定目录

cd /var/pgsqldata
su postgres
initdb

如果一切顺利,可以看到下面的内容:
在这里插入图片描述

启动测试(如果不使用默认的/var/pgsqldata目录,这里把位置改为相应的)

pg_ctl -D /var/pgsqldata start

停止测试

pg_ctl -D /var/pgsqldata stop

(四)管理

切换回root用户

1.通过systemctl管理

vi /usr/lib/systemd/system/pgsql.service

内容如下(如果不是使用默认的/var/pgsqldata目录,下面的三处也要改)

[Unit]
Description=postgresql[Service]
Type=forking
Group=postgres
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -D /var/pgsqldata start
ExecReload=/usr/local/pgsql/bin/pg_ctl -D /var/pgsqldata restart
ExecStop=/usr/local/pgsql/bin/pg_ctl -D /var/pgsqldata stop[Install]
WantedBy=multi-user.target

2.启动运行

重新加载脚本

systemctl daemon-reload

启动并开机启动

systemctl start pgsql.service && systemctl enable pgsql.service

查看状态

systemctl status pgsql.service

通常是运行正常的,如果不正常,等待看看返回的是什么结果
在这里插入图片描述

3.修改配置文件

修改的是存储位置的,如果上面一步初始化不是/var/pgsqldata ,需要修改那个目录下的conf
编辑postgresql.conf

vi /var/pgsqldata/postgresql.conf

修改listen_addresses为listen_addresses = ‘*’,并取消前面的#号,允许别的机器访问
修改max_connections=1000,修改最大连接数(100太低了,当然设的太高如果性能不够也没用)

开启日志logging,方便检查错误
找到logging_collector = off ,改为logging_collector = on。
删除log_destination = 'stderr’前面的#
找到log_statement = ‘none’,删除前面的#,改为log_statement = ‘all’

编辑pg_hba.conf

vi /var/pgsqldata/pg_hba.conf

在文件最下面添加,允许外部密码登录

host all all 0.0.0.0/0 md5

4.linux进入命令行并创建密码

再次切换到postgres用户

su postgres

进入命令行(这种方法就是最基础的cli来操作数据库,通常只有极少情况会使用psql)

psql

下面操作修改密码为abc123456,根据自己的密码修改
最后的分号不能少,下面就是修改pgsql默认的postgres账号的密码(之前版本的初始密码是postgres,后面的版本就必须要重新设定密码了,我这里改为abc123456)

ALTER USER postgres WITH PASSWORD 'abc123456';

输入quit退出

5.默认账号密码

pgsql数据库
账号:postgres
密码:上面设定的abc123456
本地访问(127.0.0.1)是可以无密码的。

二、插件安装相关

1.pg_stat_statements:

链接

2.pg_trgm,rum:

链接

3.postgis :

链接

http://www.xdnf.cn/news/12346.html

相关文章:

  • spring:实例化类过程中方法执行顺序。
  • 使用 Mechanical 脚本获取联合反作用力和力矩
  • Python Day43 学习(日志Day10-11复习)
  • 简单了解以下Hugging Face(抱抱脸)
  • 负载均衡LB》》HAproxy
  • php执行系统命令的四个常用函数
  • 西北某省级联通公司:3D动环模块如何实现机房“一屏统管”?
  • [蓝桥杯]轨道炮
  • android debug包和release包的区别
  • 解决 VSCode 中无法识别 Node.js 的问题
  • Python训练营打卡DAY46
  • day 46
  • UNECE R158——解读自动驾驶相关标准法规(VRU)
  • 实践提炼,EtherNet/IP转PROFINET网关实现乳企数字化工厂增效
  • MySQL 回表、索引覆盖与查询优化
  • 5.1 HarmonyOS NEXT系统级性能调优:内核调度、I/O优化与多线程管理实战
  • 高等数学》(同济大学·第7版)第二章第一节“导数的概念“
  • 西安国际数字科创产业园:数字产业生态的开拓者
  • [Spring]-AOP
  • STM32外设问题总结
  • C/C++ 面试复习笔记(4)
  • npm install的原理
  • 传统业务对接AI-AI编程框架-Rasa的业务应用实战(5)--Rasa成型可用 rasa服务化部署及识别意图后的决策及行为
  • 企业私有化部署的平价革命:五步实现“低成本高可控”AI落地——破除百万投入迷思,中小企业也能玩转私有化大模型
  • JDBC(二) 综合案列、SQL注入问题、封装工具类、ORM
  • Windows Server 2016 域环境搭建
  • 类Transformer架构
  • 【Linux】awk 命令详解及使用示例:结构化文本数据处理工具
  • Linux LVM与磁盘配额
  • RFID推动新能源汽车零部件生产系统管理应用案例