在CentOS 7上安装和使用PostgreSQL的方法

鼠扑  金牌会员 | 2024-8-16 18:49:15 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 576|帖子 576|积分 1728

前些天发现了一个巨牛的人工智能学习网站,平凡易懂,风趣幽默,不由得分享一下给大家。点击跳转到网站。
简介

关系数据库管理系统是许多网站和应用步伐的关键组成部分。它们提供了一种布局化的方式来存储、组织和访问信息。
PostgreSQL,大概简称为 Postgres,是一个关系数据库管理系统,提供了 SQL 查询语言的实现。它是许多小型和大型项目的热门选择,并且具有符合尺度和可靠的变乱以及无读锁并发等许多高级功能的优势。
在本指南中,您将在 CentOS 7 服务器上安装 Postgres,并学习一些基本的使用方法。
先决条件

要按照本教程进行操作,您需要:


  • 通过遵循我们的《在 CentOS 7 上进行初始服务器设置》和《新 CentOS 7 服务器的其他保举步骤》教程对 CentOS 7 服务器进行配置,包括具有 sudo 权限的非根用户和使用 firewalld 设置防火墙。
  • 要设置 firewalld,请按照《新 CentOS 7 服务器的其他保举步骤》教程中的 配置基本防火墙 部分进行操作。
  • 如果数据库非常活跃并且在内部记录中有时间戳,那么数据库可能对系统时间更改特别敏感。为了防止由于时钟不同步而导致的一些不同等举动,确保按照《新 CentOS 7 服务器的其他保举步骤》教程中的 配置时区和网络时间协议同步 部分设置网络时间协议(NTP)同步。
步骤 1 — 安装 PostgreSQL

Postgres 可以使用默认的 CentOS 软件堆栈进行安装。但是在撰写本教程时,CentOS 7 Base 软件堆栈中提供的版本已经过期。因此,本教程将使用官方的 Postgres 软件堆栈。
在继续设置新软件堆栈之前,从 CentOS-Base 软件堆栈中排除对 postgresql 软件包的搜刮。否则,依赖关系可能会分析为底子软件堆栈提供的 postgresql。
使用您喜欢的文本编辑器打开软件堆栈配置文件。本教程将使用 vim:
  1. sudo vi /etc/yum.repos.d/CentOS-Base.repo
复制代码
找到 [base] 和 [updates] 部分,按 i 进入插入模式,并在这两个部分中插入 exclude=postgresql* 行。效果,您的文件将如下所示,新行已突出显示:
  1. ...
  2. [base]
  3. name=CentOS-$releasever - Base
  4. mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
  5. #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
  6. gpgcheck=1
  7. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  8. exclude=postgresql*
  9. #released updates
  10. [updates]
  11. name=CentOS-$releasever - Updates
  12. mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
  13. #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
  14. gpgcheck=1
  15. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  16. exclude=postgresql*
  17. ...
复制代码
完成后,按 ESC 退出插入模式,然后输入 :wq 并按 ENTER 保存并退出文件。要了解有关文本编辑器 vi 及其后继者 vim 的更多信息,请查看我们的《在云服务器上安装和使用 Vim 文本编辑器》教程。
如今,使用官方的 PostgreSQL 软件堆栈安装软件堆栈配置包:
  1. sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
复制代码
在提示时,确认安装并输入 y。
PostgreSQL 软件堆栈包含所有可用的 PostgreSQL 版本的信息。您可以使用以下命令查看所有可用的软件包和版本:
  1. yum list postgresql*
复制代码
选择并安装所需版本的 PostgreSQL。在本指南中,您将使用 PostgreSQL 11 版本。
使用以下命令安装 PostgreSQL 服务器:
  1. sudo yum install postgresql11-server
复制代码
在安装过程中,您将被要求导入 GPG 密钥,提示如下:
  1. ...
  2. Importing GPG key 0x442DF0F8:
  3. Userid     : "PostgreSQL RPM Building Project <pgsqlrpms-hackers@pgfoundry.org>"
  4. Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8
  5. Package    : pgdg-redhat-repo-42.0-5.noarch (installed)
  6. From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
  7. Is this ok [y/N]:
复制代码
确认并输入 y,以便完成安装。
如今软件已安装,您将实验一些初始化步骤,为 PostgreSQL 预备一个新的数据库集群。
步骤 2 —— 创建一个新的 PostgreSQL 数据库集群

在使用 PostgreSQL 数据库之前,您需要创建一个新的 PostgreSQL 数据库集群。数据库集群是由单个服务器实例管理的一组数据库。创建数据库集群包括创建数据库数据将被放置的目次,生成共享目次表,以及创建 template1 和 postgres 数据库。
template1 数据库是创建新数据库所需的。存储在此中的所有内容将在创建新数据库时被放置在此中。postgres 数据库是一个默认数据库,用于用户、实用步伐和第三方应用步伐。
使用 initdb 创建一个新的 PostgreSQL 数据库集群:
  1. sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
复制代码
您将看到以下输出:
  1. Initializing database ... OK
复制代码
如今使用 systemctl 启动和启用 PostgreSQL:
  1. sudo systemctl start postgresql-11
  2. sudo systemctl enable postgresql-11
复制代码
这将产生以下输出:
  1. Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-11.service to /usr/lib/systemd/system/postgresql-11.service.
复制代码
如今 PostgreSQL 已经启动运行,您将学习使用角色来了解 Postgres 的工作原理,以及它与您过去使用过的类似数据库管理系统的不同之处。
步骤 3 —— 使用 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 命令提示符。如今,通过以下命令返回到您原来的 sudo 帐户:
  1. exit
