在CentOS 8上安装PostgreSQL 13(分别只安装服务器和客户端)
怎么了?
就像标题所说的那样,我想在CentOS 8上安装PostgreSQL 13。
我想安装PostgreSQL并完成,还想安装客户端(主要是psql)。
环境
这次的环境是这里。
$ cat /etc/redhat-release
CentOS Linux release 8.4.2105
$ uname -srvmpio
Linux 4.18.0-305.3.1.el8.x86_64 #1 SMP Tue Jun 1 16:14:33 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
确认如何安装
在中文中,以下是一种可能的陈述方式:
建议您查看PostgreSQL的下载页面来了解安装方法。
从这些选项中选择“Linux”,选择“Red Hat/Rocky/CentOS”。

顺便说一句,如果你想从RPM中搜索的话,似乎在这里可以找到。
安装PostgreSQL
那么,让我们安装PostgreSQL吧。
安装 Yum 软件仓库。
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
在CentOS标准环境下禁用PostgreSQL。
$ sudo dnf -qy module disable postgresql
安装PostgreSQL服务器。
$ sudo dnf install -y postgresql13-server
这次安装了PostgreSQL 13.3。
$ psql --version
psql (PostgreSQL) 13.3
顺便提一下,这次安装的PostgreSQL的yum仓库似乎可以处理后续版本的PostgreSQL 9.6。
$ dnf search postgresql*-server
メタデータの期限切れの最終確認: 0:02:27 時間前の 2021年07月17日 19時01分32秒 に実施しました。
======================================================================= 名前 一致: postgresql*-server =======================================================================
postgresql10-server.x86_64 : The programs needed to create and run a PostgreSQL server
postgresql11-server.x86_64 : The programs needed to create and run a PostgreSQL server
postgresql12-server.x86_64 : The programs needed to create and run a PostgreSQL server
postgresql13-server.x86_64 : The programs needed to create and run a PostgreSQL server
postgresql96-server.x86_64 : The programs needed to create and run a PostgreSQL server
还可以选择指定以前的版本进行安装。
$ sudo dnf install postgresql12-server-12.3
我们稍微跑题了。接下来我们继续。我们将进行数据库的初始化。
$ sudo PGSETUP_INITDB_OPTIONS='--encoding=UTF-8 --no-locale' /usr/pgsql-13/bin/postgresql-13-setup initdb
使用PGSETUP_INITDB_OPTIONS环境变量,将编码设置为UTF-8,区域设置为无。
将systemd作为服务启用
$ sudo systemctl enable postgresql-13
开动。
$ sudo systemctl start postgresql-13
所有的文件等都位于/var/lib/pgsql/13目录下。
[vagrant@centos8 /]$ sudo ls -l /var/lib/pgsql/13
total 8
drwx------. 2 postgres postgres 6 5月 18 22:24 backups
drwx------. 20 postgres postgres 4096 7月 17 19:09 data
-rw-------. 1 postgres postgres 918 7月 17 19:07 initdb.log
我们来确认一下连接。
将用户更改为postgres。
$ sudo su - postgres
使用psql进行确认。
$ psql
psql (13.3)
Type "help" for help.
postgres=# select version();
version
--------------------------------------------------------------------------------------------------------
PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1), 64-bit
(1 row)
在这里,我们将创建用户和数据库。
# create user myuser password 'password';
CREATE ROLE
# create database example owner myuser;
CREATE DATABASE
让该用户在安装后从另一台服务器登录进行确认。
修改/var/lib/pgsql/13/data/postgresql.conf文件中的listen_addresses。
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
请在/var/lib/pgsql/13/data/pg_hba.conf文件的末尾添加以下内容。
host all all 192.168.33.1/24 scram-sha-256
在为使用sudo命令的用户进行更改后,重新启动PostgreSQL。
$ sudo systemctl restart postgresql-13
请确认连接。另外,该服务器的IP地址设定为192.168.33.12。
$ psql -U myuser -h 192.168.33.12 example
好的,没问题。
顺便提一下,pg_hba.conf文件的初始值如下:
$ sudo grep -vE '#|^$' /var/lib/pgsql/13/data/pg_hba.conf
local all all peer
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
local replication all peer
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256
只要没有做特别的更改,使用 127.0.0.1 指定就可以连接。
$ psql -U myuser -h 127.0.0.1 example
修改firewalld的设置。
在这里,我们来查看一下firewalld的状态。
$ sudo firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
如果正在执行操作,请确保可以与PostgreSQL进行通信。
$ sudo firewall-cmd --list-services --zone=public
cockpit dhcpv6-client ssh
由于本次数量不够,我会进行追加。
$ sudo firewall-cmd --add-service=postgresql --permanent --zone=public
success
确定。
$ sudo firewall-cmd --list-services --zone=public
cockpit dhcpv6-client postgresql ssh
只需安装PostgreSQL的客户端
接下来,尝试在其他服务器上仅安装PostgreSQL的客户端。
安装yum仓库和禁用操作系统默认的PostgreSQL是相同的。
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ sudo dnf -qy module disable postgresql
客户端包似乎是postgresql13。
$ sudo dnf search postgresql13
メタデータの期限切れの最終確認: 0:03:32 時間前の 2021年07月17日 19時56分19秒 に実施しました。
======================================================================== 名前 完全一致: postgresql13 ========================================================================
postgresql13.x86_64 : PostgreSQL client programs and libraries
========================================================================== 名前 一致: postgresql13 ==========================================================================
postgresql13-contrib.x86_64 : Contributed source and binaries distributed with PostgreSQL
postgresql13-devel.x86_64 : PostgreSQL development header files and libraries
postgresql13-docs.x86_64 : Extra documentation for PostgreSQL
postgresql13-libs.x86_64 : The shared libraries required for any PostgreSQL clients
postgresql13-llvmjit.x86_64 : Just-in-time compilation support for PostgreSQL
postgresql13-odbc.x86_64 : PostgreSQL ODBC driver
postgresql13-plperl.x86_64 : The Perl procedural language for PostgreSQL
postgresql13-plpython3.x86_64 : The Python3 procedural language for PostgreSQL
postgresql13-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgresql13-server.x86_64 : The programs needed to create and run a PostgreSQL server
postgresql13-test.x86_64 : The test suite distributed with PostgreSQL
因此,安装了PostgreSQL13。
$ sudo dnf install postgresql13
这将安装大约这么多命令。
$ rpm -ql postgresql13 | grep /bin/
/usr/pgsql-13/bin/clusterdb
/usr/pgsql-13/bin/createdb
/usr/pgsql-13/bin/createuser
/usr/pgsql-13/bin/dropdb
/usr/pgsql-13/bin/dropuser
/usr/pgsql-13/bin/pg_basebackup
/usr/pgsql-13/bin/pg_config
/usr/pgsql-13/bin/pg_dump
/usr/pgsql-13/bin/pg_dumpall
/usr/pgsql-13/bin/pg_isready
/usr/pgsql-13/bin/pg_receivewal
/usr/pgsql-13/bin/pg_restore
/usr/pgsql-13/bin/pg_waldump
/usr/pgsql-13/bin/pgbench
/usr/pgsql-13/bin/psql
/usr/pgsql-13/bin/reindexdb
/usr/pgsql-13/bin/vacuumdb
确认连接。
$ psql -U myuser -h 192.168.33.12 -W example
パスワード:
psql (13.3)
"help"でヘルプを表示します。
example=> select version();
version
--------------------------------------------------------------------------------------------------------
PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1), 64-bit
(1 行)
好的,没问题。