您当前所在位置:首页安装教程OpenEuler-PostgreSQL系列(二):手把手教你源码安装PostgreSQL

OpenEuler-PostgreSQL系列(二):手把手教你源码安装PostgreSQL

更新:2023-11-12 10:43:51编辑:tooool归类:安装教程人气:209

一、准备工作

本章节所有安装工作基于OpenEuler22.03,操作系统的安装方法见OpenEuler-PostgreSQL系列(一):手把手教你安装OpenEuler | Hello Mr Liu

OpenEuler-PostgreSQL系列(二):手把手教你源码安装PostgreSQL

需要说明的几点:

1.安装命令如无特殊说明,均采用root用户进行,如采用普通用户按教程安装的,请在命令前增加sudo请求更高级别权限执行;

2.软件包安装命令采用dnf命令,dnf与yum的区别见参考链接;

3.本次安装的PostgresSQL的版本为v14.4;

参考资料:

1.Linux环境下YUM和DNF详细介绍_萧天天天的博客-CSDN博客_dnf yum

2.详解apt、yum、dnf 和 pkg | 《Linux就该这么学》

1.1必备软件包

因为线下已经安装多次,所以不再采用遇山开山的思路,而是根据多次安装的经验,提炼总结,将需要的软件包、组件提前准备好。

根据PostgreSQL源码包安装官方文档说明,源码编译安装所必要的软件包如下(官方说明文档:PostgreSQL: Documentation: 14: 17.2.聽Requirements):

1.make 版本必须>=3.80;✅系统默认满足

2.gcc 至少支持C99编译,推荐最新版本;✅系统默认满足

3.tar 除了 ‎‎gzip 或 bzip2‎‎ 之外,还需要 ‎‎tar‎‎ 来解压缩源代码分发‎‎;✅第一章节最后部分已安装,未安装可以通过"dnf install tar"命令进行安装;

4.Readline Readline-devel:允许 ‎‎psql‎‎(PostgreSQL 命令行 SQL 解释器)记住您键入的每个命令,并允许您使用箭头键来调用和编辑以前的命令。这是非常有帮助的,建议安装;❗️Readline系统默认已安装,但readline-devel未安装;

5.zlib zlib-devel:‎默认情况下使用 ‎‎zlib‎‎ 压缩库;❗️zlib系统默认已安装,但readline-devel未安装;

安装缺失软件包命令如下:

dnf install readline-devel dnf install zlib-devel # 或者可以合并命令一起安装 dnf install readline-devel zlib-devel

软件包安装仅安装了必备的软件包,其他可选软件包可根据官方文档选择性安装。

1.2源码包下载

Postgresql下载地址:

PostgreSQL: File Browser 源码包下载

PostgreSQL: Downloads 发行版安装包下载

因PostgreSQL并未提供针对OpenEuler系统的发行版安装包,所以我们需要通过源码编译安装,如果操作系统是其他发行版,也可以通过发行版安装命令直接安装,但是通过源码包编译安装同样适用.

点击源码包下载页的版本文件夹,进入下载页面,选择tar.gz扩展名的文件,右键复制下载链接,通过wget命令进行文件下载(ssh使用root用户登录后默认在root文件夹下):

文件下载命令如下:

wget https://ftp.postgresql.org/pub/source/v14.4/postgresql-14.4.tar.gz

二、编译安装

2.1解压源码包

PostgreSQL14.4的源码包已下载,在源码包存放目录执行解压命令解压源码包:

# 解压源码包 tar -xvf postgresql-14.4.tar.gz

命令执行完毕后将会在同级目录下生成"postgresql-14.4"文件夹,通过ls或ll命令查看:

2.2编译安装

查看官方说明文档关于安装部分的说明:PostgreSQL: Documentation: 14: Chapter聽17.聽Installation from Source Code

其中17.1章节给出了编译安装所需要的步骤,详细请参阅文档,以下给出相关命令和备注解释:

# 原文链接:https://www.postgresql.org/docs/current/install-short.html (17.1 short version) ./configure ##配置 make ##编译 su ##切换管理员权限 make install ##安装 adduser postgres ##添加postgres用户 mkdir /usr/local/pgsql/data ##创建data存放目录 chown 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数据库

在进行编译安装之前,需要对configure做个说明:

configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表。

其中--prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。

如果配置了--prefix,如:

./configure --prefix=/usr/local/test

安装后的所有资源文件都会被放在/usr/local/test目录中,不会分散到其他目录。

基于方便管理和命令执行的逻辑性考虑(减少来回用户切换),将官方给出的编译命令修改如下:

