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

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 :

链接

相关文章:

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

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

FFMPEG 提取视频中指定起始时间及结束时间的视频,给出ffmpeg 命令

以下是提取视频中指定起始时间及结束时间的 ffmpeg 命令示例: bash 复制 ffmpeg -i input.mp4 -ss 00:01:30.00 -to 00:05:00.00 -c copy output.mp4 其中,-i input.mp4 是指定要处理的输入视频文件为 “input.mp4”。 -ss 00:01:30.00 表示指定视频的起始时间为 1 分 30 …...

React 第五十六节 Router 中useSubmit的使用详解及注意事项

前言 useSubmit 是 React Router v6.4 引入的强大钩子&#xff0c;用于以编程方式提交表单数据。 它提供了对表单提交过程的精细控制&#xff0c;特别适合需要自定义提交行为或非标准表单场景的应用。 一、useSubmit 核心用途 编程式表单提交&#xff1a;不依赖 <form>…...

华为云学堂-云原生开发者认证课程列表

华为云学堂-云原生认证 云原生开发者认证的前5个课程...

Vue.js 组件:深入理解与实践

Vue.js 组件:深入理解与实践 引言 随着前端技术的不断发展,Vue.js 作为一种流行的前端框架,因其简洁、易学、高效的特点受到越来越多开发者的青睐。在Vue.js中,组件是构建用户界面的基石。本文将深入探讨Vue.js组件的概念、特性、创建方式以及在实际开发中的应用,帮助读…...

什么是强化学习:设置奖励函数最为loss, 监督学习:标签准确率作为loss

什么是强化学习:设置奖励函数最为loss, 监督学习:标签准确率作为loss 什么是强化学习:在复杂环境中自主探索,适用于序列决策 最大优势: 通过试错探索发现最优策略,适应环境动态变化,擅长解决需要长期规划和序列决策的问题。典型案例: 游戏AI(如AlphaGo/AlphaZero):…...

理解网络协议

1.查看网络配置 : ipconfig 2. ip地址 : ipv4(4字节, 32bit), ipv6, 用来标识主机的网络地址 3.端口号(0~65535) : 用来标识主机上的某个进程, 1 ~ 1024 知名端口号, 如果是服务端的话需要提供一个特定的端口号, 客户端的话是随机分配一个端口号 4.协议 : 简单来说就是接收数据…...

placeholder不显示and模板字符串无效

一、placeholder"请输入"不显示请输入&#xff1f; input框里写了placeholder为什么不显示呢&#xff1f; 检查代码&#xff0c;input是否有初始值 在 Vue.js 中&#xff0c;v-model 是双向绑定的语法糖&#xff0c;它会动态更新输入框的 value。如果绑定的数据有初…...

在MyBatis中设计SQL返回布尔值(Boolean)有几种常见方法

方案一&#xff1a;使用COUNT查询存在性&#xff08;推荐&#xff09; <select id"checkUserExists" resultType"_boolean">SELECT COUNT(*) > 0 FROM users WHERE username #{username} </select> ​​说明​​&#xff1a; MySQL中COU…...

全球知名具身智能/AI机器人实验室介绍之AI FACTORY基于慕尼黑工业大学

全球知名具身智能/AI机器人实验室介绍之AI FACTORY基于慕尼黑工业大学 TUM AI FACTORY&#xff0c;即KI.FABRIK&#xff0c;是德国慕尼黑工业大学&#xff08;TUM&#xff09;在巴伐利亚州推出的一个旗舰项目&#xff0c;旨在打造未来工厂&#xff0c;将传统工厂转变为由人工智…...

DASCTF

