OpenEuler-PostgreSQL系列二(OpenEuler-PostgreSQL系列二)
OpenEuler-PostgreSQL系列二(OpenEuler-PostgreSQL系列二)因为线下已经安装多次,所以不再采用遇山开山的思路,而是根据多次安装的经验,提炼总结,将需要的软件包、组件提前准备好。2.详解apt、yum、dnf 和 pkg | 《Linux就该这么学》3.本次安装的PostgresSQL的版本为v14.4;参考资料:1.Linux环境下YUM和DNF详细介绍_萧天天天的博客-CSDN博客_dnf yum
一、准备工作本章节所有安装工作基于OpenEuler22.03,操作系统的安装方法见OpenEuler-PostgreSQL系列(一):手把手教你安装OpenEuler | Hello Mr Liu
需要说明的几点:
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
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';
允许远程连接,还需要修改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 ##防火墙重新加载配置文件
数据库连接测试之前需要先切换到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
如有其他问题,可通过评论留言或者49849668一起探讨。
文章作者: Mr Liu
首发链接: https://it-liupp.gitee.io/2022/07/04/openeuler-pgsql02/
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源