如何在 CentOS 6 上安装和使用 PostgreSQL

金钱(警告)

状态: 被剥夺

本文涵盖了不再受支持的 CentOS 版本. 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议升级或迁移到受支持的 CentOS 版本。

** 原因** : CentOS 6于2020年11月30日到期(EOL)并且不再收到安全补丁或更新。

See Instead : 本指南可能仍然有用作为参考,但可能不会在其他 CentOS 版本上工作. 如果可用,我们强烈建议使用为您正在使用的 CentOS 版本撰写的指南。

下面的DigitalOcean教程可能有趣,因为它概述了在CentOS 7服务器上安装PostgreSQL:

美元

介绍


PostgreSQL,通常被称为postgres,是一个流行的数据库管理系统,使用SQL查询语言来操纵数据。

在本指南中,我们将介绍如何在CentOS VPS上安装和使用postgres。

如何安装PostgreSQL


尽管 CentOS 在其默认存储库中包含 postgres 包,但我们将使用自 postgres 项目可用的包。

这将确保我们可以访问最新的软件版本,而无需从源头上安装。

排除 CentOS Postgres 包


在安装 postgres 之前,我们必须排除 postgres 的 CentOS 版本,以便从项目网站上获取最新的版本。

在文本编辑器中打开 CentOS 存储配置文件:

1nano /etc/yum.repos.d/CentOS-Base.repo

base部分的底部,添加一个排除postgres包的行:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
# baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*

将相同的行添加到[更新]部分的底部,以防止 yum 从默认存储库中更新 postgres:

