PostgreSQL16源码包编译安装

一、安装环境

操作系统:CentOS Linux release 7.8.2003 (Core)
PostgreSQL版本:16
服务器IP地址:192.168.0.244
Firewalld关闭、selinux关闭
笔者本次选用最新v16版本进行部署

二、pg数据库安装包下载

下载地址:https://www.postgresql.org/ftp/source/

有些小伙伴下载困难,可以直接去百度网盘下载链接
链接:https://pan.baidu.com/s/1CMXDD9nuqRXmaYJ3zyQuJQ?pwd=ovqx
提取码:ovqx
在这里插入图片描述

三、安装依赖包

执行以下命令安装所需依赖包:

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

四、安装postgreSQL

1)、在根目录下新建pgsql文件夹,并将pgsql的压缩包放入里边。
# 笔者在这里把文件夹创建到root下了,建议创建到根目录
mkdir /pgsql
[root@bogon pgsql]# ls
postgresql-16.0  postgresql-16.0.tar.gz
[root@bogon pgsql]# pwd
/root/pgsql
2)、解压压缩包
tar -zxvf postgresql-16.0.tar.gz
3)、进入加压后的文件夹
[root@bogon ~]# cd pgsql/postgresql-16.0
[root@bogon postgresql-16.0]# ls
aclocal.m4  config.log     configure     contrib    doc          GNUmakefile.in  INSTALL   meson.build        README
config      config.status  configure.ac  COPYRIGHT  GNUmakefile  HISTORY         Makefile  meson_options.txt  src
4、编译postgresql源码
./configure --prefix=/pgsql/postgresql --without-icu

注意:笔者在这里碰到编译报错,由于版本比较新也没有查到相关处理方法,索性就按照提示操作,禁用icu模块支持。–without-icu
在这里插入图片描述

选项描述
–prefix=prefix安装到prefix指定目录;默认为/usr/local/pgsql
–bindir=dir安装应用程序到dir;默认为prefix/bin
–with-docdir=dir安装文档到dir;默认为prefix/doc
–with-pgport=port设置默认服务端网络连接服务TCP端口号
–with-tcl服务端提供Tcl存储过程支持
–with-perl服务端提供perl存储过程支持
–with-python服务端提供Python存储过程支持
5、编译安装
root@bogon postgresql-16.0]# make && make install
编译安装结束没有报错证明安装成功;至此已完成postgresql的安装。进入/pgsql/postgresql目录可以看到安装后的postgresql文件。
[root@bogon postgresql-16.0]# cd /pgsql/postgresql/
[root@bogon postgresql]# ls
bin  include  lib  share

五、创建用户组postgre并创建用户postgre

[root@bogon postgresql]# groupadd postgres
[root@bogon postgresql]# useradd -g postgres postgres
[root@bogon postgresql]# id postgres
uid=1001(postgres) gid=1001(postgres) groups=1001(postgres)

六、创建postgresql数据库的数据主目录并修改文件所有者

数据库主目录可根据实际情况而创建,这里我们把主目录放在

/pgsql/postgresql/data/目录下:
[root@bogon postgresql]# mkdir data
[root@bogon postgresql]# chown postgres:postgres data
[root@bogon postgresql]# ls -al
total 16
drwxr-xr-x 7 root     root       68 Sep 19 16:23 .
drwxr-xr-x 3 root     root       24 Sep 19 16:20 ..
drwxr-xr-x 2 root     root     4096 Sep 19 16:20 bin
drwxr-xr-x 2 postgres postgres    6 Sep 19 16:23 data
drwxr-xr-x 6 root     root     4096 Sep 19 16:20 include
drwxr-xr-x 4 root     root     4096 Sep 19 16:20 lib
drwxr-xr-x 6 root     root     4096 Sep 19 16:20 share

七、配置环境变量

进入home/postgre目录可以看到.bash_profile文件。
编辑修改.bash_profile文件。
[root@bogon postgres]# vi .bash_profile # .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programsPATH=$PATH:$HOME/.local/bin:$HOME/binexport PGHOME=/pgsql/postgresql
export PGDATA=/pgsql/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin
export PATH
~        在.bash_profile文件中新增加内容如下:
export PGHOME=/pgsql/postgresql
export PGDATA=/pgsql/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin

