CentOS 环境下 PostgreSQL 在线安装和源码安装详解

1、内容概述

昨天给大家简单的介绍了一下 PostgreSQL,并且在Windows系统上通过图形化界面的方式搭建好了环境,今天我们就来学习一下如何在Linux 系统上搭建 PostgreSQL环境,我会给大家介绍在线安装、离线源码安装以及Docker 安装三种方式。

2、在线安装

2.1、下载安装包

首先我们还是先下载安装包,需要注意的是我们在下载Linux版本的安装包的时候和Windows版本的有些区别,首先我们打开 官方下载链接 PostgreSQL: Downloads

我们选择 Linux 

 然后会出现一个让你选择Linux发行版系统的表单,这里需要大家根据自己的系统环境选择,本次教程我使用的CentOS,所以选择的RedHat

选择完成后会跳转到如下图所示的界面

 我们这里依然选择最新的版本,然后系统选择CentOS7,我的硬件环境是X86架构的,选择好了之后我们仔细看会生成一段命令,内容如下:

# 导入yum源
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装 PostgreSQL 服务
sudo yum install -y postgresql16-server

# 初始化默认的数据库
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
#设置PostgreSQL服务为开机启动
sudo systemctl enable postgresql-16
# 启动PostgreSQL 
sudo systemctl start postgresql-16

2.2、在线安装

我给大家简单的写了一下中文的注释,我们在我们的机器上依次执行上述命令就行了。这种方式必须要能联网(公网)。这里我们先采用在线的方式安装,后面会给大家介绍离线安装的方式

上述过程中 执行安装命令的时候我们会遇到 一个报错

提示找不到 postgresql16-server 这个软件包,这里应该我的系统版本有关,这里我们先选择15试试,选择15后 又出现了一个报错

说是我的libzstd 版本不符合要求,好吧 我们选择14的版本试试(后面我们通过编译源码安装的方式安装最新的版本) ,执行 yum install postgresql14-server  命令

好家伙,我们安装成功了。

2.3、初始化数据库

接下来我们启动服务试试,命令如下

sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

这里我们的PG服务成功的启动了。

2.4、配置远程登陆

需要注意的是在上述安装过程中会自动的创建一个postgres的用户,我们需要先切换到这个用户下

接着我们需要修改密码,首次登陆我们使用psql命令 登录到控制台

这里我将 postgres 用户的密码设置成了 postgres

 修改完成后退出 postgres 用户,我们在root用户下开放pg默认的端口

firewall-cmd --add-port=5432/tcp --permanent

firewall-cmd --reload

开放5432端口后,我们能就可以远程登陆到pg了,对了我们还需要修改一下配置文件

# 1、修改 postgresql.conf
vim /var/lib/pgsql/14/data/postgresql.conf

# 文件末尾添加
listen_addresses='*'

# 2、修改 pg_hba.conf 
vim /var/lib/pgsql/14/data/pg_hba.conf

# 添加所有ip都能访问
host    all             all             0.0.0.0/0  

# 3、重新启动pg服务
systemctl restart postgresql-14

 最后重启完成后,我们就可以远程登陆了

2.5、远程登陆测试

我们 使用本地的idea连接到pg

至此我们在Linux系统下在线安装PG的过程已经结束了,是不是感觉很麻烦,下面我给大家介绍通过docker的方式安装,我们只需要一条命令即可安装成功。

3、Docker安装

3.1、卸载postgres

为了避免各种问题 我们先把刚刚安装的 PG 卸载掉,依次输入以下命令

## 删除相关的安装文件
yum remove postgresql*

## 删除相关的目录
rm -rf /var/lib/pgsql
rm -rf /usr/pgsql-14/

## 查看是否清理干净
rpm -qa | grep postgresql

需要注意的是写在之前需要将pg服务停掉。写在完成后我们继续通过docker 的方式进行安装

3.2、Docker 安装

我们执行以下命令进行安装

docker run -d   --name postgres    -e POSTGRES_PASSWORD=123456   -p 5432:5432   -v /opt/data/postgres/data:/var/lib/postgresql/data   -d postgres

安装成功后我们可以查看下docker 进程

发现已经启起来了。

3.3、测试连接

接着我们使用 idea 连接一下试试

我们发现依然可以正常的连接上,至此两种在线安装的方式都给大家介绍完毕了

4、源码编译安装 

4.1、下载源码包

首先我们下载源码包,下载最新版本的 16.3 

wget https://ftp.postgresql.org/pub/source/v16.3/postgresql-16.3.tar.gz

