Ubuntu Server 20.04 LTS 安装配置 PostgreSQL

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云防火墙,500元 1000GB
简介: 本节我们学习 Ubuntu Server 20.04 LTS 环境安装配置 PostgreSQL 数据库,并讲解 psql 的一些常用命令,分别介绍 pgsql 的两种安装方式,以及角色&身份认证方式和远程访问配置等相关操作...

环境准备

上面一篇文章 我们讲解了在 Windows 环境上面安装 PostgreSQL 的简单介绍,准备环境基本一样。

image.png

此处我们安装系统环境是 linux for ubuntu,所以选择 linux 进入页面,如下所示:

image.png

Ubuntu Server 安装 PostgerSQL

PostgreSQL 可以从 Ubuntu 主存储库中获取。然而,和许多其它开发工具一样,它可能不是最新版本。

首先在 shell 终端中使用 apt 命令检查 Ubuntu 存储库中可用的 PostgreSQL 版本:

sudo apt show postgresql 

image.png

在我的 Ubuntu 20.04 中,它显示 PostgreSQL 的可用版本是 12(12+214 表示版本 12)PostgreSQL 版本 13.x 已经发布。

PostgreSQL 软件发布:2020-09-24

  • PostgreSQL 全球开发组今天宣布 PostgreSQL 13 正式发布, 作为世界上最先进的开源数据库,PostgresSQL 13 是目前的最新版本。
  • PostgreSQL 13 在索引和查找方面进行了重大改进,有利于大型数据库系统,同时包括索引的空间节省和性能提高,使用聚合或分区的查询时的更快响应,使用增强的统计信息时更优化的查询计划,以及很多其他改进。
  • PostgreSQL 13 除了具有强烈要求的功能(如并行清理和增量排序)外,还为不同大小的负载提供了更好的数据管理体验。此版本针对日常管理进行了优化,为应用程序开发人员提供了更多便利,并增强了安全性。
  • "PostgreSQL 13 展示了我们全球社区在增强世界上最先进的开源关系数据库功能方面的协作和奉献精神。"PostgreSQL 核心团队成员 Peter Eisentraut 说, "每个发行版所带来的创新以及其在可靠性和稳定性方面的声誉,这是为什么越来越多的人选择在其应用程序中使用 PostgreSQL 的原因"。
  • PostgreSQL 是一种创新的数据管理系统,以其可靠性和健壮性著称,得益于全球开发者社区 超过25年的开源开发,它已成为各种规模组织首选的开源关系型数据库。

更多 PostgreSQL 13 发布相关信息请查看 =》

根据这些信息,你可以自主决定是安装 Ubuntu 提供的版本还是还是获取 PostgreSQL 的最新发行版。

方法一:通过 Ubuntu 存储库安装 PostgreSQL

shell 终端中采用如下命令安装:

sudo apt update
sudo apt install postgresql postgresql-contrib

根据提示输入你的密码,依据于你的网速情况,程序将在几秒到几分钟安装完成。说到这一点,随时检查 Ubuntu 中的各种网络带宽

什么是 postgresql-contrib ?

  • postgresql-contrib 或者说 contrib 包,包含一些不属于 PostgreSQL 核心包的实用工具和功能。在大多数情况下,(推荐)最好将 contrib 包与 PostgreSQL 核心一起安装。

方法二:在 Ubuntu 中安装最新版本的 PostgreSQL 13.x

要安装 PostgreSQL 13,你需要在 sources.list 中添加官方 PostgreSQL 存储库和证书,然后从那里安装它。

不用担心,这并不复杂。 只需按照以下步骤:

# 1.创建文件库配置 / Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
 
# 2.导入仓库签名密钥(GPG 密钥) / Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
 
# 3.更新套餐列表 / Update the package lists:
sudo apt update
 
# 4.安装最新版本的 PostgreSQL / Install the latest version of PostgreSQL.
# 如果您想要特定的版本,请使用‘PostgreSQL-12’或类似版本代替‘PostgreSQL’ / If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
sudo apt -y install postgresql

打印版本信息验证安装

一旦安装完成, PostgreSQL 服务将会自动启动。使用 psql 工具通过连接 PostgreSQL 数据库并且打印它的版本来验证安装:

sudo -u postgres psql -c "SELECT version();"

输出如下信息:

image.png

看到如上信息,说明 PostgreSQL 就已经安装好了,你可以开始使用它了。

PostgreSQL GUI 应用程序/客户端管理界面

你也可以安装用于管理 PostgreSQL 数据库的 GUI 应用程序(pgAdmin):

sudo apt install pgadmin4

PostgreSQL 角色和身份认证方式

