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