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

news2024/12/27 13:15:11

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的用户相关的最佳实践。

 

 

 

 

 

 

 

 

 

`

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows文件管理器导航窗口怎么删除第三方生成的无效导航【笔记】

Windows文件管理器导航窗口怎么删除第三方生成的无效导航【笔记】 导航窗口对应项目没有右击删除选项。 提示: 位置不可用 C:\Users\superman…不可用,如果该位置位于这台电脑上,请确保设备或驱动器连接,或者光盘已插入&#xf…

Elastic 8.14:用于简化分析的 Elasticsearch 查询语言 (ES|QL) 正式发布

作者:来自 Elastic Brian Bergholm 今天,我们很高兴地宣布 Elastic 8.14 正式发布。 什么是新的? 8.14 版本最重要的标题是 ES|QL 的正式发布(GA),它是从头开始设计和专门构建的,可大大简化数据调查。在新的查询引擎的…

基于SSM+Jsp的高校二手交易平台

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

css 理解了原理,绘制三角形就简单了

1.border-位置 注意:border-bottom/up/right/left 主要是以三角形的结构搭建而成,而border也是如此。而且从边框的外围开始计算像素尺寸。在理解了这一点之后,绘制三角形就简单多了。 1.transparent 注意:该属性主要是颜色透明…

LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】

LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】 题目描述:解题思路一:贪心解题思路二:一次遍历统计1的个数,找0后累加左边的1的个数解题思路三: 题目描述: 桌子上有 n 个球,每个球的颜色…

深圳比创达EMC|EMC电磁兼容性行业:技术前沿与市场挑战

在当今高度信息化的社会,电磁兼容性(EMC)技术已成为各行各业不可或缺的一部分。随着电子设备的日益增多和复杂化,电磁环境日益复杂,电磁兼容性行业面临着前所未有的挑战和机遇。 一、EMC电磁兼容性行业的技术基础 电…

0基础学习区块链技术——分叉

区块链是一种分布式存储技术。一谈到分布式服务,就会提及CAP原则。 CAP原则是以下三个单词的首字母: Consistency(一致性):系统在执行某项操作后,仍然处于一致的状态。在分布式系统中,更新操作…

10分钟就会用的3D编辑器,帮你轻松实现Web3D交互自由!

近两年,AIGC技术可谓是在各行各业大放异彩,从AI绘画到AI写作,如今AI建模技术也悄然而至,只要输入文本就能直接AI生成3D模型。 △例:当输入“一个坐在睡莲上的蓝色箭毒蛙”这样的提示词时,对应的3D模型就会生…

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政线下预约等多场景应用支持H5+小程序+APP

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政按摩线下预约等多场景应用支持H5小程序APP 软件架构 前端:Uniapp-vue2.0 后端:Thinkphp6 前后端分离 前端支持: H5小程序双端APP(安卓苹果) 安装教程 【商业…

线性模型-分类

一、线性判别分析LDA 线性判别分析是一种经典的线性学习方法,在二分类问题上最早是Fisher提出的,亦称为Fisher判别分析。 Fisher判别分析是一种用于降维和分类的统计方法,旨在找到可以最好区分不同类别的特征。它基于类内方差和类间方差的比…

OCP 安装 OceanBase集群(企业版3.2.4.1)

创建集群 登录OCP界面 1.点击左侧工具栏中的集群 2.进入集群页面后 点击 右上角的创建集群 集群设置 进入 创建集群 页面,进行 目标集群 配置 集群种类 根据 生产环境 选择 分布式 或者 单机集中式,第一次安装 集群类型 选择 主集群。 注意&#xf…

图片格式怎么转成pdf,简单的方法

在现代数字化时代,图片格式转换成PDF已经成为许多人的日常需求。无论是为了存档、分享还是打印,将图片转换为PDF都是一项非常实用的技能。本文将详细介绍如何将图片格式转换成PDF的方法。 用浏览器打开 "轻云处理pdf官网,上传图片。 图…

HarmonyOS(32) @Link标签使用指南

Link 前言Link简介State和Link的同步场景使用示例参考资料 前言 之前写过Link的使用,最新的API有点变化,在此做个记录。 Link简介 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。。子组件变量发生变化,父组件也会随…

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable 解决步骤: 进入目录 进入/etc/sysconfig/network-scripts/, cd /etc/sysconfig/network-scripts/修改文件 vi ifcfg-ens33变更项 ONBOOTyes保存…

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第7章——连续性

第2 部分:数学分析中的基本概念 (Concepts in Analysis) 7. 连续性(Continuity) 本章首先讨论连续性的直观概念,并介绍与早期数学中常见的函数不同的函数。解释了连续性的定义,并演示了如何使用它来证明函数在一点上连续,以及证…

ABB velset 指令

VelSet 10,100;! v1000 情况下速度位1000*20% 最大速度位100 速度位 100

Unity3D测量距离实现方法(一)

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、Unity距离测量1-1 制作预制体1-2 编写测量的脚本 👉二、鼠标点击模型进行测量👉二、字体面向摄像机的方法👉二、最短距离测量方法👉三、壁纸分享…

vs code 导出插件 导入到新电脑上

1. 在 现在的电脑上 导出插件 在vscode 上执行 code --list-extensions > extensions.txt 然后项目的目录就有了一个文件 2. 将他复制到新电脑上,把文件放在项目的最外层(跟上面的目录一样) 执行命令 Get-Content extensions.txt | ForE…

快团团有货源的供货大团长如何给单个订单发货?

快团团团长给单个订单发货的步骤如下: 登录快团团商家后台:首先,你需要以团长的身份登录快团团的商家后台管理系统。 进入订单管理页面:登录后,在后台导航中找到并点击“订单管理”或类似的选项,进入订单列…

Python脚本自动填充数据和生成文档轻松办公

一,自动填充数据生成word文档 代码: from docx import Document# 创建一个新的Word文档对象 doc Document()# 添加标题 doc.add_heading(自动填充数据和生成文档, level1)# 添加段落 doc.add_paragraph(这是一个使用Python脚本自动填充数据并生成文档的…