说明: PostgreSQL 数据库访问权限是通过角色来处理的。一个角色代表一个数据库用户或者一个数据库用户组。

PostgreSQL 支持多种身份认证方式。最常用的方法如下:

  • Trust - 只要满足 pg_hba.conf 定义的条件,一个角色就可以不使用密码就能连接服务器。
  • Password - 通过密码,一个角色可以连接服务器。密码可以被存储为 scram-sha-256、md5 和password(明文)
  • Ident - 仅仅支持 TCP/IP 连接。它通常通过一个可选的用户名映射表,获取客户端操作系统用户名。
  • Peer - 和 Ident 一样,仅仅支持本地连接。

PostgreSQL 客户端身份验证通常被定义在 pg_hba.conf 文件中。默认情况下,对于本地连接,PostgreSQL 被设置成身份认证防范 peer

两种方式访问 PostgreSQL 服务器

  • 为了以 postgres 用户身份登录 PostgreSQL 服务器,首先切换用户,然后使用 psql 工具访问 PostgreSQL
# 切换用户
sudo su - postgres
# 进入 PostgreSQL Shell
psql
# 退出 PostgreSQL Shell
\q
  • 你也可以不切换用户,而使用 sudo 命令访问 PostgreSQL
sudo -u postgres psql
注意:通常 postgres 用户仅应用于本地使用,正式生产环境可以使用 postgres 账户重新创建账户,授权角色信息并指定 db 数据库;

PostgreSQL 其他命令

你可以通过执行命令来检查 PostgreSQL 是否正在运行,命令操作如下:

service postgresql status

image.png

通过 service 命令,你可以启动、关闭或重启 postgresql。输入 service postgresql 并按回车将列出所有选项。

swskj@swskj-server:~$ service postgresql
Usage: /etc/init.d/postgresql {start|stop|restart|reload|force-reload|status} [version ..]

默认情况下,PostgreSQL 会创建一个拥有所权限的特殊用户 postgres

要实际使用 PostgreSQL,你必须先登录该账户,执行如下命令:

sudo su postgres

此时提示符会更改为类似于以下的内容:

登录 postgres 账户

现在,使用 psql 命令来启动 PostgreSQL Shell,会显示 postgress=# 提示符,如下所示:

image.png

psql 基本命令说明:

  • 输入 \q 以退出;
  • 输入 \? 获取帮助;
  • 输入 \l 列出所有列表;

image.png

查看 psql 工具命令帮助=> \?

image.png

你可以使用以下命令更改任何用户(包括 postgres)的密码:

ALTER USER postgres WITH PASSWORD 'my_password';
注意:将 postgres 替换为你要更改的用户名, my_password 替换为所需要的密码。另外,不要忘记每条命令后面的 “;”(分号)。

建议你另外创建一个用户(不建议使用默认的 postgres 用户)。为此,请使用以下命令:

CREATE USER my_user WITH PASSWORD 'my_password';

刚创建的 my_user 用户没有任何的属性。给它添加超级用户权限:

ALTER USER my_user WITH SUPERUSER;

输入 \du 命令查看 PostgreSQL 用户:

image.png

如果创建的用户不想使用,可以使用 DROP 命令删除用户:

DROP USER my_user;

要使用其他用户登录,使用 \q 命令退出,然后使用以下命令登录:

psql -U my_user

还可以使用 -d 参数直接连接数据库:

psql -U my_user -d my_db

你可以使用其他已存在的用户调用 PostgreSQL

例如,我使用 ubuntu 登录,从 shell 终端执行以下命名:

psql -U ubuntu -d postgres
注意:你必须指定一个数据库(默认情况下,它将尝试将你连接到与登录的用户名相同的数据库)。

如果遇到如下错误:

psql: FATAL:  Peer authentication failed for user "my_user"

确保以正确的用户身份登录,并使用管理员权限编辑 /etc/postgresql/13/main/pg_hba.conf

sudo vim /etc/postgresql/13/main/pg_hba.conf
注意:用你的版本替换 13(例如 12)。

对如下所示的一行进行替换:

local   all             postgres                                peer

替换为:

local   all             postgres                                md5

替换完成后(保存退出编辑),然后重启 PostgreSQL 使配置信息生效:

sudo service postgresql restart

安装完成后查询相关的包,命令操作如下:

dpkg -l|grep postg 

image.png

以非管理员账户查看:

image.png

psql 控制台命令:除了前面已经用到的 \password 命令(设置密码)和 \q 命令(退出)以外,控制台还提供一系列其他命令。

\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。

创建 PostgreSQL 角色和数据库

  • 仅仅超级用户和拥有 CREATEROLE 权限的角色可以创建新角色。

在下面的例子中,我们创建一个名称为 john 的角色,一个名称为 johndb 的数据库,并且授予该数据库上的权限:

