首页 > 数据库 >openeuler源码安装Postgresql 16

openeuler源码安装Postgresql 16

时间:2024-06-02 10:24:26浏览次数:19  
标签:bin postgresql postgres ## 源码 usr Postgresql openeuler local

准备条件

OpenEuler(虚拟机):
版本:22.03-LTS-SP3
下载地址:https://www.openeuler.org/zh/download/
PostgreSQL:
版本:16.3源码包
下载地址:https://www.postgresql.org/ftp/source/

操作系统安装

安装过程与centos基本一致,此处就省略了,安装的时候可以把需要的网络工具和开发工具包勾上,避免后续编译需要去装相应的包。

安装Postgresql

安装步骤

  • 阅读官方源码安装说明;
  • 下载源码包;
  • 根据官方说明安装必须依赖;
  • 根据官方说明编译安装PostgreSQL;
  • 配置、启动PostgreSQL;

如无特殊说明,本说明是以root账号登录安装,所以特殊需要系统权限命令不再需要sudo前缀,如实际安装过程未采用root账号导致安装出现错误,可尝试在命令前增加sudo。

安装说明

可以查看源码包里的INSTALL文件,主要看前面的两部分Requirements和Short Version。

安装依赖

根据文档说明必要的依赖如下:

  • make 需要版本3.81+
  • gcc
  • tar
  • Readline
  • zlib

其他可选依赖根据自身需要选装。如果默认安装操作系统的时候选择了开发包,那么上面的依赖基本上都有了。
也可以通过命令全部安装
dnf install readline-devel zlib-devel lz4-devel libzstd-devel systemd-devel python3-devel make gcc

编译安装

解压源码包
tar xvf postgresql-16.3.tar.gz
生成postgresql-16.3目录
官方提供的简单版本的安装命令如下:

./configure ##配置
make ##编译
su ##切换管理员权限
make install ##安装
adduser postgres ##添加postgres用户
mkdir /usr/local/pgsql/data ##创建data存放目录
chown postgres:postgres /usr/local/pgsql/data ##给postgres用户授权
su - postgres ##切换到postgres用户(数据库的操作不允许使用root用户)
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data ##初始化数据库
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start ##启动数据库
/usr/local/pgsql/bin/createdb test ##创建test数据库
/usr/local/pgsql/bin/psql test ##连接test数据库

上面的配置一般只需调整路径即可

cd postgresql-16.3
./configure --prefix=/usr/local/postgresql --with-zstd --with-python --with-systemd
make
make install

安装好后位置数据库路径及日志路径

adduser postgres
mkdir /usr/local/postgresql/data
mkdir /usr/local/postgresql/log
chown postgres:postgres /usr/local/postgresql -R

初始化数据库

su - postgres
/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data

启动数据库

/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l /usr/local/postgresql/log/server.log start

创建并连接数据库

/usr/local/postgresql/bin/createdb test 
/usr/local/postgresql/bin/psql test 

访问配置

上面完成后可以通过命令工具在服务器上访问数据库,但是无法通过工具在外网访问,需要进行下面的配置操作。
进入postgrelsql下的data目录,命令及目录结构如下:
image.png
base目录是表空间目录,global目录是相关全局变量目录, pg_hba.conf是访问控制配置文件,postgresql.conf是postgresql主配置文件。我们需要修改的配置文件为pg_hba.conf和postgresql.conf文件。
修改pg_hba.conf文件,拉到最下面,如下图所示修改:
image.png

pg_hba.conf文件是PostgreSQL数据库系统中的一个配置文件,用于定义客户端与服务器之间的连接规则。pg_hba代表 “host-based authentication”,即基于主机的身份验证。 在这个文件中,可以规定哪些主机地址、哪些用户、以及使用什么方法进行连接,以及是否需要密码等认证信息。这是PostgreSQL数据库管理安全连接的一个重要配置文件。

修改postgresql.conf文件,在展开到内容中找到“# - Connection Settings -”,如下图所示修改:
image.png
防火墙配置,对firewall或iptable进行策略配置,放通数据库访问端口5432。firewall的配置样例如下:

##以下命令在root账户下执行
firewall-cmd --zone=public --add-port=5432/tcp --permanent     ##配置防火墙放行5432端口
firewall-cmd --reload       ##防火墙重新加载配置文件

重启数据库

su - postgres
/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l /usr/local/postgresql/log/server.log stop
/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l /usr/local/postgresql/log/server.log start

配置数据库密码

/usr/local/postgresql/bin/psql      ##使用postgres用户连接默认postgres数据库;
ALTER USER postgres WITH PASSWORD 'postgres';     #修改数据库用户postgres的密码为postgres;

环境变量

目前使用命令仍需要使用全路径执行,为方便使用,配置环境变量。

vi /etc/profile
##将如下内容添加到文件末尾
PATH=/usr/local/postgresql/bin:$PATH
export PATH

##保存退出后执行刷新配置
source /etc/profile

##切换到postgres用户
su - postgres

##此时就可以直接执行psql命令了
psql

开机启动

方式一

PostgreSQL的开机自动启动脚本位于PostgreSQL源码目录下的contrib/start-scripts目录下:
image.png
其中linux文件为linux环境下的开机自启动脚本,将其拷贝到“/etc/init.d”目录下,并改名为postgresql:

cp linux /etc/init.d/postgresql

切换到/etc/init.d目录,使用vi打开postgresql文件修改如下内容:

#修改前:
#Installation prefix
prefix=/usr/local/pgsql

