如何在 Debian 8 上安装和利用 PostgreSQL 9.4

打印 上一主题 下一主题

主题 523|帖子 523|积分 1573

前些天发现了一个巨牛的人工智能学习网站,普通易懂,风趣幽默,忍不住分享一下给各人。点击跳转到网站。
简介

关系型数据库是满意多种需求的数据构造的基石。它们支持从在线购物到火箭发射等各种应用。PostgreSQL 是一种历史久长但仍旧活跃的数据库,它遵循大部分 SQL 标准,支持 ACID 事务,支持外键和视图,而且仍在积极开发中。
假如你运行的应用程序需要稳定性、软件包质量和简朴的管理,Debian 8(代号“Jessie”)是 Linux 发行版中最佳的选择之一。它的更新速度比其他“发行版”慢一些,但其稳定性和质量得到了广泛认可。假如你的应用程序或服务需要数据库,Debian 8 和 PostgreSQL 的组合是最佳选择之一。
本文将向您展示如何在新的 Debian 8 Stable 实例上安装 PostgreSQL 并开始利用。
先决条件

首先要做的是启动 Debian 8 Stable 体系。你可以按照《利用 Debian 8 举行初始服务器设置》中的阐明举行操作。本教程假设你已经准备好了一个 Debian 8 Stable Droplet。
除非另有阐明,本教程中的所有命令都应该以具有 sudo 权限的非 root 用户身份运行。要了解如何创建用户并授予他们 sudo 权限,请检察《利用 Debian 8 举行初始服务器设置》。
安装 PostgreSQL

在安装 PostgreSQL 之前,请确保通过以下命令更新 apt 软件包列表,以获取来自 Debian 软件仓库的最新信息:
  1. sudo apt-get update
复制代码
你应该看到软件包列表正在更新,并出现以下消息:
  1. Reading package lists... Done.
复制代码
有几个以 postgresql 开头的软件包:


  • postgresql-9.4:PostgreSQL 服务器软件包
  • postgresql-client-9.4:PostgreSQL 客户端
  • postgresql:Debian 手册或 Debian 新维护者指南中更好表明的“元软件包”
要直接安装 postgresql-9.4 软件包:
  1. sudo apt-get install postgresql-9.4 postgresql-client-9.4
复制代码
在提示时,输入 Y 安装软件包。假如一切顺利,软件包如今已从软件仓库下载并安装。
查抄安装

要查抄 PostgreSQL 服务器是否正确安装并正在运行,可以利用 ps 命令:
  1. ps -ef | grep postgre
复制代码
你应该在终端上看到雷同以下内容:
  1. 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
  2. postgres 32166 32164  0 21:58 ?        00:00:00 postgres: checkpointer process
  3. postgres 32167 32164  0 21:58 ?        00:00:00 postgres: writer process
  4. postgres 32168 32164  0 21:58 ?        00:00:00 postgres: wal writer process
  5. postgres 32169 32164  0 21:58 ?        00:00:00 postgres: autovacuum launcher process
  6. postgres 32170 32164  0 21:58 ?        00:00:00 postgres: stats collector process
复制代码
成功!PostgreSQL 已成功安装并正在运行。
访问 PostgreSQL 数据库

在 Debian 上,PostgreSQL 安装了一个名为 postgres 的默认用户和默认数据库。要毗连到数据库,首先需要切换到 postgres 用户,方法是在以 root 用户登录的情况下发出以下命令(利用 sudo 权限无法实行此操作):
  1. su - postgres
复制代码
如今你应该已经以 postgres 用户登录。要启动 PostgreSQL 控制台,输入 psql


  1. psql
