在 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 | [root@rocky8 ~]# dnf module list postgresql |
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 | WARNING: using obsoleted argument syntax, try --help |
从上面的回显可以看出,初始化过程会在 /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 | could not change directory to "/root": Permission denied |