在Ubuntu 16.04上安装和使用PostgreSQL的方法

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 在Ubuntu 16.04上安装和使用PostgreSQL的方法

简介

关系数据库管理系统是许多网站和应用程序的关键组件。它们提供了一种结构化的方式来存储、组织和访问信息。

PostgreSQL,或者简称 Postgres,是一种关系数据库管理系统,提供了 SQL 查询语言的实现。它是许多小型和大型项目的热门选择,并且具有符合标准和许多高级功能的优势,如可靠的事务和并发性而无需读取锁定。

在本指南中,我们将演示如何在 Ubuntu 16.04 VPS 实例上安装 Postgres,并介绍一些基本的使用方法。

安装

Ubuntu 的默认软件仓库包含了 Postgres 软件包,因此我们可以使用 apt 软件包管理系统轻松安装这些软件。

由于这是我们在本次会话中第一次使用 apt,我们需要刷新本地软件包索引。然后我们可以安装 Postgres 软件包和一个 -contrib 软件包,它添加了一些额外的实用工具和功能:

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

现在我们的软件已安装完成,我们可以了解它的工作原理以及它与您可能使用过的类似数据库管理系统有何不同。

使用 PostgreSQL 角色和数据库

默认情况下,Postgres 使用一个称为 “角色” 的概念来处理身份验证和授权。在某些方面,这与常规的 Unix 风格帐户类似,但 Postgres 不区分用户和组,而是更倾向于更灵活的术语 “角色”。

在安装后,Postgres 被设置为使用 ident 身份验证,这意味着它将 Postgres 角色与匹配的 Unix/Linux 系统帐户关联起来。如果一个角色在 Postgres 中存在,具有相同名称的 Unix/Linux 用户名将能够以该角色登录。

有几种方法可以利用这个帐户来访问 Postgres。

切换到 postgres 帐户

安装过程创建了一个名为 postgres 的用户帐户,该帐户与默认的 Postgres 角色关联。为了使用 Postgres,我们可以登录到该帐户。

通过输入以下命令在服务器上切换到 postgres 帐户:

sudo -i -u postgres

现在您可以立即通过输入以下命令访问 Postgres 提示符:

psql

您将被登录并能够立即与数据库管理系统交互。

通过输入以下命令退出 PostgreSQL 提示符:

\q

您现在应该回到 postgres Linux 命令提示符。

在不切换帐户的情况下访问 Postgres 提示符

您也可以直接使用 sudopostgres 帐户运行您想要的命令。

例如,在上一个示例中,我们只是想要进入 Postgres 提示符。我们可以通过以下方式一步到位地以 postgres 用户使用 sudo 运行单个命令 psql

sudo -u postgres psql

这将直接将您登录到 Postgres,而不需要中间的 bash shell。

同样,您可以通过输入以下命令退出交互式的 Postgres 会话:

\q

创建新角色

目前,我们只配置了数据库中的 postgres 角色。我们可以使用 createrole 命令从命令行创建新角色。--interactive 标志将提示您输入必要的值。

如果您以 postgres 帐户登录,您可以通过输入以下命令创建新用户:

createuser --interactive

如果您更喜欢在不切换到正常帐户的情况下为每个命令使用 sudo,您可以输入以下命令:

sudo -u postgres createuser --interactive

该脚本将根据您的响应提示您进行一些选择,并根据您的响应执行正确的 Postgres 命令以创建符合您要求的用户。

输入要添加的角色名称:sammy
新角色是否为超级用户?(y/n) y

您可以通过传递一些额外的标志来获得更多控制。通过查看 man 页面上的选项来了解更多信息:

man createuser

创建新数据库

默认情况下,Postgres 身份验证系统假设将有一个与用于登录的角色同名的数据库,并且该角色可以访问该数据库。

因此,如果在上一节中,我们创建了一个名为 sammy 的用户,该角色将尝试连接到一个默认情况下也称为 sammy 的数据库。您可以使用 createdb 命令创建相应的数据库。

如果您以 postgres 帐户登录,您将输入类似以下内容的命令:

createdb sammy

