PostgreSQL,通常简称为 Postgres,是一个开源通用对象关系数据库管理系统。它具有在线备份、时间点恢复、嵌套事务、SQL和JSON查询、多版本并发控制(MVCC)、异步复制等许多强大的功能。
本教程将引导您完成在 Debian 10 上安装 PostgreSQL 数据库服务器的步骤。我们还将探索基本数据库管理的基础知识。
安装 PostgreSQL#
在撰写本文时,默认 Debian 存储库提供的最新 PostgreSQL 版本是 PostgreSQL 版本 11.5。
要在 Debian 服务器上安装 PostgreSQL,请以 root 或用户身份执行以下步骤:须藤权限
:
-
首先更新 APT 包索引:
sudo apt update
-
安装 PostgreSQL 服务器和 contrib 软件包,为 PostgreSQL 数据库提供附加功能:
sudo apt install postgresql postgresql-contrib
-
安装完成后,PostgreSQL 服务将启动。要验证安装,请使用psql
打印工具服务器版本
:
sudo -u postgres psql -c "SELECT version();"
输出应如下所示:
PostgreSQL 11.5 (Debian 11.5-1+deb10u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
psql
是一个交互式终端程序,允许您与 PostgreSQL 服务器交互。
PostgreSQL 角色和身份验证方法#
PostgreSQL 使用角色的概念来处理数据库访问权限。根据您设置角色的方式,它可以代表一个数据库用户或一组数据库用户。
PostgreSQL 支持多种认证方式。最常用的方法是:
- 信任 - 只要符合中定义的条件,角色就可以在没有密码的情况下进行连接
pg_hba.conf
都满足了。
- 密码 - 角色可以通过提供密码进行连接。密码可以存储为
scram-sha-256
md5
and password
(明文)
- Ident - 仅支持 TCP/IP 连接。它的工作原理是获取客户端的操作系统用户名以及可选的用户名映射。
- 对等 - 与 Ident 相同,但仅在本地连接上受支持。
PostgreSQL 客户端身份验证在名为的配置文件中定义pg_hba.conf
。对于本地连接,PostgreSQL 设置为使用对等身份验证方法。
安装 PostgreSQL 时会自动创建“postgres”用户。该用户是PostgreSQL实例的超级用户,相当于MySQL root用户。
要以“postgres”身份登录 PostgreSQL 服务器,切换到用户postgres 并使用以下命令访问 PostgreSQL 提示符psql
公用事业:
sudo su - postgres
psql
从这里,您可以与 PostgreSQL 服务器交互。要退出 PostgreSQL shell,请输入:
\q
您可以使用sudo命令访问 PostgreSQL 提示符而不切换用户:
sudo -u postgres psql
The postgres
用户通常仅从本地主机使用。
创建 PostgreSQL 角色和数据库#
The createuser
命令允许您从命令行创建新角色。仅具有以下权限的超级用户和角色CREATEROLE
特权可以创建新角色。
在以下示例中,我们将创建一个名为的新角色kylo
,一个名为kylodb
并向该角色授予数据库权限。
-
首先,通过发出以下命令创建角色:
sudo su - postgres -c "createuser kylo"
-
接下来,使用以下命令创建数据库createdb
命令:
sudo su - postgres -c "createdb kylodb"
-
要向用户授予数据库权限,请连接到 PostgreSQL shell:
sudo -u postgres psql
运行以下查询:
GRANT ALL PRIVILEGES ON DATABASE kylodb TO kylo;
启用对 PostgreSQL 服务器的远程访问#
默认情况下,PostgreSQL 服务器仅侦听本地接口127.0.0.1
.
如果要从远程位置连接到 PostgreSQL 服务器,则需要将服务器设置为侦听公共接口并编辑配置以接受远程连接。
打开配置文件postgresql.conf
并添加listen_addresses = '*'
in the CONNECTIONS AND AUTHENTICATION
部分。这指示服务器侦听所有网络接口。
sudo nano /etc/postgresql/11/main/postgresql.conf
/etc/postgresql/11/main/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
保存文件并重新启动 PostgreSQL 服务以使更改生效:
sudo service postgresql restart
使用以下命令验证更改ss
公用事业:
ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
输出应显示 PostgreSQL服务器监听在所有接口 (0.0.0.0) 上。
最后一步是通过编辑以下内容将服务器配置为接受远程登录pg_hba.conf
file.
以下是一些显示不同用例的示例:
/etc/postgresql/11/main/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# The user jane will be able to access all databases from all locations using an md5 password
host all jane 0.0.0.0/0 md5
# The user jane will be able to access only the janedb from all locations using an md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust
结论#
我们已经向您展示了如何在 Debian 10 上安装和配置 PostgreSQL。有关此主题的更多信息,请参阅PostgreSQL 文档
.
如果您有任何问题或反馈,请随时发表评论。