PostgreSql-Install

PostgreSql源码安装

  • 一、源代码下载
  • 二、操作系统配置
  • 三、编译安装
  • 四、启动数据库
  • 五、相关命令

PostgreSQL是一个强大的 开源对象关系数据库系统,它使用并扩展了SQL语言,并结合了许多功能,可以安全地存储和扩展最复杂的数据工作负载。

一、源代码下载

  1. PostgreSql官方网址,进入Download页面,此处选择的是下边的File Browser(文件浏览)进入下载页面后选择Source进行源码选择对应版本进行下载。[此处选择v14.9版本]
    在这里插入图片描述

    此处选择 bz2 or gz 为后缀的安装包进行下载,任选一个即可[此处选择gz压缩包]

  2. 下载到本地操作系统的任意位置,之后使用SFTP上传到Linux服务器即可。
    在这里插入图片描述

二、操作系统配置

  1. 管理用户的创建
    root根用户权限较大,不适合管理数据库,此处建议非root用户管理数据库,因此可以创建单独用户和组进行区分管理。
groupadd postgres 添加组
useradd -g postgres postgres  创建用户并划分组
passwd postgres 设置用户密码
  1. 安装依赖包
yum groupinstall -y "Development Tools" "Legacy UNIX Compatibility"

在这里插入图片描述

groupinstall: yum 命令,用于安装指定的软件包组。

“Development Tools”: 软件包组名称,通常包含软件开发的工具和库,比如编译器、调试器等。

“Legacy UNIX Compatibility”: 软件包组的名称,包含用于提供与传统 UNIX 系统兼容性的工具和库。

yum install -y bison flex readline* zlib-devel gcc* gmake

此处安装依赖可能会报错,原因是镜像中找不到对应的依赖,我这里把原来的各种国内源镜像替换回默认国外镜像后执行yum clean all & yum makecache后重新安装就没问题了。
在这里插入图片描述

  1. 创建软件安装目录和数据存储目录
mkdir -p /usr/local/pg12
mkdir -p /pgdata/12/data
chown -R postgres. /pgdata
chown -R postgres. /usr/local/pg12
chmod 700 /pgdata/12/data -R

此处的postgres对应的是用户名,文件夹无法创建的可以使用root用户权限sudo进行创建。

在这里插入图片描述
4. 操作系统参数设置

说在前边,个人使用时可以不必设置这些参数。

pg和oracle类似需要调一些内核参数,因为是多进程,对于内核参数的要求较多;

sudo vim /etc/sysctl.conf kernel.shmmax = 68719476736 共享内存段的最大值,单位是字节。 64GB
kernel.shmall = 4294967296 系统中所有共享内存段的总共享内存页数 大约是 16TB
kernel.shmmni = 4096 系统中最大的共享内存段数目。
kernel.sem = 50100 64128000 50100 1280 信号量的值,格式为 semmsl semmns semopm semmni
fs.file-max = 7672460 系统中最大文件句柄数。
net.ipv4.ip_local_port_range = 9000 65000 系统分配给本地 TCP/UDP 端口的范围。
net.core.rmem_default = 1048576 接收套接字缓冲区的默认大小。
net.core.rmem_max = 4194304 接收套接字缓冲区的最大大小。
net.core.wmem_default = 262144 发送套接字缓冲区的默认大小。
net.core.wmem_max = 1048576 发送套接字缓冲区的最大大小。

在这里插入图片描述

这些参数可以根据实际情况进行修改!

限制参数修改:

该文件用于设置用户的资源限制。在这里,针对所有用户设置了文件描述符数量、进程数量、栈大小和内存锁定等限制。

sudo vim /etc/security/limits.conf* soft   nofile    131072 文件描述符的软限制
* hard   nofile    131072 文件描述符的硬限制
* soft   nproc    131072 进程数量的软限制
* hard   nproc    131072 进程数量的硬限制
* soft   stack    unlimited 栈大小的软限制
* hard   stack   unlimited 栈大小的硬限制
* hard   memlock    50000000 内存锁定的硬限制
* soft   memlock    50000000 内存锁定的软限制

软限制是指进程可以自由地增加或减少的资源限制。当进程达到软限制时,系统会向进程发送一个警告信号,但是进程仍然可以继续使用更多的资源,直到达到硬限制。

三、编译安装

可以提前创建文件夹指定位置安装(本文在/opt/module/postgresql目录):

  1. 解压缩到指定目录
tar -zxvf postgresql-14.9.tar.gz -C /opt/module
  1. 进入解压的指定目录下执行如下命令
./configure --prefix=/usr/local/pg12 --with-pgport=5432
参数名含义
prefix软件目录也就是安装目录
with-perl编译时添加该参数才能够使用 perl 语法的 PL/Perl 过程语言写自定义函数,需要提前安装好相关的 perl 开发包:libperl-dev
with-python编译时添加该参数才能够使用 python 语法的 PL/Perl 过程语言写自定义函数,需要提前安装好相关的 python 开发包:python-dev
with-blocksize & with-wal-blocksize默认情况下 PG 数据库的数据页大小为 8KB,若数据库用来做数仓业务,可在编译时将数据页进行调整,以提高磁盘 IO
  1. 编译安装