复制代码
完成!你应该已经登录到 PostgreSQL 控制台。你应该看到以下提示:
  1. psql
  2. (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 控制台内部:
  1. createuser --interactive
复制代码
这基本上是一个交互式的 shell 脚本,调用正确的 PostgreSQL 命令来根据你的规格创建用户。它会询问你一些问题:角色的名称、是否应该是超等用户、角色是否应该可以或许创建新数据库,以及角色是否可以或许创建新角色。man 页面中有更多信息:
  1. man createuser
复制代码
创建新数据库

PostgreSQL 默认设置了通过匹配体系帐户请求的身份验证角色(您可以在 postgresql.org 上获取更多信息)。它还假定匹配的数据库将存在于角色毗连的数据库中。因此,假如我有一个名为 test1 的用户,该角色将默认尝试毗连到名为 test1 的数据库。
您可以通过简朴地以 postgres 用户的身份调用以下命令来创建得当的数据库:
  1. createdb test1
复制代码
如今已创建了新数据库 test1。
利用新用户毗连到 PostgreSQL

假设您有一个名为 test1 的 Linux 帐户,创建了一个 PostgreSQL test1 角色与之匹配,并创建了数据库 test1。要在 Linux 中切换用户帐户为 test1:
  1. su - test1
复制代码
然后,利用以下命令以 test1 PostgreSQL 角色毗连到 test1 数据库:
  1. psql
复制代码
如今,您应该看到新创建的用户 test1 而不是 postgres 的 PostgreSQL 提示符。
创建和删除表

如今您知道如何毗连到 PostgreSQL 数据库体系,我们将开始介绍如何完成一些基本任务。
首先,让我们创建一个表来存储一些数据。让我们创建一个描述游乐场设备的表。
此命令的基本语法如下:
  1. CREATE TABLE table_name (
  2.     column_name1 col_type (field_length) column_constraints,
  3.     column_name2 col_type (field_length),
  4.     column_name3 col_type (field_length)
  5. );
复制代码
如您所见,我们为表指定了一个名称,然后界说了我们想要的列,以及列范例和字段数据的最大长度。我们还可以为每个列可选地添加表约束。
您可以在《如何在云服务器上创建、删除和管理 PostgreSQL 表》文章中了解有关如何在 Postgres 中创建和管理表的更多信息。
对于我们的目标,我们将创建一个雷同于以下内容的简朴表:
  1. CREATE TABLE playground (
  2.     equip_id serial PRIMARY KEY,
  3.     type varchar (50) NOT NULL,
  4.     color varchar (25) NOT NULL,
  5.     location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
  6.     install_date date
  7. );
复制代码
我们已经创建了一个记录我们拥有的设备的游乐场表。这始于一个设备 ID,它是序列范例的。此数据范例是自增整数。我们已经给了这个列主键的约束,这意味着值必须是唯一的且不为空。
对于我们的两个列,我们没有给出字段长度。这是由于某些列范例不需要设置长度,由于长度由范例隐含确定。
然后,我们为设备范例和颜色创建列,每个列都不能为空。然后我们创建一个位置列,并创建一个要求值为八个大概值之一的约束。最后一列是一个记录我们安装设备日期的日期列。
要检察表,请在 psql

提示符上利用命令 \dt。结果雷同于
  1.              List of relations
  2. Schema |    Name    | Type  |  Owner
  3. --------+------------+-------+----------
  4. public | playground | table | postgres
复制代码
如您所见,我们有我们的游乐场表。
向表中添加、查询和删除数据

如今我们已经创建了一个表,我们可以向其中插入一些数据。
让我们添加一个滑梯和一个秋千。我们通过调用我们要添加到的表,定名列,然后为每个列提供数据来完成这个操作。我们的滑梯和秋千可以这样添加:
  1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
  2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');
复制代码
您应该留意到几件事变。首先,请记住,列名不应该用引号括起来,但您输入的列值确实需要引号。
另一件需要留意的事变是,我们不为 equip_id 列输入值。这是由于每当在表中创建新行时,此列会主动天生。
然后,我们可以通过键入以下内容来获取我们添加的信息:
  1. SELECT * FROM playground;
复制代码
输出应该是
  1. equip_id | type  | color  | location  | install_date
  2. ----------+-------+--------+-----------+--------------
  3.         1 | slide | blue   | south     | 2014-04-28
  4.         2 | swing | yellow | northwest | 2010-08-16
复制代码
在这里,您可以看到我们的 equip_id 已成功添补,而且我们的其他所有数据都已正确构造。假如我们的滑梯损坏,而且我们将其从游乐场移除,我们也可以通过键入以下内容从我们的表中删除该行:
  1. DELETE FROM playground WHERE type = 'slide';
复制代码
假如我们再次查询我们的表:
  1. SELECT * FROM playground;
复制代码
我们将看到我们的滑梯不再是表的一部分:
  1. equip_id | type  | color | location | install_date
  2. ----------+-------+-------+----------+--------------
  3.         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-doc:sudo apt-get install postgresql-doc
  • 安装在 /usr/share/doc/postgresql-doc-9.4/tutorial/README 的 README 文件
要获取 PostgreSQL 中支持的所有 SQL 命令的完备列表,请访问以下链接:


  • SQL 命令
要比较不同数据库的功能,请检察:


  • SQLite vs MySQL vs PostgreSQL
要更好地理解角色和权限,请参阅:


  • 如何在 VPS 上利用角色和管理授予权限的 PostgreSQL

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表