Ubuntu Server 20.04 LTS 安装配置 PostgreSQL

简介: 本节我们学习 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
5月前
|
人工智能 Ubuntu 前端开发
Dify部署全栈指南:AI从Ubuntu配置到HTTPS自动化的10倍秘籍
本文档介绍如何部署Dify后端服务及前端界面,涵盖系统环境要求、依赖安装、代码拉取、环境变量配置、服务启动、数据库管理及常见问题解决方案,适用于开发与生产环境部署。
1219 1
|
6月前
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
7月前
|
Ubuntu 安全 Docker
Ubuntu Server上安装配置Docker的详细步骤
如果一切设置正确,这将下载一个测试镜像,并在容器中运行它,打印一条问候消息。
1006 76
|
5月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
350 18
|
5月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
503 17
|
5月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
581 7
|
6月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
444 16
|
5月前
|
消息中间件 人工智能 运维
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
1103 6
|
6月前
|
缓存 监控 Ubuntu
在Ubuntu 16.04上配置GitLab Runner以激活GitLab CI/CD流程
完成以上步骤后,每当代码被推送到远端仓库中相对应分支上时,GitLb CI / CD 流水线就会自动触发,并由之前注册好了 GitLb runner 的机器去完成定义好了 ` .gitlabcicd.yml ` 文件里面定义好各种任务(如编译测试部署等).
327 13
|
6月前
|
XML Ubuntu Java
如何在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
进入包含 build.xml 的目录并执行:
303 13