[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
# baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*

添加 Postgres 存储


现在,我们已经告诉yum不要打扰postgres包交互的默认存储库。

我们现在需要提供一个替代方案,我们将使用postgres项目网站上提供的包。

請前往 找到您 CentOS 版本可用的最新版本的 postgres

点击控制或右键点击匹配最新版本的链接和您的版本 CentOS. 选择复制链接地址或任何类似的选项。

Postgres copy location of most recent version

回到你的 dropplet 会话,转到你的主目录. 键入 curl -O 然后粘贴下载链接:

cd ~
curl -O http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm

通过键入以下命令来安装您刚刚下载的软件包:

1rpm -ivh pgdg*

这将允许您的系统从项目网站中提取postgres包。

这些包包含版本编号,所以您需要搜索查看正在使用的版本:

1yum list postgres*

 1Loaded plugins: fastestmirror
 2Loading mirror speeds from cached hostfile
 3 * base: mirror.linux.duke.edu
 4 * extras: mirror.linux.duke.edu
 5 * updates: mirrors.kernel.org
 6Installed Packages
 7postgresql93.x86_64 9.3.1-1PGDG.rhel6        @pgdg93
 8postgresql93-libs.x86_64 9.3.1-1PGDG.rhel6        @pgdg93
 9postgresql93-server.x86_64 9.3.1-1PGDG.rhel6        @pgdg93
10Available Packages
11postgresql93-contrib.x86_64 9.3.1-1PGDG.rhel6 pgdg93 
12postgresql93-debuginfo.x86_64 9.3.1-1PGDG.rhel6 pgdg93

我们可以看到,在这种情况下,所有的包都有93的版本 9.3. 我们想下载服务器的包:

1yum install postgresql93-server

在本指南的其余时间内,将93更改为当前版本的postgres。

初始化数据库环境


您可以通过键入初始化数据库环境:

1service postgresql-9.3 initdb

然后我们将配置为在启动时启动,我们将启动软件:

1chkconfig postgresql-9.3 on
2service postgresql-9.3 start

我们现在已经准备好开始使用postgres了。

如何登入Postgres数据库


默认情况下,postgres 会创建一个用户和一个名为postgres的数据库。

默认的安全方案假定,postgres 用户只会被需要访问的人访问,可以通过 设置 sudo 规则来控制。

我们通过名为psql的界面与postgres数据库软件进行交互,它提供了我们可以操纵和查询数据的提示。

现在,登录postgres用户如下:

1su - postgres

您的提示将更改. 您现在可以通过键入连接到匹配您的用户名的数据库:

1psql

您的提示将再次更改,这一次表示您正在与postgres 数据库进行交互。

如果您需要退出此界面,您可以随时输入以下内容:

1\q

之后,要返回 root 用户壳,您可以键入:

1exit

一些有用的 psql 命令


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

  • ? : 获取 psql 命令的完整列表,包括未列出的 psql 命令。
  • \h : 获取 SQL 命令的帮助. 您可以使用特定的命令获取语法的帮助。
  • \q : 退出 psql 程序并退出 Linux 提示.
  • \d : 现有数据库中的可用表、视图和序列列.
  • \du : 可用角色列表
  • \dp : 访问权限列表
  • **\dt: 密码列表
  • **\l: 数据库列表

创建一张桌子


我们可以使用以下语法在postgres中创建表:

CREATE TABLE new_table_name (
    table_column_title TYPE_OF_DATA column_constraints,
    next_column_title TYPE_OF_DATA column_constraints,
    table_constraint
    table_constraint
) INHERITS existing_table_to_inherit_from;

我们将制作一张名为鸭子的表,存储我们的鸭子品种和一些关于它们的信息。

1CREATE TABLE popsicles (
2    pop_id serial PRIMARY KEY,
3    flavor varchar (50) NOT NULL,
4    amount int NOT NULL,
5    size varchar (10) check (size in ('small', 'normal', 'large'))
6);

现在我们可以使用\dt命令来查看表:

1\dt

1List of relations
2 Schema |   Name    | Type  |  Owner   
3--------+-----------+-------+----------
4 public | popsicles | table | postgres
5(1 row)

要查看我们刚刚定义的列和数据结构,我们可以输入以下命令:

1\d popsicles

 1Table "public.popsicles"
 2 Column |         Type          |                         Modifiers  
 3
 4--------+-----------------------+------------------------------------
 5------------------------
 6 pop_id | integer               | not null default nextval('popsicles
 7_pop_id_seq'::regclass)
 8 flavor | character varying(50) | not null
 9 amount | integer               | not null
10 size   | character varying(10) | 
11 . . .

将数据插入 Postgres 表


我们现在在我们的数据库中有一个表,但还没有数据,我们可以使用插入命令填充它。

我们输入INSTALL INTO,然后输入表名称。然后,我们输入一组列表中列出的列表名称,然后输入VALUES,然后输入第二组列表,其中包含与列表名称相符的列表值。

让我们试试一下吧!我们将一些葡萄粉插入我们的桌子:

1INSERT INTO popsicles (flavor, amount, size) VALUES ('grape', 10, 'normal');

1INSERT 0 1

INSERT 0 1表示我们的命令已被成功接受. 关于这个命令的一些注意事项是,我们值列表中的单个引文中的单词( ),并且命令以半色( )结束。

另一个值得注意的是,我们没有设置pop_id列,这是因为我们将其定义为 _primary key。 此列必须为每个输入具有独特值,因此postgres 将自动为我们创建的每个记录分配下一个可用值。

让我们填写一些更多的数据,以便我们有一个更有用的表:

1INSERT INTO popsicles (flavor, amount, size) VALUES ('orange', 8, 'small');
2INSERT INTO popsicles (flavor, amount, size) VALUES ('fudge', 20, 'large');
3INSERT INTO popsicles (flavor, amount, size) VALUES ('eclair', 14, 'normal');
4INSERT INTO popsicles (flavor, amount, size) VALUES ('rainbow', 4, 'small');

如果你还记得,当我们创建表时,我们为大小列定义了可接受的值。 Postgres 检查该值是否为,正常

1INSERT INTO popsicles (flavor, amount, size) VALUES ('lime', 6, 'huge');

1ERROR:  new row for relation "popsicles" violates check constraint "popsicles_size_check"
2DETAIL:  Failing row contains (6, lime, 6, huge).

正如您所看到的,postgres 已验证我们输入了正确的数据,它已经拒绝了我们最新的 popsicle,因为它没有我们为大小定义的值。

从 Postgres 表中选择数据


我们可以使用选择命令查询我们的新表中的数据,选择命令返回符合指定的标准的表中的数据。

要返回我们表中的所有信息,我们可以使用星座 (*),这是一个特殊的符号,意思是匹配一切:

1SELECT * FROM popsicles;

1pop_id | flavor  | amount |  size  
2--------+---------+--------+--------
3      1 | grape   |     10 | normal
4      2 | orange  |      8 | small
5      3 | fudge   |     20 | large
6      4 | eclair  |     14 | normal
7      5 | rainbow |      4 | small
8(5 rows)

我们可以通过用我们想要的列替代星座来选择列:

1SELECT flavor, amount FROM popsicles;

1flavor  | amount 
2---------+--------
3 grape   |     10
4 orange  |      8
5 fudge   |     20
6 eclair  |     14
7 rainbow |      4
8(5 rows)

如果我们想过滤以仅显示某些结果,我们可以在末尾添加一个哪里过滤器:

1SELECT * FROM popsicles WHERE amount <= 10;

1pop_id | flavor  | amount |  size  
2--------+---------+--------+--------
3      1 | grape   |     10 | normal
4      2 | orange  |      8 | small
5      5 | rainbow |      4 | small
6(3 rows)

结论


您现在应该在您的系统上安装postgres,并对其基本用途有很好的处理。

你可以探索我们的其他文章来学习 如何管理表, 如何创建查询, 如何管理 permissions, 如何备份postgres,和 如何保护postgres

By Justin Ellingwood
Published At
Categories with 技术
Tagged with
comments powered by Disqus