编辑修改.bash_profile文件然后保存。执行以下命令,使环境变量生效
[root@bogon postgres]# source .bash_profile

八、切换到postgre用户,并使用initdb初始化数据库

[root@bogon postgres]# su - postgres
[postgres@bogon ~]$ initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /pgsql/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
initdb: warning: enabling "trust" authentication for local connections
initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
pg_ctl -D /pgsql/postgresql/data -l logfile start

可以看到/pgsql/postgresql/data

[root@bogon opt]# cd /pgsql/postgresql/
[root@bogon postgresql]# ls
bin  data  include  lib  share
[root@bogon postgresql]# cd data/
[root@bogon data]# ls
base    pg_commit_ts  pg_hba.conf    pg_logical    pg_notify    pg_serial     pg_stat      pg_subtrans  pg_twophase  pg_wal   postgresql.auto.conf
global  pg_dynshmem   pg_ident.conf  pg_multixact  pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION   pg_xact  postgresql.conf

九、配置服务

修改/pgsql/postgresql/data/目录下的两个问价
Postgresql.conf 配置postgreSQL数据库服务的相应参数
pg_hba.conf  配置对数据库的访问权限
listen_addresses = '*'      # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432               # (change requires restart)
max_connections = 100                   # (change requires resta

其中,参数“listen_addresses”表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的IP地址上监听,只接受来自本机的localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#号去掉,把这个地址改为*,表示在本地的所有地址上监听。

[root@bogon data]# vim pg_hba.conf
找到最下面这一行,这样局域网的人才能访问,红色为新添加内容。
# IPv4 local connections:
host    all      all             0.0.0.0/0               trust
host    all     all             127.0.0.1/32            trust
``
pg_hba.conf文件新增内容如下:
host    all      all             0.0.0.0/0               trust

十、设置postgresql开机自启动

PostgreSQL的开机自启动脚本位于postgreSQL源码目录的contrib/start-scripts路径下。
Linux文件即为Linux系统上的启动脚本

[root@bogon start-scripts]# pwd
/root/pgsql/postgresql-16.0/contrib/start-scripts
[root@bogon start-scripts]# ls
freebsd  linux  macos
1)	切换为root用户,修改Linux文件属性,添加X属性
[root@bogon start-scripts]# chmod a+x linux
2)	复制Linux文件到/etc/init.d目录下,更名为postgresql
[root@bogon start-scripts]# cp linux /etc/init.d/postgresql
3)	修改/etc/init.d/postgresql文件的两个变量
Prefix设置为postgresql的安装路径:/pgsql/postgresql
PGDATA设置为postgresql的数据目录路径:"/pgsql/postgresql/data"
4)	设置postgresql服务开启自启动
[root@bogon start-scripts]# chkconfig --add postgresql
查看开机自启服务设置成功
[root@bogon start-scripts]# chkconfig 
postgresql     	0:off	1:off	2:on	3:on	4:on	5:on	6:off
5)执行service postgresql start,启动postgreSQL服务
[root@bogon start-scripts]# service postgresql start
Starting PostgreSQL: ok
查看postgresql服务监听
[root@bogon start-scripts]# ps -elf |grep postgres
4 S root      17527   7286  0  80   0 - 47969 do_wai 16:26 pts/0    00:00:00 su - postgres
4 S postgres  17528  17527  0  80   0 - 28886 n_tty_ 16:26 pts/0    00:00:00 -bash
0 S postgres  17653      1  0  80   0 - 68572 ep_pol 16:35 ?        00:00:00 /pgsql/postgresql/bin/postgres -D /pgsql/postgresql/data
1 S postgres  17654  17653  0  80   0 - 68607 ep_pol 16:35 ?        00:00:00 postgres: checkpointer 
1 S postgres  17655  17653  0  80   0 - 68605 ep_pol 16:35 ?        00:00:00 postgres: background writer 
1 S postgres  17657  17653  0  80   0 - 68605 ep_pol 16:35 ?        00:00:00 postgres: walwriter 
1 S postgres  17658  17653  0  80   0 - 68974 ep_pol 16:35 ?        00:00:00 postgres: autovacuum launcher 
1 S postgres  17659  17653  0  80   0 - 68969 ep_pol 16:35 ?        00:00:00 postgres: logical replication launcher 
0 S root      17663  17574  0  80   0 - 28202 pipe_w 16:36 pts/1    00:00:00 grep --color=auto postgres