复制代码
在不切换帐户的情况下访问 Postgres 提示符

您也可以直接使用 sudo 以 postgres 帐户运行您想要的命令。
比方,在上一个示例中,您被指示起首切换到 postgres 用户,然后使用 psql
打开 Postgres 提示符。您可以通过以下方式一步完成,以 postgres 用户使用 sudo 运行单个命令 psql

  1. sudo -u postgres psql
复制代码
这将直接将您登录到 Postgres,而不需要中间的 bash shell。
同样,您可以通过输入以下命令退出交互式的 Postgres 会话:
  1. \q
复制代码
在这一步中,您使用 postgres 帐户访问了 psql
提示符。但是,许多用例需要多个 Postgres 角色。继续阅读,了解如何配置新角色。
步骤 4 —— 创建一个新角色

目前,您只配置了数据库中的 postgres 角色。您可以使用 createrole 命令从命令行创建新角色。--interactive 标志将提示您输入新角色的名称,并询问是否应该具有超级用户权限。
如果您已经登录为 postgres 帐户,可以通过输入以下命令创建一个新用户:
  1. createuser --interactive
复制代码
如果您更喜欢在不切换到正常帐户的情况下为每个命令使用 sudo,请键入:
  1. sudo -u postgres createuser --interactive
复制代码
该脚本将提示您进行一些选择,并根据您的响应实验精确的 Postgres 命令来创建符合您要求的用户。在本教程中,创建一个名为 sammy 的用户,并赋予它超级用户权限:
  1. Enter name of role to add: sammy
  2. Shall the new role be a superuser? (y/n) y
复制代码
您可以通过通报一些额外的标志来得到更多控制。通过查看 man 页面上的选项来了解更多信息:
  1. man createuser
复制代码
您的 Postgres 安装如今有了一个新用户,但您还没有添加任何数据库。下一节将描述这个过程。
步骤 5 — 创建新数据库

Postgres 认证系统默认假设任何用于登录的角色都将拥有同名的数据库,并且可以访问该数据库。
这意味着,如果你在上一节创建的用户叫做 sammy,那么该角色将默认尝试毗连到一个也叫 sammy 的数据库。你可以使用 createdb 命令创建相应的数据库。
如果你以 postgres 账户登录,你可以输入如下命令:
  1. createdb sammy
复制代码
如果你更喜欢在不切换到 postgres 用户的情况下为每个命令使用 sudo,你可以输入:
  1. sudo -u postgres createdb sammy
复制代码
这种灵活性提供了多种创建数据库的方式。
如今你已经创建了一个新数据库,接下来你将使用新角色登录到该数据库。
步骤 6 — 使用新角色打开 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".
复制代码
如果你毗连到非默认数据库或使用非默认用户,这将非常有用。
毗连到数据库后,你如今可以尝试创建和删除表格。
步骤 7 — 创建和删除表格

如今你知道如何毗连到 PostgreSQL 数据库系统,可以学习一些基本的 Postgres 管理任务。
起首,创建一个表格来存储一些数据。作为示例,你将创建一个描述一些游乐场设备的表格。
这个命令的基本语法如下:
  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 中创建、删除和管理表格》教程中了解更多信息。
为了演示目的,创建一个简单的表格,如下所示:
  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,它是 serial 类型。这种数据类型是自增的整数。你还给这个列添加了 primary key 约束,这意味着值必须是唯一的且不能为空。
对于两个列(equip_id 和 install_date),命令没有指定字段长度。这是由于某些列类型不需要设置长度,由于长度由类型隐含确定。
接下来的两个命令分别创建了设备 type 和 color 的列,每个列都不能为空。在这些命令之后,创建了一个 location 列和一个约束,要求值必须是八个可能值之一。最后一个命令创建了一个日期列,记录你安装设备的日期。
你可以输入以下命令来查看你的新表格:
  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)
复制代码
在这一步中,你创建了一个示例表格。在下一步中,你将尝试在该表格中添加、查询和删除条目。
第八步 —— 向表中添加、查询和删除数据

如今你已经有了一个表,可以向此中插入一些数据。
举个例子,通过调用要添加数据的表,命名列,然后为每列提供数据,像这样添加一个滑梯和一个秋千:
  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)
复制代码
留意到你的滑梯不再存在于表中。
如今你已经在表中添加和删除了条目,可以尝试添加和删除列。
第九步 —— 向表中添加和删除列

在创建表之后,可以修改它以添加或删除列。通过输入以下命令,添加一个列来显示每个设备的最后维护日期:
  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)
复制代码
删除列同样简单。如果发现你的工作人员使用单独的工具来跟踪维护汗青,可以通过输入以下命令删除该列:
  1. ALTER TABLE playground DROP last_maint;
复制代码
这将删除 last_maint 列以及此中的任何值,但会保存所有其他数据。
如今已经添加和删除了列,可以尝试在最后一步中更新现有数据。
第十步 —— 更新表中的数据

到目前为止,你已经学会了如何向表中添加记录以及如何删除它们,但本教程还没有涵盖如何修改现有条目。
你可以通过查询要更新的记录并将列设置为所需的值来更新现有条目的值。你可以查询 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)
复制代码
如你所见,你的秋千如今被注册为赤色。
结论

你如今已经在你的 CentOS 7 服务器上设置了 PostgreSQL。然而,还有很多关于 Postgres 的知识需要学习。以下是一些涵盖如何使用 Postgres 的更多指南:


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

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

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

鼠扑

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

标签云

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