接下来需要安装 postgresql 需要的依赖包 

yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake

4.2、源码编译安装

下载成功后我们可以解压源码包,并且编译pg的源码,生成可执行文件

## 解压源码包
tar -zxvf postgresql-16.3.tar.gz 

##
cd postgresql-16.3

## 生成 Makefile
./configure --prefix=/usr/local/postgresql-16.3 --without-icu

## 编译并安装
make && make install 

4.3、初始化数据库

安装完成后我们需要初始化数据库

## 创建用户和组
groupadd postgres
useradd -g postgres postgres

## 切换到postgres用户
su - postgres 
## 初始化数据库
initdb

初始化完成后 data 目录下会生成相关的配置文件

 下面我们需要修改配置文件了,我们先修改 pg_hba.conf文件


vim pg_hba.conf

## 配置局域网访问
host    all             all             0.0.0.0/0               trust

继续我们修改  vim postgresql.conf  添加以下配置

 好了,相关的配置工作已经完成了,下面我们就可以启动PG 服务了

4.4、启动服务

postgresql 的启动脚本位于源码目录的contrib/start-scripts 目录下,如下图所示

其中liux 就是Linux环境下的启动脚本,我么可以先看下内容

需要修改prefix 和PGDATE这两行配置,修改完我们就可以启动了,我们可以把这个文件复制到安装目录,并修改一下文件名

## 复制脚本到安装目录 并修改脚本名
 cp linux /usr/local/postgresql-16.3/startup-pg

## 来到安装目录
cd /usr/local/postgresql-16.3/

## 添加执行权限
chmod a+x startup-pg

## 启动服务
./startup-pg start

启动完成后 我们可以查看进程和端口

4.5、登陆测试

我们打开idea  测试登陆

这里我们发现可以正常连接,细心的你肯定发现了一个问题 我们这个postgres用户 没有设置密码,对的 postgres用户初始的时候就是没有密码的,所以我们在这里不需要输入密码也可以连接到pg服务。后面给大家介绍postgresql的用户管理的时候会给大家详细的介绍pg的用户相关的最佳实践。

 

 

 

 

 

 

 

 

 