# 0.切换到postgresql-14.4文件夹(系统当前在root用户根目录下) cd postgresql-14.4 # 1.配置安装目录:/usr/local/postgresql ./configure --prefix=/usr/local/postgresql # 2.编译(耗时较长,耐心等待) make # 3.安装 make install # 4.创建PostgreSQL数据存放目录(可根据实际情况自行配置数据存储路径,如变更,请同时变更命令10和11) mkdir -p /data/postgresql/data # 5.创建PostgreSQL日志存放目录(可根据实际情况自行配置日志存储路径,如变更,请同时变更命令11) mkdir -p /data/postgresql/logs # 6.创建postgres用户 adduser postgres # 7.给postgres用户授权访问data和logs目录 chown postgres /data/postgresql/data chown postgres /data/postgresql/logs # 8.切换到postgres用户(数据库操作不允许使用root用户) su - postgres # 9.创建日志文件【postgres用户】 cd /data/postgresql/logs touch server.log # 10.初始化数据库【postgres用户】 /usr/local/postgresql/bin/initdb -D /data/postgresql/data # 11.启动数据库【postgres用户】 /usr/local/postgresql/bin/pg_ctl -D /data/postgresql/data -l /data/postgresql/logs/server.log start # 12.创建test数据库【postgres用户】 /usr/local/postgresql/bin/createdb test ##创建test数据库 # 13.连接test数据库【postgres用户】 /usr/local/postgresql/bin/psql test ##连接test数据库

按照命令逐一执行即可安装完毕,截止到当前章节,已经可以在本机执行一些PostgreSQL的命令进行实验。但是目前外部机器或工具暂时无法连接该数据库,远程连接的配置见下个章节说明。

三、配置远程连接

以下操作如无特殊说明,均采用postgres用户(指操作系统用户)操作命令。

3.1修改数据库postgres的密码

# 我们从外部采用工具连接该数据库,需要知道数据库用户和对应的密码 # 连接默认postgres数据库; /usr/local/postgresql/bin/psql # 修改数据库用户postgres的密码为postgres; ALTER USER postgres WITH PASSWORD postgres;

3.2修改postgresql配置文件

允许远程连接,还需要修改postgresql的数据存储目录(/data/postgresql/data)下的两个配置文件:

pg_hba.conf :访问控制配置文件;

postgresql.conf :postgresql主配置文件

data目录结构如下:

pg_hba.conf需要修改如下:

即是修改后:

host all all 0.0.0.0/0 md5

postgresql.conf需要修改如下:

即是修改后:

# Connection Setting -

listen_address = *

3.3修改防火墙配置

配置完毕后应在防火墙对5432端口放行,采用root账号执行。执行命令如下:

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

3.4连接测试

数据库连接测试之前需要先切换到postgres用户重启一下postgresql的服务以确保配置生效,执行的命令如下:

# 切换为postgres用户 su - postgres # 重启postgresql服务(也可以先stop再start,替换后面的restart参数即可) /usr/local/postgresql/bin/pg_ctl -D /data/postgresql/data -l /data/postgresql/logs/server.log restart

然后使用Navicat测试是否可以正常连接:

四、配置环境变量

截止到现在如果我们想在安装postgresql的服务器使用psql或其他提供的工具连接数据库,就必须输入psql的全路径来调用,如:

/usr/local/postgresql/bin/psql 并不是很方便,此时我们可以将postgresql配置到系统环境变量里面去,注意:请配置到postgres用户或者其他自定义操作postgresql的用户的bash_profile环境变量中,不要配置到root账号的环境变量中,或者可以配置到etc/profile中,单独配置到root的环境变量中时不能使用的。

这里图省事以root用户配置全局环境变量文件(配置完成后以root用户是无法执行psql命令的):

vi /etc/profile ##将如下内容添加到文件末尾 PATH=/usr/local/postgresql/bin:$PATH export PATH ##保存退出后执行刷新配置 source /etc/profile ##切换到postgres用户 su - postgres ##此时就可以直接执行psql命令了 psql

五、配置开机启动

PostgreSQL的开机自启动配置模板在源码目录的“contrib/start-scripts”目录下:

其中linux文件为linux环境下的开机自启动脚本模板,将其拷贝到“/etc/init.d”目录下,并改名为postgresql:

cp linux /etc/init.d/postgresql

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

#Intalllation prefix prefix=/usr/local/postgresql # Data directory[2021-10-25] PGDATA="/data/postgresql/data" # Who to run the postmaster as, usually "postgres". (NOT "root") # 将启动用户修改为实际用户,这里使用postgres,所以不变。 PGUSER=postgres #修改后: # Where to keep a log flie PGLOG="/data/postgresql/logs/server.log"

目的就是将其中的执行文件、存储目录和日志目录修改为我们实际位置。

然后保存退出。

然后修改postgresql文件的执行权限:

chmod a+x postgresql

添加开机启动:

chkconfig --add postgresql

然后重启服务器开机验证即可。

六、总结

截止至此,PostgreSQL14.4在OpenEuler22.03下通过源码编译安装结束。

对于PostgreSQL有其他方面安装要求的建议查看官方的说明文档。

文档链接:PostgreSQL: Documentation: 14: PostgreSQL 14.4 Documentation

如有其他问题,可通过评论留言或者联系QQ:49849668一起探讨。

文章作者: Mr Liu

首发链接:

https://it-liupp.gitee.io/2022/07/04/openeuler-pgsql02/

版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源

我告诉你msdn版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

软件销售,软件销售及软件销售是做什么的? winxp系统无法安装HP打印机驱动程序如何解决