#全部可用功能编译
gmake world
#把所有编译好的进行安装(建目录+拷贝)
gmake install -world

在这里插入图片描述
4. 配置环境变量

su postgres
cd ~
vim .bash_profileexport PGDATA=/pgdata/12/data
export LANG=en_US.utf8
export PGHOME=/usr/local/pg12
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
export PGUSER=postgressource .bash_profile

此处主要为配置环境变量,不一定需要将修改存放到bash_profile中,存放到任意一个shell可加载的环境变量文件中即可。

注意最后的PGUSER为我们定义的用户

能成功显示版本信息即是配置成功。
在这里插入图片描述
5. 简易初始化数据

initdb -D /pgdata/12/data   此处为前边创建的数据目录

在这里插入图片描述

四、启动数据库

1 创建启动日志/pgdata/pglog/logs/start.log (可以自定义)
在这里插入图片描述
2 启动数据库服务,并使用日志文件

pg_ctl -D /pgdata/12/data/ -l /pgdata/pglog/logs/start.log start

在这里插入图片描述

3 数据库client
第一次安装仅允许本地socket连接,一般socket再/tmp目录下,是个隐藏文件,直接输入psql,输入密码即可进入命令行,默认进入系统postgres这个库中;

4 参数修改
PostgreSQL 数据目录中,会自动生成 pg_hba.conf 文件,该文件是一个黑名单访问控制文件,可以控制允许哪些 IP 地址的机器访问数据库。默认,不允许远程访问数据,所以安装完成后需要配置下。

su postgres
cd $PGDATA
vim pg_hba.conf 

在这里插入图片描述
如果允许任何用户远程连接数据库,连接时需要提供密码,在最后一行添加

host    all             all             0/0                     md5

此外由于默认只监听本地,还需要配置linstener才能监听到,在数据目录中的 postgresql.cnf 中,可以找到如下内容:
在这里插入图片描述
其中,参数 listen_addresses 表示监听的 IP 地址,默认是在 localhost/127.0.0.1 处监听,这样会导致远程主机无法访问数据库,如果需要远程访问,需要将其设置为实际网络地址,设置为 * 表示监听所有地址,该参数修改重启生效。

配置完之后便可开启远程连接

在这里插入图片描述

五、相关命令

  • 查看版本信息: select version();
  • 重启数据库服务: pg_ctl restart -mf
  • 在这里插入图片描述

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

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

相关文章

C语言结构体详解

系列文章目录 第一章 C语言基础知识 第二章 C语言控制语句 第三章 C语言函数详解 第四章 C语言数组详解 第五章 C语言操作符详解 第六章 C语言指针详解 文章目录 系列文章目录 1. 结构体的声明 1.1 结构的声明 1.2 使用结构体 1.3 结构体的高级用法 结构体指针 结构…

gin框架提高篇(四)

参数校验(一) uuid包:https://github.com/satori/go.uuid 因为作者更改了参数限制,导致会出问题 → 问题解决 package mainimport ("fmt""github.com/gin-gonic/gin""github.com/go-playground/validato…

盲人盲杖:科技革新,助力视障人士独立出行

在我们的社会中,盲人朋友们以其坚韧的精神风貌,生动诠释着生活的多样与可能。然而,当我们聚焦于他们的日常出行,那些普通人视为寻常的街道、路口,却成为他们必须面对的严峻挑战。如何切实提升盲人盲杖的功能&#xff0…

【Linux进阶之路】高级IO

一、 铺垫 I,即input为输入;O,即output为输出,IO,即input output为输入输出。IO一般是基于网卡,磁盘,光盘,U盘,磁盘,磁带等毫秒级别的外存,相较…

Python实现贪吃蛇

提供学习或者毕业设计使用,功能基本都有,不能和市场上正式游戏相提比论,请理性对待!通过购买专栏或者CSDN问答提问,采纳后,私信博主。提供源码! 说明:需要的话联系博主!谢谢。 代码: import pygame import random import tkinter as tk from tkinter import mess…

BetterZip 5 for Mac:轻松解压缩的得力助手

BetterZip 5 for Mac是一款专为苹果电脑用户设计的压缩与解压软件,以其强大的功能和便捷的操作赢得了广大用户的喜爱。 BetterZip 5 for Mac v5.3.4中文版下载 这款软件支持多种主流的压缩格式,如ZIP、RAR、7-Zip等,满足了用户多样化的需求。…

WordPress 主题选择与自定义配置

最近我在使用wordpress网站进行建站。 我是使用的hostease的主机产品进行wordpress建站,在选择wordpress主题时颇为头疼。后来咨询了hostease的客服人员,他们家的技术人员提供了诸多帮助。在WordPress网站建设时,主题选择对于建立各类网站至关…

