PostgreSQL,通常简称为 Postgres,是一个开源通用对象关系数据库管理系统。 PostgreSQL 拥有许多高级功能,例如在线备份、时间点恢复、嵌套事务、SQL 和 JSON 查询、多版本并发控制 (MVCC)、异步复制等。
在本教程中,我们将向您展示如何在 Debian 9 上安装 PostgreSQL 并探索基本数据库管理的基础知识。
先决条件#
在继续本教程之前,请确保您登录的用户已须藤权限
.
安装 PostgreSQL#
在撰写本文时,Debian 存储库提供的最新 PostgreSQL 版本是 PostgreSQL 版本 9.6。
要在 Debian 服务器上安装 PostgreSQL,请完成以下步骤:
-
首先更新本地包索引:
sudo apt update
-
安装 PostgreSQL 服务器和 PostgreSQL contrib 包,它为 PostgreSQL 数据库提供附加功能:
sudo apt install postgresql postgresql-contrib
-
安装完成后,PostgreSQL服务将自动启动。为了验证安装,我们将使用以下命令连接到 PostgreSQL 数据库服务器psql
实用程序并打印服务器版本
:
sudo -u postgres psql -c "SELECT version();"
输出将如下所示:
version
-----------------------------------------------------------------------------------------------------------
PostgreSQL 9.6.10 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit
(1 row)
Psql 是一个交互式终端程序,允许您与 PostgreSQL 服务器交互。
PostgreSQL 角色和身份验证方法#
PostgreSQL 使用角色的概念来处理数据库访问权限。角色可以代表一个数据库用户或一组数据库用户。
PostgreSQL 支持多种认证方式。最常用的方法是:
- 信任 - 使用此方法,角色可以在没有密码的情况下进行连接,只要符合中定义的条件即可
pg_hba.conf
都满足了。
- 密码 - 角色可以通过提供密码进行连接。密码可以存储为
scram-sha-256
md5
and password
(明文)
- Ident - 此方法仅在 TCP/IP 连接上受支持。通过获取客户端的操作系统用户名以及可选的用户名映射来工作。
- 对等 - 与 Ident 相同,但仅在本地连接上受支持。
PostgreSQL 客户端身份验证在名为的配置文件中定义pg_hba.conf
。默认情况下,对于本地连接,PostgreSQL 设置为使用对等身份验证方法。
The postgres
用户是在安装 PostgreSQL 时自动创建的。该用户是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 角色和数据库#
您可以使用以下命令从命令行创建新角色createuser
命令。仅具有以下权限的超级用户和角色CREATEROLE
特权可以创建新角色。
在以下示例中,我们将创建一个名为的新角色john
一个名为johndb
并授予数据库权限。
-
创建新的 PostgreSQL 角色
以下命令将创建一个名为“john”的新角色:
sudo su - postgres -c "createuser john"
-
创建新的 PostgreSQL 数据库
使用以下命令创建一个名为“johndb”的新数据库createdb
命令:
sudo su - postgres -c "createdb johndb"
-
授予权限
授予权限john
我们在上一步中创建的数据库上的用户连接到 PostgreSQL shell:
sudo -u postgres psql
并运行以下查询:
GRANT ALL PRIVILEGES ON DATABASE johndb TO john;
启用对 PostgreSQL 服务器的远程访问#
默认情况下,PostgreSQL 服务器仅侦听本地接口127.0.0.1
。要启用对 PostgreSQL 服务器的远程访问,请打开配置文件postgresql.conf
并添加listen_addresses = '*'
in the CONNECTIONS AND AUTHENTICATION
部分。
sudo vim /etc/postgresql/9.6/main/postgresql.conf
/etc/postgresql/9.6/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/9.6/main/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# The user jane will be able to access all databases from all locations using a 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 a 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 9 服务器上安装和配置 PostgreSQL。有关此主题的更多信息,请参阅PostgreSQL 文档
.
如果您有任何疑问,请在下面留言。