Featured image of post rocky8、centos8、rhel8使用dnf安装postgresql数据库

rocky8、centos8、rhel8使用dnf安装postgresql数据库

在 CentOS8 、Rocky Linux8等RHEL8类发行版中,安装PostgreSQL数据库的方式与其它的软件包和数据库并不相同。除了需要手动指定数据库版本外,还需要进行初始化。这里对常见的安装和使用过程进行记录以便查阅

 · 阅读量: 

在 CentOS8 、Rocky Linux8等RHEL8类发行版中,安装PostgreSQL数据库的方式与其它的软件包和数据库并不相同。除了需要手动指定数据库版本外,还需要进行初始化。这里对常见的安装和使用过程进行记录以便查阅

永久链接: http://blog.ryjer.com/posts/a1830bde50.html

1. dnf 包管理中的PostgreSQL 包

网上大部分的PostgreSQL的安装教程都是来自PostgreSQL官方的,虽然来源没有问题但是一旦进行 dnf update 等更新软件包操作时就有可能出现软件源问题。这里对新手最佳的方式其实是使用 dnf 提供的版本

在rhel8(rocky8)中默认的包管理器dnf提供了postgresql数据库管理系统,而且同时提供了多个可选的版本。但默认提供的版本是 PostgreSQL 10 ,如果你想安装最新版本的话需要手动调整。

你可以使用如下命令列出可用 PostgreSQL 模块流,如果你没有安装过postgresql的话,结果应当和我一样(我这里删除了第一行的日期等信息)

1
2
3
4
5
6
7
8
9
[root@rocky8 ~]# dnf module list postgresql
Rocky Linux 8 - AppStream
Name                       Stream                 Profiles                          Summary                                           
postgresql                 9.6                    client, server [d]                PostgreSQL server and client module               
postgresql                 10 [d]                 client, server [d]                PostgreSQL server and client module               
postgresql                 12                     client, server [d]                PostgreSQL server and client module               
postgresql                 13                     client, server [d]                PostgreSQL server and client module               

提示:[d]默认,[e]已启用,[x]已禁用,[i]已安装

2. 安装 PostgreSQL

2.1 指定版本安装postgresq和contrib软件包

可见默认安装的是 PostgreSQL 10 ,这里我们按照最新的版本 13,使用以下命令指定按照版本

1
sudo dnf install @postgresql:13 -y

此外,通常会伴随安装以下的 contrib 拓展包,该软件包为postgresql提供了一些有用的附加功能

1
sudo dnf install postgresql-contrib -y

2.2 初始化数据库

Postgresql 数据库全新安装完成后不能直接使用,而是应当先初始化。如果你不是全新安装的话可以不用初始化

1
sudo postgresql-setup initdb

如果该命令的结果如下,说明是成功的

1
2
3
4
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

从上面的回显可以看出,初始化过程会在 /var/lib/pgsql/ 路径下创建日志文件和数据目录data

不过这里是dnf包管理的PostgreSQL的特征,如果是 Postgres 官方的安装手册的话,会根据数据库版本创建对应的版本子文件夹。比如这里会是 /var/lib/pgsql/13/。然后在子文件夹中创建数据目录和日志文件

2.3 启动服务

使用以下命令启动PostgreSQL 数据库服务

1
sudo systemctl enable --now postgresql

2.4 验证

使用以下命令查看服务状态

1
systemctl status postgresql.service

如果服务处于活跃状态的话,使用以下命令查看数据库版本信息,探测数据库本身运行情况

1
sudo -u postgres psql -c "SELECT version();"

回显如下,可见版本是 13.5,由红帽linux编译

1
2
3
4
5
could not change directory to "/root": Permission denied
                                                  version                                                   
------------------------------------------------------------------------------------------------------------
 PostgreSQL 13.5 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-3), 64-bit
(1 row)

参考文章

如何在CentOS 8 上安装 PostgreSQL 数据库 - 简书 (jianshu.com)