【MIT6.824】lab2C-persistence, lab2D-log compaction 实现笔记

引言 lab2C的实验要求如下 Complete the functions persist() and readPersist() in raft.go by adding code to save and restore persistent state. You will need to encode (or “serialize”) the state as an array of bytes in order to pass it to the Persister. Us…

【C++风云录】开源金融与科技库探索:优化计算与高效分析

高效计算与智能分析:开源库在金融和科技领域的应用探究 前言 本文将探索几个关键的开源库,包括QuantLib、TA-Lib、Boost.Asio、Armadillo和FastFlow,这些库在金融领域和科技领域中发挥着重要作用。通过使用这些工具,开发人员能够…

记录——FPGA的学习路线

文章目录 一、前言二、编程语言2.1 书籍2.2 刷题网站2.3 仿真工具 三、基础知识3.1 专业基础课3.2 fpga相关专业知识 四、开发工具五、动手实验 一、前言 也不是心血来潮想学习fpga了,而是祥哥还有我一个国科大的同学都在往fpga这个方向走 并且看过我之前文章的同…

合并有序表 (顺序存储 和 链式存储 方式实现)

代码详细解析: 合并有序表文章浏览阅读1.4k次,点赞6次,收藏7次。●假设有两个有序表 LA和LB , 将他们合并成一个有序表LC●要求不破坏原有的表 LA和 LB构思:把这两个表, 合成一个有序表 , 不是简简单单吗?就算是把他们先遍历不按顺序插入到表 C里面 , …

万物皆可计算|下一个风口:近内存计算-2

虽然PIM可以有缓解内存墙的问题,但是PIM设计面临着一系列技术和工程上的挑战,这些挑战直接影响着PIM技术的实用化和广泛应用: 地址翻译与操作映射: 在传统计算机体系结构中,地址空间由操作系统管理和调度,通…

Hotcoin 热门资产上新速报:以太坊互操作性基础设施Omni Network(OMNI)

Hotcoin持续为全球600万用户发掘优质潜力资产,热门币种交易上热币。一文快速了解今日上新资产:Omni Network(OMNI) 推荐指数 8.4 交易对 OMNI/USDT 交易时间 4月17日 GMT8 20:30 资产赛道 Layer1 项目简介 Omni 是以太坊…

关于电脑蓝屏解决方法(ST-LINK/ J-Link)

问题背景: 电脑win11系统,使用到STM32CUBEIDE STM32MP157A在实际的烧录情况中,烧录器插到电脑上面,电脑立即蓝屏。(封面蓝屏图片不为本问题蓝屏图片) 其他类似情况也可参考。 问题分析: 可能是激发了电脑的保护&…

【星瑞格】SinoDB国产数据库安装初体验及学习指南

今天和大家一起来看看一款来自福建的国产数据库——SinoDB。本人很早就听说过这款数据库,而且星瑞格公司就在同一栋办公楼。虽然以前就已经对这颗国产数据库有一定的了解,并没有真正的去使用一把。随着数据库国产化改造工作的推进,身边的客户…

TCP机械臂测试

#include<myhead.h> #define SER_IP "192.168.125.242" #define SER_PORT 1234 #define CLI_IP "192.168.243.131" #define CLI_PORT 9999 int main(int argc, const char *argv[]) { //1、创建用于通信的套接字文件描述符 int cfd socket(…

vue+springboot实现聊天功能

前言 在我的项目中&#xff0c;突然有种想法&#xff0c;想实现聊天功能&#xff0c;历经一段时间终于做出来了&#xff1b;那么接下来会讲解如何实现&#xff0c;这篇文章只会实现最基础的逻辑&#xff0c;实时获取对方聊天记录&#xff0c;话不多说&#xff0c;我们就开始吧…

吹爆,一款实用的个人IT工具箱

作为一名开发人员&#xff0c;我们在日常工作和学习中常常需要使用一系列小工具&#xff0c;如JSON格式化、JSON转表格、当前时间戳、XML格式化、SQL格式化、密码生成以及UUID生成等。通常情况下&#xff0c;我们会在网上搜索各种在线工具来满足这些需求。 然而&#xff0c;这…

odoo17开发教程(21):数据文件详解

Odoo 以数据为导向&#xff0c;因此模块定义的一个重要部分就是其管理的各种记录的定义&#xff1a;用户界面&#xff08;菜单和视图&#xff09;、安全性&#xff08;访问权限和记录规则&#xff09;、报告和普通数据都是通过记录定义的。 结构 在 Odoo 中定义数据的主要方式…

【C++ 哈希应用】

文章目录 位图概念代码实现海量数据处理 布隆过滤器概念代码实现海量数据处理 哈希切割海量数据处理 位图 概念 一个值在给定的集合中有两种状态&#xff0c;在或不在&#xff0c;要表示这种状态&#xff0c;最少可以用一个比特位&#xff0c;比特位为1表示在&#xff0c;比特…