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 6 | 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) |