如何在Debian8上安装和使用PostgreSQL9.4

来自菜鸟教程
跳转至:导航、​搜索

介绍

关系数据库是满足多种需求的数据组织的基石。 他们为从网上购物到火箭发射的一切提供动力。 一个既受人尊敬但仍然在游戏中的数据库是 PostgreSQL。 PostgreSQL 遵循大部分 SQL 标准,具有 ACID 事务,支持外键和视图,并且仍在积极开发中。

如果您正在运行的应用程序需要稳定性、包质量和易于管理,那么 Debian 8(代号“Jessie”)是 Linux 发行版的最佳候选者之一。 它的运行速度比其他“发行版”要慢一些,但它的稳定性和质量是公认的。 如果您的应用程序或服务需要数据库,Debian 8 和 PostgreSQL 的组合是城里最好的之一。

在本文中,我们将向您展示如何在新的 Debian 8 Stable 实例上安装 PostgreSQL 并开始使用。

先决条件

首先是让 Debian 8 Stable 系统运行起来。 您可以按照 Initial Server Setup with Debian 8 一文中的说明进行操作。 本教程假设您已准备好 Debian 8 Stable Droplet。

除非另有说明,本教程中的所有命令都应以具有 sudo 权限的非 root 用户身份运行。 要了解如何创建用户并授予他们 sudo 权限,请查看 使用 Debian 8 进行初始服务器设置。

安装 PostgreSQL

在安装 PostgreSQL 之前,通过更新 apt 软件包列表,确保您拥有来自 Debian 存储库的最新信息:

sudo apt-get update

您应该会看到正在更新的软件包列表和以下消息:

Reading package lists... Done.

有几个以 postgresql 开头的包:

直接安装 postgresql-9.4 包:

sudo apt-get install postgresql-9.4 postgresql-client-9.4

询问时,键入 Y 以安装软件包。 如果一切顺利,现在可以从存储库下载包并进行安装。

检查安装

要检查 PostgreSQL 服务器是否已正确安装并正在运行,您可以使用命令 ps

# ps -ef | grep postgre

您应该在终端上看到类似这样的内容:

postgres 32164     1  0 21:58 ?        00:00:00 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/   postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf
postgres 32166 32164  0 21:58 ?        00:00:00 postgres: checkpointer process
postgres 32167 32164  0 21:58 ?        00:00:00 postgres: writer process
postgres 32168 32164  0 21:58 ?        00:00:00 postgres: wal writer process
postgres 32169 32164  0 21:58 ?        00:00:00 postgres: autovacuum launcher process
postgres 32170 32164  0 21:58 ?        00:00:00 postgres: stats collector process 

成功! PostgreSQL 已成功安装并正在运行。

访问 PostgreSQL 数据库

在 Debian 上,PostgreSQL 安装有一个默认用户和默认数据库,都称为 postgres。 要连接到数据库,首先需要在以 root 身份登录时发出以下命令,切换到 postgres 用户(这不适用于 sudo 访问):

su - postgres

您现在应该登录为 postgres。 要启动 PostgreSQL 控制台,请输入 psql

psql

完毕! 您应该登录到 PostgreSQL 控制台。 您应该看到以下提示:

psql (9.4.2)
Type "help" for help.

postgres=# 

要退出 psql 控制台,只需使用命令 \q

创建新角色

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

安装后,PostgreSQL 设置为使用“ident”身份验证,这意味着它将 PostgreSQL 角色与匹配的 Unix/Linux 系统帐户相关联。 如果存在 PostgreSQL 角色,则可以通过登录关联的 Linux 系统帐户来登录。

安装过程创建了一个名为 postgres 的用户帐户,该帐户与默认 Postgres 角色相关联。

要创建其他角色,我们可以使用 createuser 命令。 请注意,此命令应该以用户 postgres 的身份发出,而不是在 PostgreSQL 控制台内:

createuser --interactive

这基本上是一个交互式 shell 脚本,它调用正确的 PostgreSQL 命令来根据您的规范创建用户。 它会问你一些问题:角色的名称,是否应该是超级用户,角色是否应该能够创建新数据库,以及角色是否能够创建新角色。 man 页面有更多信息:

