ToB企服应用市场:ToB评测及商务社交产业平台

标题: 在Ubuntu 18.04上安装和使用PostgreSQL的方法 [打印本页]

作者: 反转基因福娃    时间: 2024-8-12 15:21
标题: 在Ubuntu 18.04上安装和使用PostgreSQL的方法
前些天发现了一个巨牛的人工智能学习网站,普通易懂,风趣幽默,忍不住分享一下给各人。点击跳转到网站。
简介

关系数据库管理体系是许多网站和应用步伐的关键组件。它们提供了一种结构化的方式来存储、组织和访问信息。
PostgreSQL,或者简称为 Postgres,是一个关系数据库管理体系,提供了 SQL 查询语言的实现。它是许多小型和大型项目的热门选择,并且具有符合尺度的上风,以及可靠的事务和并发性而无需读取锁定等许多高级功能。
本指南演示了如何在 Ubuntu 18.04 VPS 实例上安装 Postgres,并提供了根本数据库管理的说明。
先决条件

要按照本教程进行操作,您需要一个已经按照我们的《Ubuntu 18.04 初始服务器设置指南》进行配置的 Ubuntu 18.04 服务器。完成先决条件教程后,您的服务器应该具有一个具有 sudo 权限的非 root 用户和一个根本防火墙。
步骤 1 — 安装 PostgreSQL

Ubuntu 的默认软件堆栈中包含了 Postgres 软件包,因此您可以使用 apt 软件包管理体系来安装这些软件包。
由于这是您在本次会话中第一次使用 apt,请先刷新当地软件包索引。然后,安装 Postgres 软件包以及一个 -contrib 软件包,该软件包添加了一些额外的实用工具和功能:
  1. sudo apt update
  2. sudo apt install postgresql postgresql-contrib
复制代码
使用 systemctl start 命令确保服务器正在运行:
  1. sudo systemctl start postgresql.service
复制代码
现在软件已安装并运行,我们可以了解它的工作原理以及它与您大概使用过的类似数据库管理体系有何差别。
步骤 2 — 使用 PostgreSQL 角色和数据库

默认情况下,Postgres 使用一种称为 角色 的概念来处理身份验证和授权。在某些方面,这与通例的 Unix 风格帐户类似,但 Postgres 不区分用户和组,而是更倾向于更机动的术语 “角色”。
在安装时,Postgres 被设置为使用 ident 身份验证,这意味着它将 Postgres 角色与匹配的 Unix/Linux 体系帐户关联起来。如果一个角色存在于 Postgres 中,具有相同名称的 Unix/Linux 用户名就能够以该角色登录。
安装过程创建了一个名为 postgres 的用户帐户,该帐户与默认的 Postgres 角色关联。要使用 Postgres,您可以登录到该帐户。
有几种方法可以使用该帐户访问 Postgres。
切换到 postgres 帐户

通过输入以下命令,在服务器上切换到 postgres 帐户:
  1. sudo -i -u postgres
复制代码
现在,您可以立即通过输入以下命令访问 Postgres 提示符:
  1. psql
复制代码
这将使您登录到 PostgreSQL 提示符,从这里您可以立即与数据库管理体系交互。
通过输入以下命令退出 PostgreSQL 提示符:
  1. \q
复制代码
这将带您回到 postgres Linux 命令提示符。
在不切换帐户的情况下访问 Postgres 提示符

在上一个示例中,您被指示首先切换到 postgres 用户,然后运行 psql
打开 Postgres 提示符。您也可以通过以下单个命令在 postgres 用户下使用 sudo 来完成这一步:
  1. sudo -u postgres psql
复制代码
这将直接将您登录到 Postgres,而不需要中心的 bash shell。
同样,您可以通过输入以下命令退出交互式 Postgres 会话:
  1. \q
复制代码
许多用例需要多个 Postgres 角色。接下来了解如何配置这些角色。
步骤 3 — 创建新角色

现在,您只配置了数据库中的 postgres 角色。您可以使用 createrole 命令从命令行创建新角色。--interactive 标记将提示您输入新角色的名称,并询问是否应该具有超级用户权限。
如果您已登录为 postgres 帐户,可以通过输入以下命令创建新用户:
  1. createuser --interactive
复制代码
如果您更喜幸亏不切换到正常帐户的情况下为每个命令使用 sudo,则输入以下命令:
  1. sudo -u postgres createuser --interactive
复制代码
该脚本将提示您进行一些选择,并根据您的响应执行正确的 Postgres 命令以创建符合您规格的用户。
首先,提示将要求您指定新角色的名称。以下示例将角色定名为 sammy,但您可以根据需要定名:
  1. Enter name of role to add: sammy
复制代码
接下来,将询问新角色是否应该是超级用户。在 PostgreSQL 中,超级用户角色拥有极其广泛的特权,并且可以绕过几乎全部权限检查。
以下示例指定 sammy 角色应该是超级用户,但是由于超级用户角色在数据库上具有极大的权限和控制,您不应该轻易授予新角色超级用户状态:
  1. Enter name of role to add: sammy
  2. Shall the new role be a superuser? (y/n) y
复制代码
请留意,只有在以已经是超级用户的角色创建它们时,才气创建新的超级用户角色。默认情况下,postgres 角色是超级用户。
您可以通过传递一些额外的标记来获得更多控制。通过检察 man 页面来检察选项:
  1. man createuser
复制代码
您的 Postgres 安装现在有了一个新角色,但您尚未添加任何数据库。下一节将形貌此过程。
步骤 4 —— 创建新数据库

Postgres 认证体系默认假设任何用于登录的角色都将拥有同名的数据库,并且可以访问该数据库。
这意味着,如果你在上一节创建的用户叫做 sammy,那么该角色将默认实验毗连到一个也叫“sammy”的数据库。你可以使用 createdb 命令创建相应的数据库。
如果你以 postgres 账户登录,你可以输入如下命令:
  1. createdb sammy
复制代码
如果你更喜幸亏不切换到 postgres 用户的情况下为每个命令使用 sudo,你可以输入:
  1. sudo -u postgres createdb sammy
复制代码
这种机动性提供了多种创建数据库的途径。
步骤 5 —— 使用新角色打开 Postgres 提示符

要使用基于 ident 的认证登录,你需要一个与你的 Postgres 角色和数据库同名的 Linux 用户。
如果你没有匹配的 Linux 用户可用,你可以使用 adduser 命令创建一个。你需要在拥有 sudo 权限的非 root 账户下执行此操作(也就是说,不要以 postgres 用户登录):
  1. sudo adduser sammy
复制代码
一旦新账户可用,你可以切换并毗连到数据库,输入:
  1. sudo -i -u sammy
  2. psql
复制代码
或者,你可以内联执行:
  1. sudo -u sammy psql
复制代码
这个命令将自动登录你,假设全部组件都已正确配置。
如果你想让你的用户毗连到差别的数据库,你可以如许指定命据库:
  1. psql
  2. -d postgres
复制代码
登录后,你可以通过输入以下命令检查当前毗连信息:
  1. \conninfo
复制代码
  1. You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".
复制代码
如果你毗连到非默认数据库或使用非默认用户,这将非常有用。
步骤 6 —— 创建和删除表

现在你知道如何毗连到 PostgreSQL 数据库体系,可以学习一些根本的 Postgres 管理任务。
首先,创建一个表来存储一些数据。举个例子,创建一个形貌一些游乐场装备的表。
这个命令的根本语法如下:
  1. CREATE TABLE
  2. table_name (
  3.     column_name1 col_type (field_length) column_constraints,
  4.     column_name2 col_type (field_length),
  5.     column_name3 col_type (field_length)
  6. );
复制代码
这些命令为表定名,然后定义列以及列类型和字段数据的最大长度。你还可以为每个列可选地添加表约束。
你可以在这里了解更多关于如何在 Postgres 中创建和管理表的信息。
为了演示目的,创建一个样本表如下:
  1. CREATE TABLE
  2. playground (
  3.     equip_id serial PRIMARY KEY,
  4.     type varchar (50) NOT NULL,
  5.     color varchar (25) NOT NULL,
  6.     location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
  7.     install_date date
  8. );
复制代码
这些命令将创建一个用于存储游乐场装备清单的表。首先是一个装备 ID,它是 serial 类型。这种数据类型是自增整数。你还给这个列添加了 primary key 约束,这意味着值必须是唯一的且不为空。
对于两个列(equip_id 和 install_date),命令没有指定字段长度。这是由于某些列类型不需要设置长度,由于长度由类型隐含确定。
接下来的两个命令分别为装备 type 和 color 创建了列,每个列都不能为空(由应用到每个列的 NOT NULL 约束指定)。在这些命令之后的行创建了一个 location 列,并添加了一个约束,要求该列的值必须是八个大概值中的一个。括号内的最后一行创建了一个 date 列,记载你安装装备的日期。
请留意,在 SQL 中,每个语句必须以分号(;)结尾。
如果你正确输入了 CREATE TABLE
操作,它将返回以下输出:
  1. CREATE TABLE
复制代码
你可以通过输入以下命令找到此数据库中的表列表:
  1. \d
复制代码
  1.                   List of relations
  2. Schema |          Name           |   Type   | Owner
  3. --------+-------------------------+----------+-------
  4. public | playground              | table    | sammy
  5. public | playground_equip_id_seq | sequence | sammy
  6. (2 rows)
复制代码
你的 playground 表在这里,但还有一个叫做 playground_equip_id_seq 的类型为 sequence 的东西。这是你给 equip_id 列的 serial 类型的表示。它跟踪序列中的下一个数字,并且会自动为此类型的列创建。
如果你只想返回表而不返回序列,你可以输入:
  1. \d
  2. t
复制代码
  1.           List of relations
  2. Schema |    Name    | Type  | Owner
  3. --------+------------+-------+-------
  4. public | playground | table | sammy
  5. (1 row)
复制代码
第 7 步 —— 向表中添加、查询和删除数据

现在你已经有了一个表,你可以向其中插入一些数据。
举个例子,通过调用你想要添加数据的表,定名列,然后为每列提供数据,来添加一个滑梯和一个秋千,就像如许:
  1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
  2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');
复制代码
在输入数据时要小心,避免一些常见的问题。首先,不要用引号括住列名,但是你输入的列值需要加上引号。
另一件需要记着的事变是,不要为 equip_id 列输入值。这是由于每当在表中创建新行时,它会自动天生。
通过输入以下命令来检索你添加的信息:
  1. SELECT * FROM playground;
复制代码
  1. equip_id | type  | color  | location  | install_date
  2. ----------+-------+--------+-----------+--------------
  3.         1 | slide | blue   | south     | 2017-04-28
  4.         2 | swing | yellow | northwest | 2018-08-16
  5. (2 rows)
复制代码
这个输出表明你的 equip_id 已经乐成填充,而且全部其他数据都被正确地组织了起来。
如果游乐场上的滑梯坏了,你需要移除它,你也可以通过输入以下命令从表中移除这一行:
  1. DELETE FROM playground WHERE type = 'slide';
复制代码
再次查询表:
  1. SELECT * FROM playground;
复制代码
  1. equip_id | type  | color  | location  | install_date
  2. ----------+-------+--------+-----------+--------------
  3.         2 | swing | yellow | northwest | 2018-08-16
  4. (1 row)
复制代码
留意到你的滑梯不再是表中的一部分了。
第 8 步 —— 向表中添加和删除列

在创建表之后,你可以相对容易地修改它来添加或删除列。通过输入以下命令来添加一个列,用于显示每个装备的最后维护日期:
  1. ALTER TABLE playground ADD last_maint date;
复制代码
下次再次检察表信息时,新列将已经被添加(但是没有数据被输入):
  1. SELECT * FROM playground;
复制代码
  1. equip_id | type  | color  | location  | install_date | last_maint
  2. ----------+-------+--------+-----------+--------------+------------
  3.         2 | swing | yellow | northwest | 2018-08-16   |
  4. (1 row)
复制代码
要删除一个列,你可以输入一个与你用来添加 last_maint 列非常相似的 SQL 语句。如果你发现你的工作人员使用单独的工具来跟踪维护历史,你可以通过输入以下命令来删除该列:
  1. ALTER TABLE playground DROP last_maint;
复制代码
这将删除 last_maint 列以及其中找到的任何值,但会保存全部其他数据。
第 9 步 —— 更新表中的数据

到现在为止,你已经学会了如何向表中添加记载以及如何删除它们,但是本教程还没有涵盖如何修改现有条目。
你可以通过查询你想要的记载并将列设置为你希望使用的值来更新现有条目的值。你可以查询 “swing” 记载(这将匹配表中的 每个 秋千)并将其颜色更改为 “red”。如果你给秋千涂了一层油漆,这大概会很有用:
  1. UPDATE playground SET color = 'red' WHERE type = 'swing';
复制代码
你可以通过再次查询数据来验证操作是否乐成:
  1. SELECT * FROM playground;
复制代码
  1. equip_id | type  | color | location  | install_date
  2. ----------+-------+-------+-----------+--------------
  3.         2 | swing | red   | northwest | 2010-08-16
  4. (1 row)
复制代码
正如这个输出所示,你的秋千现在被注册为赤色了。
结论

你现在已经在你的 Ubuntu 18.04 服务器上设置了 PostgreSQL。然而,还有 更多 关于 Postgres 的知识期待你去学习。以下是一些覆盖如何使用 Postgres 的更多指南:


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




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4