# 1.创建一个新的 PostgreSQL 角色
sudo su - postgres -c "createuser john"
# 2.创建一个新的 PostgreSQL 数据库
sudo su - postgres -c "createdb johndb"
# 3.授权用户操作数据库,连接到 PostgreSQL shell
sudo -u postgres psql
# 4.运行下面的 query
grant all privileges on database johndb to john;

启用远程访问 PostgreSQL 服务器

说明:默认情况下, PostgreSQL 服务器仅仅监听本地网络接口: 127.0.0.1

编辑【postgresql.conf】文件,配置 PostgreSQL 服务器允许远程访问

为了允许远程访问你的 PostgreSQL 服务器,打开配置文件【postgresql.conf】并且在【CONNECTIONS AND AUTHENTICATION】一节添加【listen_addresses = '*'】。

查看【postgresql.conf】配置信息,命令操作如下:

sudo nano /etc/postgresql/12/main/postgresql.conf

显示如下信息:

image.png

按键盘【上↑下↓箭头】滑动配置文本,并且在【CONNECTIONS AND AUTHENTICATION】一节添加【listen_addresses = '*'】。

image.png

保存修改文件,选择【Y/Yes】按【Enter】推出,并且重启 PostgreSQL 服务:

sudo service postgresql restart

使用 ss 工具验证上述配置修改是否生效:

ss -nlt | grep 5432

输出显示 PostgreSQL 服务器正在监听所有的网络接口(0.0.0.0),显示如下信息:

image.png

编辑【pg_hba.conf】文件,配置 PostgreSQL 服务器接受远程连接

下面是一些例子,显示不同的用户场景:

# 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

配置防火墙开放 PostgreSQL 服务器默认端口【5432】

假设你正在使用【UFW/Ubuntu 防火墙】来管理你的防火墙,并且你想允许从【192.168.1.0/24】子网过来的访问,你应该运行下面的命令:

sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432

此处环境配置的子网掩码是【255.255.0.0/16】所以执行如下命令,这里根据自己实际网络环境配置处理。

image.png

确保你的防火墙被配置好,并仅仅接受来自受信任 IP 范围的连接。

以上就是 ubuntu server 20.04 lts 服务器环境安装和配置 postgresql 的简单介绍,欢迎更多的小伙伴安装尝试。

关于【pgsql 12.6.x】更多信息,请查看文档 =》PostgreSQL: Documentation: 12: PostgreSQL 12.6 Documentation

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
2月前
|
Ubuntu 开发者 Python
|
1月前
|
存储 Kubernetes Ubuntu
Ubuntu 22.04LTS版本二进制部署K8S 1.30+版本
这篇文章详细介绍了在Ubuntu 22.04 LTS系统上使用VMware Fusion虚拟化软件部署Kubernetes 1.30+版本的完整过程,包括环境准备、安装containerd、配置etcd、生成证书、部署高可用组件、启动Kubernetes核心组件以及网络插件的部署和故障排查。
67 4
|
1月前
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
50 3
|
1月前
|
Ubuntu 开发工具 虚拟化
MacOS系统基于VMware Fusion配置Ubuntu 22.04LTS环境
这篇文章介绍了如何在MacOS系统上使用VMware Fusion虚拟化软件配置Ubuntu 22.04 LTS环境,包括自定义VMware Fusion网段、Ubuntu系统安装、配置root用户登录、设置静态IP地址、修改默认网卡名称、配置PS1变量、设置登录界面为字符界面、修改软件源和进行vim基础优化等步骤。
109 2
|
2月前
|
Ubuntu 安全 Linux
Windows——安装Ubuntu 18.04 LTS
Windows——安装Ubuntu 18.04 LTS
41 1
Windows——安装Ubuntu 18.04 LTS
|
2月前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu server连接wifi教程
本文提供了一个简化Ubuntu Server在Raspberry Pi系统上配置过程的脚本"config_ubuntu_server",包括自动和手动两种方法来设置root权限、SSH配置,并连接WiFi,同时支持无密码SSH访问,适合初学者和高级用户。
52 3
|
3月前
|
监控 Ubuntu 安全
|
2月前
|
Ubuntu 关系型数据库 数据库
在Ubuntu 18.04上安装和使用PostgreSQL的方法
在Ubuntu 18.04上安装和使用PostgreSQL的方法
40 1
|
2月前
|
Ubuntu 关系型数据库 Linux
在Ubuntu 14.04上安装和使用PostgreSQL的方法
在Ubuntu 14.04上安装和使用PostgreSQL的方法
21 1
|
2月前
|
存储 Ubuntu 关系型数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
20 1
下一篇
无影云桌面