Oracle Linux 8 安装和保护 PostgreSQL 服务器

PostgreSQL 是一个开源的、强大的、高性能的关系数据库管理系统。 由于其稳健性、灵活性和性能,它越来越受欢迎。 它用作多个 Web、移动、地理空间和分析应用程序的数据库后端。 在撰写本文时,PostgreSQL 14 是最新版本。 此版本对索引和查找系统进行了重大改进,有利于大型数据库。

在这篇文章中,我们将向我们展示 Oracle Linux 8 上安装和保护 PostgreSQL。

先决条件

  • 在 云平台上运行 Oracle Linux 8 的服务器
  • 在我们的服务器上配置的 root 密码

第 1 步 – 创建 云服务器

首先,登录到我们的 云服务器。 创建一个新服务器,选择 Oracle Linux 8 作为至少 2GB RAM 的操作系统。 通过 SSH 连接到我们的云服务器并使用页面顶部突出显示的凭据登录。

登录到服务器后,运行以下命令以使用最新的可用软件包更新基本系统。

dnf update -y

第 2 步 – 添加 PostgreSQL 14 存储库

默认情况下,最新版本的 PostgreSQL 不包含在 Oracle Linux 默认存储库中。 我们可以使用以下命令检查 AppStream 存储库中的所有可用版本:

dnf module list postgresql

我们应该在以下输出中看到所有 PostgreSQL 版本:

Last metadata expiration check: 0:19:12 ago on Wednesday 22 June 2022 11:49:00 AM EDT.
Oracle Linux 8 Application Stream (x86_64)
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                 

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

为了安装最新的 PostgreSQL 版本,我们需要将 PostgreSQL 存储库安装到我们的系统中。

我们可以使用以下命令安装它:

dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

创建存储库后,我们可以继续下一步。

第 3 步 – 在 Oracle Linux 8 上安装 PostgreSQL 14

首先,使用以下命令更新我们的存储库:

dnf update -y

接下来,使用以下命令禁用默认 PostgreSQL 存储库:

dnf -qy module disable postgresql

接下来,通过运行以下命令安装最新版本的 PostgreSQL:

dnf install postgresql14 postgresql14-server

安装 PostgreSQL 14 后,我们将获得以下输出:

Last metadata expiration check: 0:00:53 ago on Wednesday 22 June 2022 12:09:29 PM EDT.
Dependencies resolved.
==============================================================================================================================================
 Package                               Architecture             Version                             Repository                           Size
==============================================================================================================================================
Installing:
 postgresql14                          x86_64                   14.4-1PGDG.rhel8                    pgdg14                              1.5 M
 postgresql14-server                   x86_64                   14.4-1PGDG.rhel8                    pgdg14                              5.7 M
Installing dependencies:
 lz4                                   x86_64                   1.8.3-3.el8_4                       ol8_baseos_latest                   103 k
 postgresql14-libs                     x86_64                   14.4-1PGDG.rhel8                    pgdg14                              276 k

Transaction Summary
==============================================================================================================================================
Install  4 Packages

Total download size: 7.6 M
Installed size: 32 M
Is this ok [y/N]: y

接下来,使用以下命令初始化 PostgreSQL 数据库:

/usr/pgsql-14/bin/postgresql-14-setup initdb

样本输出:

Initializing database ... OK

接下来,启动 PostgreSQL 服务并使用以下命令使其在系统重新启动时启动:

systemctl start postgresql-14
systemctl enable postgresql-14

我们可以使用以下命令检查 PostgreSQL 的状态:

systemctl status postgresql-14

我们应该得到以下输出:

● postgresql-14.service - PostgreSQL 14 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2022-06-22 12:11:16 EDT; 7s ago
     Docs: https://www.postgresql.org/docs/14/static/
  Process: 49700 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 49705 (postmaster)
    Tasks: 8 (limit: 23694)
   Memory: 16.7M
   CGroup: /system.slice/postgresql-14.service
           ├─49705 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
           ├─49707 postgres: logger 
           ├─49709 postgres: checkpointer 
           ├─49710 postgres: background writer 
           ├─49711 postgres: walwriter 
           ├─49712 postgres: autovacuum launcher 
           ├─49713 postgres: stats collector 
           └─49714 postgres: logical replication launcher 

Jun 22 12:11:16 oraclelinux8 systemd[1]: Starting PostgreSQL 14 database server...

默认情况下,PostgreSQL 侦听端口 5432。我们可以使用以下命令检查它:

ss -antpl | grep 5432

我们将获得以下输出:

LISTEN 0      128        127.0.0.1:5432      0.0.0.0:*    users:(("postmaster",pid=49705,fd=7))
LISTEN 0      128            [::1]:5432         [::]:*    users:(("postmaster",pid=49705,fd=6))

第 4 步 – 为 Postgres 用户设置密码

默认情况下,Postgres 用户的密码是没有设置的,所以出于安全考虑,建议设置密码。

要设置密码,请使用以下命令登录 PostgreSQL:

su - postgres

接下来,使用以下命令设置安全密码:

psql -c "alter user postgres with password 'securepassword'"

接下来,使用以下命令退出 PostgreSQL shell:

exit

第 5 步 – 更改 PostgreSQL 身份验证方法

默认情况下,PostgreSQL 配置为使用 peer 方式在本地连接 PostgreSQL,但不建议在生产环境中使用这种方式。 建议将身份验证方法从 peer 更改为 scram-sha-256。

我们可以通过编辑 PostgreSQL 主配置文件来更改它:

nano /var/lib/pgsql/14/data/pg_hba.conf

找到以下行:

local   all             all                                     peer

并将其替换为以下行:

local   all             all                                     scram-sha-256

保存并关闭文件,然后重新启动 PostgreSQL 服务以应用更改:

systemctl restart postgresql-14

第 6 步 – 在 PostgreSQL 中创建数据库和用户

首先,使用以下命令登录 PostgreSQL shell:

sudo -u postgres psql

我们将获得以下输出:

could not change directory to "/root": Permission denied
psql (14.4)
Type "help" for help.

postgres=# 

接下来,使用以下命令创建一个名为 testuser 的新 PostgreSQL 用户:

CREATE USER testuser WITH CREATEDB CREATEROLE PASSWORD 'passoword';

要验证 PostgreSQL 用户,请运行:

\du

我们将获得以下输出:

                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 testuser  | Create role, Create DB                                     | {}
                               

要创建一个名为 testdb 的新 PostgreSQL 数据库,请运行:

CREATE DATABASE testdb OWNER testuser;

要验证 PostgreSQL 数据库,请运行:

\l

我们将获得以下输出:

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 testdb    | testuser | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(4 rows)

本文记录了, Oracle Linux 8 上安装和使用 PostgreSQL。我们现在可以使用 PostgreSQL 作为 Web 应用程序的主要数据存储。 出于安全原因,始终建议在生产环境中安装最新版本的 PostgreSQL。 在 的专用主机上试一试!

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论