十一、开始测试

[root@bogon postgres]# su – postgres
[postgres@bogon ~]$ psql

1. 创建数据库用户
2. 赋予账号权限
3. 新建数据库
4. 退出

postgres=# create user pg password 'pg';
CREATE ROLE
postgres=# ALTER ROLE pg SUPERUSER;
ALTER ROLE
postgres=# create database pg;
CREATE DATABASE
postgres=# \q
  1. 重新登陆数据库
  2. 输入密码
  3. 显示数据库
[postgres@bogon ~]$ psql -U pg -d pg -h 192.168.0.244
pg=# \lList of databasesName    |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    | ICU Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+----- 

在这里插入图片描述
至此数据库安装成功。
参考大佬链接:
https://blog.csdn.net/weixin_43230682/article/details/108403642

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是IoT数字孪生?

数字孪生是资产或系统的实时虚拟模型,它使用来自连接的物联网传感器的数据来创建数字表示。数字孪生允许您从任何地方实时监控设备、资产或流程。数字孪生用于多种目的,例如分析性能、监控问题或在实施之前运行测试。从物联网数字孪生中获得的见解使用户…

操作系统备考学习 day3 (2.1.1 - 2.1.6)

操作系统备考学习 day3 二、进程与线程2.1 进程与线程2.1.1 进程的概念和特征2.1.2 进程的状态与转换2.1.3 进程的组织2.1.4 进程控制2.1.5 进程间通信(IPC)2.1.6 线程和多线程模型 二、进程与线程 2.1 进程与线程 2.1.1 进程的概念和特征 进程&#…

怎样获取某个文件的public方法个数

