如何在 Debian 11/10 上安装 PostgreSQL 14 |
经过 30 多年的存在和积极发展,PostgreSQL 在稳健性、可靠性和性能方面赢得了良好的声誉。 PostgreSQL 是一个免费、开源的关系数据库管理系统。 PostgreSQL 14 是这个世界上最先进的开源数据库的最新发布版本。
最新版本 PostgreSQL 14 引入了多项新功能,有助于简化实现数据驱动应用程序的开发和管理。它继续在复杂数据类型领域进行改进,包括更易于访问的 JSON 访问和对非连续数据范围的支持。 PostgreSQL 14 在 PostgreSQL 的高性能和分布式工作负载历史中发挥了重要作用,在逻辑复制、查询并行性、高写入工作负载、连接并发性方面进行了改进。
PostgreSQL 14 的特性
PostgreSQL 14 具有以下功能和增强功能:
- 通过并行查询、大量并发工作负载、分区数据库、逻辑复制和清理,性能显着提高。
- OUT 参数现在可用于从存储过程返回数据。
- JSON 便利性和多范围 - 支持非连续数据范围的表示。
- 下标运算符已添加到 jsonb 和 hstore 类型中。
- 对 B 树索引的更新进行更有效的管理,从而减少索引膨胀。
- 通过libpq支持管道查询,这可以显着提高高延迟连接的吞吐量。
- 安全增强
在本指南中,我们将系统地介绍如何在 Debian 11 上安装 PostgreSQL 14 | Debian 10。
设置先决条件
对于本指南,请确保您具备以下条件:
- Debian 11|Debian 10 服务器。
- 具有 sudo 访问权限的用户。
确保您的系统已更新。
sudo apt update && sudo apt upgrade -y
然后继续并安装所需的软件包。
sudo apt -y install gnupg2 wget vim
步骤 1 – 在 Debian 11 上安装 PostgreSQL 14 | Debian 10
PostgreSQL 在默认 Debian 存储库中可用,但可用版本不是最新的。使用以下命令检查可用版本:
sudo apt-cache search postgresql | grep postgresql
在本指南中,我们对默认存储库中未提供的 PostgreSQL 14 感兴趣。因此,我们需要添加一个提供该包的存储库。
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
导入添加的存储库的 GPG 密钥。
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
接下来,更新您的 APT 包索引。
sudo apt -y update
现在使用以下命令在 Debian 11/Debian 10 上安装 PostgreSQL 14。
sudo apt install postgresql-14
验证您的 PostgreSQL 14 安装如下。
$ sudo -u postgres psql -c "SELECT version();"
version
-----------------------------------------------------------------------------------------------------------------------------
PostgreSQL 14.8 (Debian 14.8-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
完成安装后,PostgreSQL 14 将被初始化。检查服务的状态如下。
$ systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2021-10-25 07:26:42 EDT; 1min 10s ago
Process: 3811 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 3811 (code=exited, status=0/SUCCESS)
CPU: 1ms
Oct 25 07:26:42 debian systemd[1]: Starting PostgreSQL RDBMS...
Oct 25 07:26:42 debian systemd[1]: Finished PostgreSQL RDBMS.
第 2 步 – 连接并保护 PostgreSQL 数据库
在 PostgreSQL 中,有一个称为角色的概念,用于客户端身份验证。默认情况下,PostgreSQL 设置为使用身份验证。此方法将角色与匹配的 Linux 系统帐户关联起来。如果存在,那么您就可以登录。
安装后,将创建一个名为 postgres 的用户帐户,并将其与角色 postgres 关联。使用此用户,可以登录 PostgreSQL shell。
PostgreSQL 支持的多种身份验证方法包括:
- 密码 – 允许角色通过提供密码进行连接。
- Ident – 通过 TCP/IP 连接获取客户端的操作系统用户名以及用于映射的可选用户名。
- Peer – 工作方式与 ident 类似,但仅支持本地连接。
- 信任 – 它使用
pg_hba.conf
上定义的条件。只要满足conf文件中的条件,用户就可以无需密码进行连接
连接 PostgreSQL 数据库有两种方式;
方法一:
切换到 postgres 用户。
sudo -i -u postgres
现在使用命令访问 PostgreSQL shell。
psql
示例输出:
postgres@debian:~$ psql
psql (14.8 (Debian 14.8-1.pgdg110+1))
Type "help" for help.
postgres=#
现在,您可以在 shell 中管理数据库。
方法二:
在这种方法中,不需要切换到postgres用户,可以直接使用下面的sudo命令访问PostgreSQL shell。
sudo -u postgres psql
示例输出:
$ sudo -u postgres psql
psql (14.8 (Debian 14.8-1.pgdg110+1))
Type "help" for help.
postgres=#
步骤 3 – 配置 PostgreSQL 14 实例以进行远程访问
为了远程访问 PostgreSQL 14 实例,我们需要修改 /etc/postgresql/14/main/pg_hba.conf 文件
首先,将对等标识更改为信任,如下所示。
sudo sed -i '/^local/s/peer/trust/' /etc/postgresql/14/main/pg_hba.conf
然后,允许密码登录。
sudo sed -i '/^host/s/ident/md5/' /etc/postgresql/14/main/pg_hba.conf
现在允许从任何地方访问。
sudo vim /etc/postgresql/14/main/pg_hba.conf
在该文件中,添加以下行。
# Database administrative login by Unix domain socket
local all postgres trust
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 0.0.0.0/24 md5
# IPv6 local connections:
host all all ::1/128 scram-sha-256
host all all 0.0.0.0/0 md5
现在通过编辑以下文件允许 PostgreSQL 监听 *。
sudo vim /etc/postgresql/14/main/postgresql.conf
如下编辑文件。
# CONNECTIONS AND AUTHENTICATION
........
listen_addresses='*'
为了使所做的更改生效,您需要重新启动 PosgreSQL。
sudo systemctl restart postgresql
sudo systemctl enable postgresql
步骤 4 – PostgreSQL 数据库中的用户管理
现在我们已经配置了所有内容,让我们创建一个用于数据库管理的超级用户。
连接到 PostgreSQL 角色。
sudo -u postgres psql
创建一个超级用户 admin,密码为 Passw0rd,如下所示。
CREATE ROLE admin WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'Passw0rd';
示例输出:
postgres=# CREATE ROLE admin WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'Passw0rd';
CREATE ROLE
postgres=#
管理应用程序用户
创建数据库并授予用户对数据库的权限。在本指南中,我们将创建一个名为 test_db 的数据库和一个密码为 dbpassword 的用户 test_user,如下所示。
create database test_db;
create user test_user with encrypted password 'dbpassword';
grant all privileges on database test_db to test_user;
\q
从远程主机连接到实例。
验证服务是否正在运行:
$ ss -tunelp | grep 5432
tcp LISTEN 0 244 0.0.0.0:5432 0.0.0.0:* uid:117 ino:30522 sk:d cgroup:/system.slice/system-postgresql.slice/[email <->
tcp LISTEN 0 244 [::]:5432 [::]:* uid:117 ino:30523 sk:e cgroup:/system.slice/system-postgresql.slice/[email v6only:1 <->
如果您使用 ufw,请允许端口 5432 通过防火墙,如下所示。
sudo ufw allow 5432/tcp
现在我们想要从远程主机连接到 PostgreSQL 14 实例。语法如下。
psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'
例如,在另一台主机上,我将尝试使用超级用户帐户连接到我的 PostgreSQL14 实例,如下所示。
首先,在远程主机上安装 PostgreSQL 14 并继续访问您的 PostgreSQL14 实例。
psql 'postgres://admin:[email :5432/postgres?sslmode=disable'
示例输出:
推荐书籍:
- 学习 PostgreSQL 数据库的最佳书籍
结论
我们已经成功演练了如何在 Debian 11 上安装 PostgreSQL 14 | Debian 10。除此之外,我们还对 PostgreSQL 14 进行了配置,并通过远程主机访问它。学习就够了!
查看更多:
- 如何使用 Ansible 管理 PostgreSQL 数据库
- 学习 PostgreSQL 数据库的最佳书籍
- 在 Fedora 上安装 PostgreSQL 13
- 如何在 CentOS 7 上安装 PostgreSQL 13