`

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/683971.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

umijs 服务端渲染(SSR) 指南

umijs 服务端渲染(SSR) 指南 Umi 是什么? Umi,中文可发音为乌米,是可扩展的企业级前端应用框架。Umi 以路由为基础的,同时支持配置式路由和约定式路由,保证路由的功能完备,并以此进…

枚举(enum)+联合体(union)

枚举联合 一.枚举类型1.枚举类型的声明2.枚举类型的优点3.枚举类型的使用 二.联合体1.联合体类型的声明2.联合体的特点3.相同成员的结构体和联合体对比4.联合体大小的计算5.联合体的练习(判断大小端)6.联合体节省空间例题 一.枚举类型 1.枚举类型的声明…

安全U盘和普通U盘有什么区别?

安全U盘(也称为加密U盘或安全闪存驱动器)与普通U盘肯定是有一些区别的,从字面意思上来看,就能看出,安全U盘是能够保护文件数据安全性的,普通U盘没这一些功能的,可随意拷贝文件,不防盗…

Hadoop3:MapReduce源码解读之Mapper阶段的TextInputFormat切片机制(3)

Job那块的断点代码截图省略,直接进入切片逻辑 参考:Hadoop3:MapReduce源码解读之Mapper阶段的Job任务提交流程(1) 5、TextInputFormat源码解析 类的继承关系 它的内容比较少 重写了两个父类的方法 这里关心一下泛型…

《开源模型食用指南》基于Linux环境快速部署开源模型,更适合中国宝宝的部署教程

今天给大家推荐一个非常适合中国宝宝学习的专属大模型教程,也就是它《开源模型食用指南》! 当前百模大战正值火热,开源LLM层出不穷。 如今国内外已经涌现了众多优秀开源LLM,国外如LLaMA、Alpaca,国内如ChatGLM、BaiCh…

【Unity Shader入门精要 第13章】使用深度和法线纹理(一)

1. 原理 深度纹理的本质是一张RenderTexture,只不过其中记录的不是颜色值,而是一个深度值 这些深度值来自于顶点在空间变换后得到的归一化设备坐标(NDC)的Z值 由于NDC坐标的分量取值范围在[-1, 1]之间,要使颜色值能…

欧盟EDPS发布首份生成式人工智能与数据安全指南解读

6月3日,欧洲数据保护监督机构(EDPS)在其官网上发布了题为《生成式人工智能与EUDPR》的指南(注:EUDPR指的是《欧盟2018/1725号条例》),这是首份适用于欧盟机构的人工智能与数据安全指南。 01 指南…

STM32 SPI驱动读取LSM6DSRTR

提示:通过SPI驱动读取传感器数据 文章目录 前言一、LSM6DSRTR二、配置步骤1.配置SPI2.引入 LSM驱动库3.结果 总结 前言 制作一个倾角传感器,通过SPI读取LSM6DSRTR的加速度数据转换为角度,不用IIC的原因是考虑IIC通讯的协议过于繁琐&#xff…

c# iText使用

引入包 用nuget安装itext和itext.bouncy-castle-adapter包: 创建pdf string path "a.pdf"; PdfWriter writer new PdfWriter(path); PdfDocument pdfDoc new PdfDocument(writer); var docnew Document(pdfDoc); Paragraph p new Paragraph(&quo…

Java装饰器模式,装饰器模式通常通过创建一个接口和一个或多个实现了该接口的类来开始,然后创建装饰器类,这些类也实现了相同的接口

1、定义一个接口Component public interface Component { void operation(); }2、创建一个实现了Component接口的简单类SimpleComponent public class SimpleComponent implements Component { Override public void operation() { System.out.println("SimpleCom…

正大国际期货:什么是主力合约?

一个期货品种,在同一时间段,会上市多个月份的合约, 由于主力合约交易量大,流动性高,一般建议新手交易主力合约。 主力合约通常指交易集中,流动性好的合约 ,即在一段时间内交易量和持仓量最大的…

java框架树结构实现(带层级、编码、排序)

1、需求 实现一个影像资料库的功能,用树结构对资料进行分类 2、数据结构 通过id、pid表示父子关系 通过code表示层级关系 通过layer表示层级 通过sort进行排序 3、实体类 package org.jeecg.modules.image.entity;import com.baomidou.mybatisplus.annotation…

交叉编译freetype

目录 一、前言 二、交叉编译 freetype 1.交叉编译安装工具链 zlib 2.交叉编译安装工具链 libpng 3.交叉编译安装工具链 freetype 4.编译测试发现错误并解决 5.上机测试 一、前言 交叉编译常见错误解决方法可看:交叉编译中常见错误解决方法_交叉编译后fail t…

DevExpress Installed

一、What’s Installed 统一安装程序将DevExpress控件和库注册到Visual Studio中,并安装DevExpress实用工具、演示应用程序和IDE插件。 Visual Studio工具箱中的DevExpress控件 Visual Studio中的DevExpress菜单 Demo Applications 演示应用程序 Launch the Demo…

基于细节增强卷积和内容引导注意的单图像去雾

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读:DEA-Net:基于细节增强卷积和内容引导注意的单图像去雾1、研究背景2、方法提出3、相关知识3.1、DEConv3.3、多重卷积的…

Springboot+druid+多数据源

背景:早期项目是springboot2.x druid 的单数据源工程,其中使用了dblink的方式进行跨数据库访问。现在客户的机房搬迁,记账的下游数据库说是搬到不同区域,dblink的方式需要长期占用资源,需要修改成直连方式。 按照AI的…

AttenFace一个基于人脸识别的实时考勤验证系统算法研究

0 、引言 论文提出了一个使用面部识别、允许实时监控考勤的考勤系统, 可以检查由于欺骗和遗漏造成的欺诈。 论文地址:https://arxiv.org/abs/2211.07582v1 1. 概述 在大学和其他机构的课堂上,通常会进行考勤。然而,这种方式往往…

工业互联网基本概念及关键技术(295页PPT)

资料介绍: 工业互联网的核心是通过工业互联网平台把设备、生产线、工厂、供应商、产品和客户紧密地连接融合起来。这种连接能够形成跨设备、跨系统、跨厂区、跨地区的互联互通,从而提高效率,推动整个制造服务体系智能化。同时,工…

2024最新华为OD机试-C/D卷 - 在线OJ使用说明

文章目录 🪐在线 OJ 入口🎧申请OD使用权限🍓在线 OJ 的使用说明OJ主界面专题系列语言支持评测结果 🪐在线 OJ 入口 🔗 2024最新华为OD机试 - 在线OJ入 🎧申请OD使用权限 本专栏配套 OJ 的为了配合考友更高…

git: 批量删除分支

环境: window11git version 2.42.0git-bash.exe window环境下: 1. 批量删除本地 git branch |grep xxx |xargs git branch -D比如: 想批量删除本地含有 release 关键字的分支: 2. 批量删除远程 git branch -r | grep xxxx | …