man createuser

创建新数据库

默认情况下,PostgreSQL 设置有匹配系统帐户请求的身份验证角色。 (您可以在 postgresql.org 获得更多信息)。 它还假设存在一个匹配的数据库供角色连接。 因此,如果我有一个名为 test1 的用户,默认情况下,该角色将尝试连接到名为 test1 的数据库。

您可以通过简单地以 postgres 用户身份调用此命令来创建适当的数据库:

createdb test1

新数据库 test1 现在已创建。

使用新用户连接到 PostgreSQL

假设您有一个名为 test1 的 Linux 帐户,创建了一个 PostgreSQL test1 角色来匹配它,并创建了数据库 test1。 将 Linux 中的用户帐户更改为 test1

su - test1

然后,使用以下命令以 test1 PostgreSQL 角色连接到 test1 数据库:

psql

现在您应该会看到新创建的用户 test1 而不是 postgres 的 PostgreSQL 提示。

创建和删除表

现在您已经知道如何连接到 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 中了解有关如何在 Postgres 中创建和管理表的更多信息如何在云服务器上的 PostgreSQL 中创建、删除和管理表文章。

出于我们的目的,我们将创建一个像这样的简单表:

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 开始。 此数据类型是一个自动递增的整数。 我们为该列提供了主键约束,这意味着值必须是唯一的且不能为空。

对于我们的两列,我们没有给出字段长度。 这是因为某些列类型不需要设置长度,因为类型隐含了长度。

然后我们给出设备类型和颜色的列,每个都不能为空。 然后,我们创建一个位置列并创建一个约束,要求该值是八个可能值之一。 最后一列是日期列,记录了我们安装设备的日期。

要查看这些表,请在 psql 提示符下使用命令 \dt。 结果将类似于

             List of relations
 Schema |    Name    | Type  |  Owner 
--------+------------+-------+----------
 public | playground | table | postgres

如您所见,我们有我们的游乐场桌。

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

现在我们已经创建了一个表,我们可以在其中插入一些数据。

让我们添加一个幻灯片和一个秋千。 为此,我们调用要添加的表,命名列,然后为每列提供数据。 我们的幻灯片和摆动可以这样添加:

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

在这里,你可以看到我们的equip_id已经填写成功,并且我们所有的其他数据都已经组织好了。 如果我们的幻灯片中断了,并且我们将其从操场上删除,我们还可以通过键入以下内容从表格中删除该行:

DELETE FROM playground WHERE type = 'slide';

如果我们再次查询我们的表:

SELECT * FROM playground;

我们将看到我们的幻灯片不再是表格的一部分:

 equip_id | type  | color | location | install_date 
----------+-------+-------+----------+--------------
        1 | slide | blue  | south    | 2014-04-28

有用的命令

以下是一些可以帮助您了解当前环境的命令:

  • ?:获取 psql 命令的完整列表,包括此处未列出的命令。
  • \h:获取有关 SQL 命令的帮助。 您可以使用特定命令遵循此命令以获取语法帮助。
  • \q:退出psql程序并退出到Linux提示符。
  • \d:列出当前数据库中可用的表、视图和序列。
  • \du:列出可用角色
  • \dp:列出访问权限
  • \dt:列出表格
  • \l:列出数据库
  • \c:连接到不同的数据库。 后面跟数据库名称。
  • \password:更改后面用户名的密码。
  • \conninfo:获取当前数据库和连接的信息。

使用这些命令,您应该能够立即导航 PostgreSQL 数据库、表和角色。

结论

您现在应该在您的 Debian 系统上启动并运行一个功能齐全的 PostgreSQL 数据库。 恭喜! 这里有大量的文档可供参考:

  • PostgreSQL 手册
  • 安装包postgresql-docsudo apt-get install postgresql-doc
  • README 文件安装在 /usr/share/doc/postgresql-doc-9.4/tutorial/README

有关 PostgreSQL 中支持的 SQL 命令的完整列表,请点击此链接:

要比较数据库的不同功能,您可以查看:

要更好地理解角色和权限,请参阅: