网站搜索

如何在 Debian 10 中安装 PostgreSQL 数据库


PostgreSQL(有时称为Postgres)是最先进的开源通用和对象关系数据库系统,具有经过验证的架构,可在所有主要操作系统上运行。它是一个高性能、稳定、可伸缩和可扩展的数据库系统,提供令人惊叹的数据完整性并支持强大的附加组件。

重要的是,PostgreSQL 允许您定义自己的数据类型、添加自定义函数,甚至可以使用不同的编程语言(例如 C/C++、Java 等)编写代码,而无需重新编译数据库。

PostgreSQL被Apple、Fujitsu、Red Hat、Cisco、Juniper Network等知名科技公司所使用。

在本文中,我们将向您展示如何在 Debian 10 中安装、保护和配置 PostgreSQL 数据库服务器。

要求:

  1. 安装 Debian 10 (Buster) 最小服务器

在 Debian 10 上安装 PostgreSQL 服务器

要安装PostgreSQL数据库服务器,请使用默认的APT包管理器,它将安装PostgreSQL 11服务器和客户端。

apt install postgresql-11 postgresql-client-11

Debian 上,与任何其他守护进程一样,Postgres 数据库在软件包安装完成后立即初始化,如以下屏幕截图所示。

要检查 Postgres 数据库是否真正初始化,您可以使用 pg_isready 实用程序来检查 PostgreSQL 服务器的连接状态,如下所示。

pg_isready 

此外,在systemd下,Postgres服务也会自动启动并在系统启动时启动。要确保服务正常启动并运行,请运行以下命令。

systemctl status postgresql

以下是其他有用的 systemctl 命令,用于在 systemd 下管理 Postgres 服务。

systemctl start postgresql
systemctl restart postgresql
systemctl stop postgresql
systemctl reload postgresql 		#this reloads the service configuration

保护和配置 PostgreSQL 数据库

默认情况下,Postgres 使用角色的概念来管理数据库访问权限,数据库角色在概念上与操作系统用户完全分开。角色可以是用户,也可以是组,具有登录权限的角色称为用户。

刚初始化的系统总是包含一个名为 postgres 的预定义角色,它与名为 postgres 的操作系统用户帐户同名,用于访问 psql (Postgres shell) 和其他数据库程序。

Postgres 系统用户帐户不受密码保护,为了保护它,您可以使用 passwd 实用程序 创建密码。

passwd postgres

此外,默认情况下,Postgres 角色(或管理数据库用户,如果您愿意)不受保护。您还需要使用密码来保护它。现在切换到 postgres 系统用户帐户和 postgres 角色(请记住设置一个强而安全的密码),如图所示。

su - postgres
psql -c "ALTER USER postgres WITH PASSWORD 'securepass_here';"

然后退出 postgres 帐户以继续阅读指南。

配置客户端身份验证

主要的Postgres配置文件位于/etc/postgresql/11/main/postgresql.conf。除了此文件之外,Postgres 还使用另外两个手动编辑的配置文件来控制客户端身份验证。

客户端身份验证由 /etc/postgresql/11/main/pg_hba.conf 配置文件控制。 Postgres 提供了许多不同的客户端身份验证方法,包括基于密码的身份验证。客户端连接根据客户端主机地址、数据库和用户进行身份验证。

如果您选择使用基于密码的身份验证,则可以实现以下方法之一:md5 或密码,除了密码通过连接传输的方式不同之外,其操作方式类似,分别是MD5哈希和明文。

使用md5密码认证可以避免密码被黑客嗅探,并避免将密码以明文形式存储在服务器上。只有当连接受到 SSL 加密保护时,才能安全地使用密码方法。

在本指南中,我们将展示如何为客户端身份验证配置md5密码身份验证

vim /etc/postgresql/11/main/pg_hba.conf 

查找以下行并将身份验证方法更改为 md5,如屏幕截图所示。

local   all             all                                     md5

保存文件中的更改并退出。然后通过重新启动 Postgres 服务来应用最近的更改,如下所示。

systemctl restart postgresql

在 PostgreSQL 中创建新的数据库和数据库角色/用户

在最后一节中,我们将展示如何创建新的数据库用户和数据库角色来管理它。首先,切换到 postgres 帐户并打开 Postgres shell,如下所示。

su - postgres
psql

要创建名为“test_db”的数据库,请运行以下 SQL 命令。

postgres=# CREATE DATABASE test_db;

然后创建一个数据库用户(具有登录权限的角色),该用户将管理新数据库,如下所示。

postgres=#CREATE USER test_user PASSWORD ‘securep@ss_here’;     #assumes login function by default

要以用户 test_user 身份连接到 test_db,请运行以下命令。

 
psql -d  test_db  -U test_user

有关更多信息,请参阅 PostgreSQL 11 文档。

结论

暂时就这样吧!在本指南中,我们展示了如何在 Debian 10 中安装、保护和配置 PostgreSQL 数据库服务器。您有任何问题或想法要分享吗?使用下面的评论表联系我们。