1. dnf 包管理中的PostgreSQL 包
网上大部分的PostgreSQL的安装教程都是来自PostgreSQL官方的,虽然来源没有问题但是一旦进行 dnf update
等更新软件包操作时就有可能出现软件源问题。这里对新手最佳的方式其实是使用 dnf 提供的版本
在rhel8(rocky8)中默认的包管理器dnf提供了postgresql数据库管理系统,而且同时提供了多个可选的版本。但默认提供的版本是 PostgreSQL 10
,如果你想安装最新版本的话需要手动调整。
你可以使用如下命令列出可用 PostgreSQL 模块流,如果你没有安装过postgresql的话,结果应当和我一样(我这里删除了第一行的日期等信息)
[root@rocky8 ~]# dnf module list postgresqlRocky Linux 8 - AppStreamName 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
,使用以下命令指定按照版本
sudo dnf install @postgresql:13 -y
此外,通常会伴随安装以下的 contrib
拓展包,该软件包为postgresql提供了一些有用的附加功能
sudo dnf install postgresql-contrib -y
2.2 初始化数据库
Postgresql 数据库全新安装完成后不能直接使用,而是应当先初始化。如果你不是全新安装的话可以不用初始化
sudo postgresql-setup initdb
如果该命令的结果如下,说明是成功的
WARNING: using obsoleted argument syntax, try --helpWARNING: 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 数据库服务
sudo systemctl enable --now postgresql
2.4 验证
使用以下命令查看服务状态
systemctl status postgresql.service
如果服务处于活跃状态的话,使用以下命令查看数据库版本信息,探测数据库本身运行情况
sudo -u postgres psql -c "SELECT version();"
回显如下,可见版本是 13.5,由红帽linux编译
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)