如果您更喜欢在不切换到正常帐户的情况下为每个命令使用 sudo,您将输入以下命令:

sudo -u postgres createdb sammy

用新角色打开 Postgres 提示符

要使用 ident 基于身份验证登录,您需要一个与您的 Postgres 角色和数据库名称相同的 Linux 用户。

如果您没有匹配的 Linux 用户可用,可以使用 adduser 命令创建一个。您需要使用具有 sudo 权限的帐户执行此操作(不要使用 postgres 用户登录):

sudo adduser sammy

一旦您有了适当的帐户,您可以通过以下方式切换并连接到数据库:

sudo -i -u sammy
psql

或者,您可以内联执行:

sudo -u sammy psql

假设所有组件都已正确配置,您将自动登录。

如果要让用户连接到不同的数据库,可以通过以下方式指定数据库:

psql -d postgres

登录后,您可以通过输入以下内容检查当前连接信息:

\conninfo
您已连接到位于“/var/run/postgresql”套接字上端口“5432”的数据库“sammy”作为用户“sammy”。

如果您连接到非默认数据库或使用非默认用户,这可能很有用。

创建和删除表

现在您知道如何连接到 PostgreSQL 数据库系统,我们可以讨论如何完成一些基本任务。

首先,我们可以创建一个表来存储一些数据。让我们创建一个描述游乐场设备的表。

此命令的基本语法如下:

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

如您所见,我们为表指定了一个名称,然后定义了我们想要的列,以及列类型和字段数据的最大长度。我们还可以为每个列可选地添加表约束。

您可以在此处了解有关如何在 Postgres 中创建和管理表的更多信息。

对于我们的目的,我们将创建一个类似于以下内容的简单表:

CREATE TABLE playground (
    equip_id serial PRIMARY KEY,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
    install_date date
);

我们创建了一个游乐场表,用于列出我们拥有的设备。这始于一个设备 ID,它是 serial 类型。此数据类型是自增整数。我们为此列添加了 primary key 约束,这意味着值必须是唯一且非空。

对于我们的两个列(equip_idinstall_date),我们没有指定字段长度。这是因为某些列类型不需要设置长度,因为长度由类型隐含确定。

然后,我们为设备的 typecolor 创建了列,每个列都不能为空。我们创建了一个 location 列,并创建了一个约束,要求值必须是八个可能值之一。最后一列是一个记录我们安装设备日期的日期列。

我们可以通过输入以下内容查看我们的新表:

\d
List of relations
 Schema |          Name           |   Type   | Owner 
--------+-------------------------+----------+-------
 public | playground              | table    | sammy
 public | playground_equip_id_seq | sequence | sammy
(2 rows)

我们的游乐场表在这里,但我们还有一个名为 playground_equip_id_seq 的东西,它是 sequence 类型。这是我们给 equip_id 列的 serial 类型的表示。这会跟踪序列中的下一个数字,并且会自动为此类型的列创建。

如果要仅查看表而不包括序列,可以输入:

\dt
List of relations
 Schema |    Name    | Type  | Owner 
--------+------------+-------+-------
 public | playground | table | sammy
(1 row)

在表中添加、查询和删除数据

现在我们有了一个表,我们可以向其中插入一些数据。

让我们添加一个滑梯和一个秋千。我们可以通过调用我们要添加的表,命名列,然后为每个列提供数据来添加我们的滑梯和秋千:

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

在输入数据时,应注意避免一些常见的问题。首先,请记住列名称不应带引号,但您输入的列需要带引号。

另一件事需要注意的是,我们不为 equip_id 列输入值。这是因为每当在表中创建新行时,此列会自动生成。

然后,我们可以通过输入以下内容获取我们添加的信息:

SELECT * FROM playground;
equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        1 | slide | blue   | south     | 2014-04-28
        2 | swing | yellow | northwest | 2010-08-16
(2 rows)

在这里,您可以看到我们的 equip_id 已成功填充,并且我们的其他所有数据都已正确组织。

如果游乐场的滑梯坏了,我们必须将其移除,我们也可以通过输入以下内容从表中删除行:

DELETE FROM playground WHERE type = 'slide';