背景:idea 提供的list可以查看所有的构造方法,但是无法直接告诉我准确的数目,于是写了以下一个单独的类 import java.lang.reflect.Method; import java.lang.reflect.Modifier;public class MyPublicMethodCounter {public static void mai…

flink集群与资源@k8s源码分析-集群

0 介绍 本文是flink集群与资源@k8s源码分析系列的第二篇-集群 1 场景 下面详细分析各用例 2 启动k8s集群 k8s集群支持session和application模式,job模式将会被废弃,本文分析session模式集群 Configuration作为配置容器,几乎所有的构建需要从配置类获取配置项,这里不显示…

算法通关村第14关【黄金】| 数据流的中位数

思路:使用一个小根堆一个大根堆来找中位数 小根堆保存较大的一半数字,大根堆保存较小的一半数字 奇数queMin的队头即为中位数,偶数queMin和queMax队头相加/2为中位数 初始状态: queMin: [] queMax: [] 添加数字 1: …

java面试题基础第七天

一、java面试题第七天 1.throw和throws的区别? throw: 用于抛出一个异常对象throws:写在方法体上面,将方法体里面的异常,抛给上层 2. 通过故事讲清楚NIO 下面通过一个例子来讲解下。 假设某银行只有10个职员。该银…

stm32学习-芯片系列/选型

【03】STM32HAL库开发-初识STM32 | STM概念、芯片分类、命名规则、选型 | STM32原理图设计、看数据手册、最小系统的组成 、STM32IO分配_小浪宝宝的博客-CSDN博客  STM32:ST是意法半导体,M是MCU/MPU,32是32位。  ST累计推出了&#xff1a…

buuctf web [极客大挑战 2019]LoveSQL

又是这样的界面,这糟糕的熟悉感,依旧使用上题套路 用户名: admin or 11# 密码: 1 有一串很像flag的字符,但是很可惜,这不是flag 看了一眼源代码,没有可以跳转的页面 要换个思路了&#xff0c…

(二十九)大数据实战——kafka集群节点服役与退役案例实战

前言 本节内容是关于kafka集群节点的服役与退役,从而实现kafka集群的缩容与扩容。在开始本节内容之前,我们要预先安装好kafka集群,并准备一台空余的服务器用来完成我们扩容与缩容的案例。关于kafka集群的安装内容这里不在赘述,相…

Python Web 开发常见的100个问题.pdf

Python被广泛认为是一种容易学习和上手的编程语言,因此对于初学者和有经验的开发者都非常友好。这一特点使得Python成为了许多开发者入门Web开发的首选语言。 在Python Web开发中,开发者们通常会遇到各种各样的问题和挑战。现在我们为大家准备了学习路线…

PostgreSQL快速入门 与MySQL语法比较

开篇 本文可帮助具有MySQL基础的小伙伴对PostgreSQL做一个快速的入门,通过语法之间的差异对比,降低学习成本,同样都是数据库,正所谓触类旁通。 模式的概念 模式(Schema)表示数据库中的逻辑容器&#xff…

HTML 知识扫盲

写在前面 HTML 是一门超文本标记语言,不管你听没听说过 HTML,但在网上冲浪的途中你无时不刻都在与它接触,他遍布在每个你看得到的互联网的角落。其实对于笔者而言,我已经断断续续地学习过这门语言,经过时间的磋磨&…

docker学习1-基本概念

Docker jar包环境镜像,镜像存在docker仓库中,随用随取,无需现配环境 docker通过隔离机制,各个镜像之间互不干扰 docker比vm轻量化,每次只需运行镜像即可,镜像占内存小启动快,虚拟机启动慢&…

typeof的作用

typeof 是 JavaScript 中的一种运算符,用于获取给定值的数据类型。 它的作用是返回一个字符串,表示目标值的数据类型。通过使用 typeof 运算符,我们可以在运行时确定一个值的类型,从而进行相应的处理或逻辑判断。 常见的数据类型…

Java————List

一 、顺序表和链表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构, 常见的线性表:顺序表、链表、栈、队列… 线性表在逻辑上是线性结构,也就说是连续的一条直…

ABeam Team Building |「TDC Green Day——夏日Go Green·畅享山海间 环保公益行动」回顾

夏日Go Green畅享山海间 GO!ABeam 夏日Go Green畅享山海间 夏末初秋时节,大连办公室的员工们来到了海滨的望渔山&逃之夭夭海滩,开启了主题为「夏日Go Green畅享山海间」的Team Building之旅。 本次的活动契合了大连办公室作为绿色办公(…

Android Jetpack Compose之状态持久化与恢复

目录 1.概述2.实例解析4. Compose提供的MapSaver和ListSaver4.1 mapServer4.2 ListSaver 1.概述 在之前的文章中,我们提到了remember,我们都知道remember可以缓存创建状态,避免因为重组而丢失。使用remember缓存的状态虽然可以跨越重组&…

打造生产级Llama大模型服务

对于任何想要尝试人工智能或本地LLM,又不想因为意外的云账单或 API 费用而感到震惊的人,我可以告诉你我自己的旅程是如何的,以及如何开始使用廉价的消费级硬件执行Llama2 推理 。 这个项目一直在以非常活跃的速度发展,这使得它非…

Call短路触发版本SIP对讲求助终端

SV-2701VP Call短路触发版本SIP对讲求助终端 一、描述 SV-2701VP是我司的一款壁挂式求助对讲终端,具有10/100M以太网接口,支持G.711与G.722音频解码,其接收SIP网络的音频数据,实时解码播放。配置一路线路输入,一路线…

《动手学深度学习 Pytorch版》 7.1 深度卷积神经网络(LeNet)

7.1.1 学习表征 深度卷积神经网络的突破出现在2012年。突破可归因于以下两个关键因素: 缺少的成分:数据 数据集紧缺的情况在 2010 年前后兴起的大数据浪潮中得到改善。ImageNet 挑战赛中,ImageNet数据集由斯坦福大学教授李飞飞小组的研究人…