PostgreSQL 或 Postgres 是一个开源通用对象关系数据库管理系统,具有许多高级功能,允许您构建容错环境或复杂应用程序。
在本教程中,我们将介绍如何在 Ubuntu 20.04 上安装 PostgreSQL 数据库服务器,并探讨 PostgreSQL 数据库管理的基本知识。
先决条件
为了能够安装包,您需要以 root 或用户状态登录,并具有sudo 权限。
在 Ubuntu 上安装 PostgreSQL
在撰写本文时,从官方 Ubuntu 存储库提供的最新版本的 PostgreSQL 是 PostgreSQL 版本 10.4。
运行以下命令在 Ubuntu 上安装 PostgreSQL 服务器:
sudo apt update
sudo apt install postgresql postgresql-contrib
我们还安装了 PostgreSQL 属性包,该包为 PostgreSQL 数据库系统提供了几个附加功能。
安装完成后,PostgreSQL 服务将自动启动。使用该工具通过连接到 PostgreSQL 数据库服务器并打印其版本来验证安装:psql
sudo -u postgres psql -c "SELECT version();"
PostgreSQL 12.2 (Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-8ubuntu1) 9.3.0, 64-bit
就是这样。PostgreSQL 已安装完毕,您可以开始使用它。
PostgreSQL 角色和身份验证方法
PostgreSQL 中的数据库访问权限使用角色的概念进行处理。角色可以表示数据库用户或一组数据库用户。
PostgreSQL 支持多种身份验证方法。最常用的方法是:
- 信任 – 只要满足 中定义的条件,角色就可以在没有密码的情况下进行连接。pg_hba.conf
- 密码 – 角色可以通过提供密码进行连接。密码可以存储为 和 (明文)。scram-sha-256md5password
- 标识 – 仅支持 TCP/IP 连接。它通过获取客户端的操作系统用户名,以及可选的用户名映射来工作。
- 对等体 – 与标识相同,但仅在本地连接上支持它。
PostgreSQL 客户端身份验证在名为 的配置文件中定义。默认情况下,PostgreSQL 使用对等身份验证方法进行本地连接。pg_hba.conf
安装 PostgreSQL 时,将自动创建用户。此用户是 PostgreSQL 实例的超级用户,它等效于 MySQL 根用户。postgres
若要以用户状态登录到 PostgreSQL 服务器,请先切换到用户,然后使用实用程序访问 PostgreSQL 提示:postgrespsql
sudo su - postgres
psql
从这里,您可以与您的 PostgreSQL 实例进行交互。要退出 PostgreSQL 外壳类型:
\q
在不切换用户的情况下访问 PostgreSQL 提示符的另一种方法是使用sudo命令:
sudo -u postgres psql
通常,应仅从本地主机登录到数据库服务器。postgres
创建 PostgreSQL 角色和数据库
只有具有特权的超级用户和角色才能创建新角色。CREATEROLE
下面的示例演示如何创建名为名为数据库的新角色,并授予数据库的权限:johnjohndb
- 创建新的 PostgreSQL 角色:sudo su – postgres -c “createuser john”
- 创建新的 PostgreSQL 数据库:sudo su – postgres -c “createdb johndb”
若要向数据库上的用户授予权限,请连接到 PostgreSQL 外壳:
sudo -u postgres psql
并运行以下查询:
grant all privileges on database johndb to john;
启用对 PostgreSQL 服务器的远程访问
默认情况下,PostgreSQL 服务器仅在本地接口 () 上侦听。127.0.0.1
若要启用对 PostgreSQL 服务器的远程访问,请打开配置文件并添加到该部分。postgresql.conflisten_addresses = ‘*’CONNECTIONS AND AUTHENTICATION
sudo nano /etc/postgresql/12/main/postgresql.conf
/etc/postgresql/12/主/后格雷斯克尔.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
输出显示 PostgreSQL 服务器正在侦听所有接口 ():0.0.0.0
LISTEN 0 244 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 244 [::]:5432 [::]:*
下一步是通过编辑文件将服务器配置为接受远程连接。pg_hba.conf
下面是一些显示不同用例的示例:
/etc/postgresql/12/主/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# The user jane can access all databases from all locations using md5 password
host all jane 0.0.0.0/0 md5
# The user jane can access only the janedb from all locations using md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane can access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust
最后一步是打开防火墙中的端口。5432
假设您使用UFW来管理防火墙,并且希望允许从子网进行访问,则运行以下命令:192.168.1.0/24
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432
确保防火墙配置为仅接受来自受信任 IP 范围的连接。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun35809.html