#修改后: 
#Intalllation prefix[2021-10-25]
prefix=/usr/local/postgresql

#修改前:
# Data directory
#PGDATA="/usr/local/pgsql/data"

#修改后:
# Data directory[2021-10-25]
PGDATA="/usr/local/postgresql/data"

# Who to run the postmaster as, usually "postgres".  (NOT "root")
# 将启动用户修改为实际用户,这里使用postgres,所以不变。
PGUSER=postgres

#修改前:
# Where to keep a log file
PGLOG="$PGDATA/serverlog"

#修改后:
# Where to keep a log flie[2021-10-25]
PGLOG="/usr/local/postgresql/log/server.log"

然后修改postgresql文件的执行权限:
chmod a+x postgresql
添加开机启动:
chkconfig --add postgresql
然后重启服务器开机验证即可。

方式二

编辑如下启动文件/lib/systemd/system/postgresql.service

[Unit]
Description=PostgreSQL database server
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/postgresql/bin/postgres -D /usr/local/postgresql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target

添加开机启动并现在启动
systemctl enable postgresql.service --now

标签:bin,postgresql,postgres,##,源码,usr,Postgresql,openeuler,local
From: https://www.cnblogs.com/Before/p/18226831

相关文章

  • 开源多企业AI智能名片小程序源码中的市场细分策略分析
    摘要:在数字化营销的新时代,开源多企业AI智能名片小程序源码为众多企业提供了快速构建智能名片系统的能力。其中,市场细分作为营销策略的重要组成部分,对于提高营销效果、满足消费者需求具有重要意义。本文将以开源多企业AI智能名片小程序源码为背景,探讨市场细分中的行为细分和心......
  • gcc源码分析 GIMPLIFY相关
    gcc源码分析GIMPLIFY相关四、GIMPLIFY相关4.1gcc全局符号表与符号分析4.1.1全局符号表4.1.2函数节点的gimplify4.2gimple高端化4.2.1gimplify_body函数4.2.2gimplify_stmt4.3gimple低端化4.3.1pass_lower_cf4.3.2pass_build_cfg4.3.3p......
  • 第四篇:openEuler网络配置与C语言开发环境验证
    在阅读文章前,请读者朋友认真阅读免责声明:免责声明:本人所发表的所有文章、资源、知识等内容(包括免费、付费等)旨在向广大读者介绍我的职业生涯中积累的一些经验、知识等内容,受个人水平所限这些知识、经验、代码等不一定是最佳实践,也可能存在遗漏、错误,请广大读者自行甄别(甄别......
  • Linux编译——基于oebuild编译openEuler系统——新手向
    环境:Ubuntu20.04(镜像来自清华源)、已换源(来自清华源)、python3.8.10、pip3、Docker、oebuild。除此之外,只安装了Makefile、vim、net-tools、openssh-server、open-vm-tools、open-vm-tools-desktop,比较纯净的镜像。细则:Oebuildversion:v0.0.45.16Python3.8.10Dockerversi......
  • GPT-4o大模型分析文档和识图理解能力(6月最新ChatGPT商业运营网站程序源码)
    6月最新ChatGPT商业运营网站程序源码、支持Midjourney绘画,GPT语音对话+DALL-E3文生图+文档分析+suno-ai音乐生成+支持GPTs文章目录一、如何评价GPT-4o?1、GPT-4o大模型(文档分析)2、GPT-4o大模型(识图理解能力)3、SparkAi系统核心能力二、系统功能模块演示1、AI全模型支持/......
  • spdlog日志库源码:日志记录器logger类
    特性一个logger类对象代表一个日志记录器,为用户提供日志记录接口。每个logger对象都有一个唯一的名称,用于标识该logger。logger对象维护一个日志等级(如DEBUG、INFO、WARN、ERROR等)。只有当日志消息的等级高于或等于logger的当前等级时,消息才会被记录下来。logger......
  • spdlog日志库源码:输出通道sink
    概述在spdlog日志库中,sinks并不是一个单独的类,而是一系列类的集合,这些类以基类-派生类的形式组织,每一个sink派生类代表了一种输出日志消息的方式。输出目标可以是普通文件、标准输出(stdout)、标准错误输出(stderr)、系统日志(syslog)等等。其文件位于include/spd......
  • 【技术突破】优秘数字人独立部署源码功能进化
    随着数字人直播系统的兴起,越来越多的人对数字人直播系统源码(源码:ai6ai69)搭建感兴趣。数字人直播系统源码在一些市场上是可以找到的,但是鱼目混杂、五花八门想要找一个合适自己的就需要一定技巧,要选择一个技术专业的AI数字人直播系统源码服务商是很关键的,关系到成败。优秘数字......
  • 轻松学AI:数字人系统源码部署简易教程“
    随着短视频领域的迅猛发展,数字化概念已经成为我们生活中不可或缺的一部分。在数字化的大潮中,数字人源码部署(源码部署:ai6ai69)成为了一个热门的商业风口项目。很多企业和个人创业者开始关注并探索如何选择适合自己的数字人源码部署方案。在选择数字人系统源码厂家时,我们需要明......
  • 解决源码部署难题:如何定位数字人系统的源头厂商“
    解决源码部署难题:如何定位数字人系统的源头厂商随着短视频领域的爆发,AI人工智能也开始慢慢向这个行业渗透,在这个大背景下,数字人源码部署成为了创业者中热门的话题。面对市场上众多的数字人源码厂家,如何选择一个值得信赖、技术实力过硬的企业成为了很多人的难题。今天,小编就咨......