[DASCTF X 0psu3十一月挑战赛&#xff5c;越艰巨越狂热]EzPenetration Tip:数据库里的邮箱key已更改为管理员密码&#xff0c;拿到后可直接登录 打开靶机&#xff0c;用Wappalyzer分析网站&#xff0c;可以看到管理系统是Wordpress&#xff0c;因此可以尝试用WPSSCAN扫描公开…...

钉钉 - 机器人消息推送(签名版)

前言 在日常生活中&#xff0c;我们可能会遇到某些异常发生后需要紧急通知到群里&#xff0c;让相关人员看到紧急处理的事件触发机制。 消息群我采用的是钉钉推送&#xff0c;本文介绍了如何用php 推送钉钉机器人消息。 源码封装 <?php /*** 钉钉通知 - 签名版*/ class …...

Redux 实践与中间件应用

Redux 异步处理的挑战 Redux 核心设计是同步的、单向数据流&#xff0c;但现代应用中异步操作无处不在。Redux 中间件填补了这一缺口&#xff0c;专门解决异步流程管理、副作用隔离等复杂场景。 中间件架构原理 中间件位于 action 被发起之后、到达 reducer 之前&#xff0c…...

ModBus总线协议

一、知识点 1. 什么是Modbus协议&#xff1f; Modbus 是一种工业通信协议&#xff0c;最早由 Modicon 公司在1979年提出&#xff0c;目的是用于 PLC&#xff08;可编程逻辑控制器&#xff09;之间的数据通信。它是主从式通信&#xff0c;即一个主机&#xff08;主设备&#xf…...

【计算机网络】非阻塞IO——poll实现多路转接

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;计算机网络 &#x1f339;往期回顾&#x1f339;&#xff1a;【计算机网络】非阻塞IO——select实现多路转接 &#x1f516;流水不争&#xff0c;争的是滔滔不息 一、…...

在.NET Core控制器中获取AJAX传递的Body参数

.Net Core是支持前后端不分离式的开发的&#xff0c;如果在原始系统中采用不分离式开发&#xff0c;后面需要在原系统中增加功能&#xff0c;并且新的服务采用其他语言开发&#xff0c;且系统原来功能保持原样&#xff0c;这样前端系统可以单独调用新开发的接口。 但是&#x…...

snprintf函数用法及注意事项详解

当 format 后没有可变参数&#xff08;即 ... 为空&#xff09;时&#xff0c;va_start 的行为和后续操作如下&#xff1a; 1. va_start 的行为 va_start 的核心任务是根据最后一个固定参数&#xff08;format&#xff09;的地址&#xff0c;计算可变参数列表的起始位置。即使…...

vue-20(Vuex 状态管理的最佳实践)

Vuex 状态管理的最佳实践 Vuex 是管理大型 Vue.js 应用状态的一个强大工具&#xff0c;但其有效性取决于其组织和维护的质量。管理不善的 Vuex 存储可能会变得难以控制、难以调试&#xff0c;并成为性能瓶颈。本课程深入探讨构建 Vuex 存储的最佳实践&#xff0c;重点关注可维…...

DAX权威指南8:DAX引擎与存储优化

文章目录 十七、DAX引擎17.1 DAX 引擎的体系结构17.1.1 表格模型的双引擎架构17.1.2 存储引擎的三种模式17.1.2.1 VertiPaq引擎17.1.2.2 DirectQuery 引擎17.1.2.3 对比与最佳实践 17.1.3 数据刷新 17.2 理解 VertiPaq 存储引擎17.2.1 列式数据库17.2.2 VertiPaq 压缩17.2.2.1 …...

智慧货运飞船多维度可视化管控系统

图扑搭建智慧货运飞船可视化系统&#xff0c;借数字孪生技术&#xff0c;高精度复刻货运飞船外观、结构与运行场景。整合多维度数据&#xff0c;实时呈现飞行状态、设备参数等信息&#xff0c;助力直观洞察货运飞船运行逻辑&#xff0c;为航天运维、任务推演及决策提供数字化支…...

电脑开不了机,主板显示67码解决过程

文章目录 现象分析内存条问题BIOS设置问题其它问题 解决清理内存条金手指所需工具操作步骤注意事项 电脑在运行过程中&#xff0c;显示内存不足&#xff0c;重启电脑却无法启动。 现象 System Initialization 主板风扇是转的&#xff0c;也有灯光显示&#xff0c;插上屏幕&am…...

Spring Boot 类加载机制深度解析

Spring Boot 类加载机制深度解析 前言 在 Java 应用开发中&#xff0c;类加载机制是一个重要且复杂的话题。Spring Boot 作为现代 Java 开发的主流框架&#xff0c;其类加载机制更是值得深入了解。本文将从基础概念到实际应用&#xff0c;全面解析 Spring Boot 的类加载机制。…...

Python 训练营打卡 Day 45

TensorBoard 简单来说&#xff0c;TensorBoard 是 TensorFlow 自带的一个「可视化工具」&#xff0c;就像给机器学习模型训练过程装了一个「监控屏幕」。你可以用它直观看到训练过程中的数据变化&#xff08;比如损失值、准确率&#xff09;、模型结构、数据分布等&#xff0c…...

自托管图书搜索引擎Bookologia

简介 什么是 Bookologia &#xff1f; Bookologia 是一个专门的书籍搜索引擎&#xff0c;可以在几秒钟内找到任何书籍。它是开源的&#xff0c;可以轻松自托管在 Docker 上&#xff0c;为用户提供一个简单而高效的书籍查找体验。 主要特点 简洁的用户界面&#xff1a;界面设计…...

前端flex、grid布局

flex布局 弹性布局是指通过调整其内元素的宽高&#xff0c;从而在任何的显示设备上实现对可用显示空间最佳填充的能力。弹性容器扩展其内元素来填充可用空间&#xff0c;或将其收缩来避免溢出 简单来说&#xff0c;弹性盒子模型&#xff0c;是为了你的网页可以在不同分辨率设…...

Maven相关问题:jna版本与ES冲突 + aop失效

文章目录 1、背景2、解决3、一点思考4、环境升级导致AOP失效5、okhttp Bean找不到6、总结 记录一些Maven依赖相关的思考 1、背景 做一个监控指标收集&#xff0c;用一下jna依赖&#xff1a; <dependency><groupId>net.java.dev.jna</groupId><artifact…...

Tomcat全方位监控实施方案指南

#作者&#xff1a;程宏斌 文章目录 一&#xff0e;二进制部署1、安装包信息2、新建配置文件2.1 配置config.yaml文件2.2 上传jar包 3、修改配置3.1 备份3.2 修改bin目录下的startup.sh文件 4、重启tomcat5、访问测试 二&#xff0e;docker部署1、临时方案1.1、重新启动容器1.2…...

开源PHP在线客服系统源码搭建教程

在当今数字化时代&#xff0c;在线客服系统已成为企业与客户沟通的重要桥梁。开源PHP客服系统因其灵活性、低成本和高可定制性而受到众多企业的青睐。本文将介绍几款优秀的开源PHP客服系统&#xff0c;并提供详细的搭建教程。 演示网站&#xff1a;gofly.v1kf.com 1.1 主流开源…...

centos7升级glibic-2.28

centos7升级glibic-2.28 最近使用trae连接服务器的时候&#xff0c;提示远程系统不兼容: Trae CN需要glibc 2.28或更高版本。检测到的版本: 2.17。下面是升级步骤。centos7默认的glibc不支持node v18及以上。 1、进入/home/download目录(没有download&#xff0c;则新建一个)…...

在Docker里面运行Docker

Docker 凭借其轻量级和可移植的容器,无疑改变了软件开发和部署的世界。但如果我告诉你 Docker 本身可以在另一个 Docker 容器中运行,你会怎么想?没错!这个概念通常被称为“Docker Inside Docker”或“DinD”,它为开发人员和系统管理员开辟了一个全新的可能性领域。在这篇博…...