如果再次查询我们的表,我们将看到我们的滑梯不再是表的一部分:

SELECT * FROM playground;
equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        2 | swing | yellow | northwest | 2010-08-16
(1 row)

如何向表中添加和删除列

如果我们想在创建表之后修改表以添加额外的列,我们可以很容易地实现这一点。

我们可以通过输入以下命令来添加一个列,以显示每个设备的最后一次维护访问日期:

ALTER TABLE playground ADD last_maint date;

如果再次查看表信息,您将看到新列已经添加(但尚未输入数据):

SELECT * FROM playground;
equip_id | type  | color  | location  | install_date | last_maint 
----------+-------+--------+-----------+--------------+------------
        2 | swing | yellow | northwest | 2010-08-16   | 
(1 row)

我们同样可以轻松地删除一列。如果我们发现我们的工作人员使用单独的工具来跟踪维护历史记录,我们可以通过输入以下命令在这里删除该列:

ALTER TABLE playground DROP last_maint;

如何在表中更新数据

我们知道如何向表中添加记录和删除记录,但我们还没有涉及如何修改现有条目。

您可以通过查询要更新的记录并将列设置为所需值来更新现有条目的值。我们可以查询“swing”记录(这将匹配表中的每个秋千),并将其颜色更改为“红色”。如果我们给秋千设置了油漆,这可能会很有用:

UPDATE playground SET color = 'red' WHERE type = 'swing';

我们可以通过再次查询我们的数据来验证操作是否成功:

SELECT * FROM playground;
equip_id | type  | color | location  | install_date 
----------+-------+-------+-----------+--------------
        2 | swing | red   | northwest | 2010-08-16
(1 row)

如您所见,我们的秋千现在被注册为红色。

结论

您现在已经在您的 Ubuntu 16.04 服务器上设置了 PostgreSQL。然而,Postgres 还有更多值得学习的地方。以下是一些涵盖如何使用 Postgres 的更多指南:

  • 关系数据库管理系统的比较
  • 学习如何创建和管理 Postgres 表
  • 更好地管理角色和权限
  • 使用 Select 在 Postgres 中编写查询
  • 学习如何保护 PostgreSQL
  • 学习如何备份 Postgres 数据库


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3月前
|
Ubuntu 关系型数据库 数据库
在Ubuntu 18.04上安装和使用PostgreSQL的方法
在Ubuntu 18.04上安装和使用PostgreSQL的方法
62 1
|
3月前
|
Ubuntu 关系型数据库 Linux
在Ubuntu 14.04上安装和使用PostgreSQL的方法
在Ubuntu 14.04上安装和使用PostgreSQL的方法
47 1
|
3月前
|
SQL 关系型数据库 Linux
在CentOS 6上安装和使用PostgreSQL的方法
在CentOS 6上安装和使用PostgreSQL的方法
40 2
|
3月前
|
关系型数据库 Linux 数据库
在CentOS 7上安装和使用PostgreSQL的方法
在CentOS 7上安装和使用PostgreSQL的方法
279 0
|
3月前
|
SQL 关系型数据库 Linux
如何在 Debian 8 上安装和使用 PostgreSQL 9
如何在 Debian 8 上安装和使用 PostgreSQL 9
51 0
|
6月前
|
SQL 关系型数据库 数据库
如何在 Debian 12 上安装 PostgreSQL?
【4月更文挑战第25天】
647 0
|
SQL 关系型数据库 Linux
【PostgreSQL】基于CentOS系统安装PostgreSQL数据库
【PostgreSQL】基于CentOS系统安装PostgreSQL数据库
931 0
|
Ubuntu 关系型数据库 PostgreSQL
在ubuntu上安装postgresql 12
登录到postgresql的官方网站,选择相应的版本
405 0
|
Ubuntu 关系型数据库 网络安全
Ubuntu下安装Postgresql
Ubuntu22.04下安装Postgresql14
1604 0
|
Ubuntu 关系型数据库 PostgreSQL
PostgreSQL Ubuntu版安装教程
PostgreSQL Ubuntu版安装教程
244 0