在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”。

image.png

顺便说一句,如果你想从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 行)

好的,没问题。

广告
将在 10 秒后关闭
bannerAds