如何在 CentOS 6 上安装和使用 PostgreSQL
状态:已弃用
本文涵盖不再受支持的 CentOS 版本。如果您当前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。
原因:
请参阅:
可能会对以下 DigitalOcean 教程感兴趣,因为它概述了在 CentOS 7 服务器上安装 PostgreSQL:
- 如何在 CentOS 7 上安装和使用 PostgreSQL
介绍
PostgreSQL,通常被称为“postgres”,是一种流行的数据库管理系统,它使用 SQL 查询语言来操作数据。
在本指南中,我们将介绍如何在 CentOS VPS 上安装和使用 postgres。
如何安装 PostgreSQL
尽管 CentOS 在其默认存储库中包含 postgres 包,但我们将使用 postgres 项目本身提供的包。
这将确保我们可以访问最新版本的软件,而无需从源代码安装。
排除 CentOS Postgres 软件包
在我们安装 postgres 之前,我们必须排除 postgres 的 CentOS 版本,以便从该项目的网站获取最新版本。
在文本编辑器中打开 CentOS 存储库配置文件:
nano /etc/yum.repos.d/CentOS-Base.repo
在 [base]
部分的底部,添加一行排除 postgres 包:
<前>
将同一行添加到 [updates]
部分的底部,以防止 yum 从默认存储库更新 postgres:
<前>
添加 Postgres 存储库
现在,我们已经告诉 yum 不要为 postgres 包交互使用默认存储库。
我们现在需要为它提供替代方案。我们将使用 postgres 项目网站上提供的包。
前往该站点查找适用于您的 CentOS 版本的最新版本的 postgres。
按住 Control 单击或右键单击与最新版本的 postgres 和您的 CentOS 版本相匹配的链接。选择“复制链接地址”或任何可用的类似选项。

回到您的 Droplet 会话,切换到您的主目录。输入 curl -O
然后粘贴下载链接:
<前>
通过键入以下命令安装刚刚下载的包:
rpm -ivh pgdg*
这将允许您的系统从项目的网站中提取 postgres 包。
我们现在可以这样做以获得最新版本。这些包包含版本编号,因此您需要搜索以查看正在使用的版本:
yum list postgres*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.linux.duke.edu
* extras: mirror.linux.duke.edu
* updates: mirrors.kernel.org
Installed Packages
postgresql93.x86_64 9.3.1-1PGDG.rhel6 @pgdg93
postgresql93-libs.x86_64 9.3.1-1PGDG.rhel6 @pgdg93
postgresql93-server.x86_64 9.3.1-1PGDG.rhel6 @pgdg93
Available Packages
postgresql93-contrib.x86_64 9.3.1-1PGDG.rhel6 pgdg93
postgresql93-debuginfo.x86_64 9.3.1-1PGDG.rhel6 pgdg93
我们可以看到,在这种情况下,所有包都有 9.3 版本的 \93。我们要下载 \-server 包:
yum install postgresql93-server
在本指南的其余部分,将 \93 更改为适用于您的系统的任何当前版本的 postgres。
初始化数据库环境
您可以通过键入以下内容来初始化数据库环境:
service postgresql-9.3 initdb
然后我们将其配置为在启动时启动,我们将启动软件:
chkconfig postgresql-9.3 on
service postgresql-9.3 start
我们现在准备开始使用 postgres。
如何登录到 Postgres 数据库
默认情况下,postgres 创建一个用户和一个名为 postgres
的数据库。
默认的安全方案假设 postgres 用户只能被那些需要访问的人访问。这可以通过设置 sudo 规则来控制。
我们通过名为 psql
的接口与 postgres 数据库软件进行交互。它提供了一个提示,我们可以在其中操作和查询数据。
现在,像这样登录到 postgres 用户:
su - postgres
您的提示将会改变。您现在可以通过键入以下内容连接到与您的用户名匹配的数据库:
psql
您的提示符将再次发生变化,这次表明您正在与 postgres 数据库进行交互。
如果你需要退出这个界面,你可以随时输入:
\q
之后,要返回 root 用户 shell,您可以键入:
exit
一些有用的 psql 命令
以下是一些可以帮助您了解当前环境的命令:
- ?:获取 psql 命令的完整列表,包括此处未列出的命令。
- \h:获取有关 SQL 命令的帮助。您可以使用特定的命令来获取语法方面的帮助。
- \q:退出 psql 程序并退出到 Linux 提示符。
- \d:列出当前数据库中可用的表、视图和序列。
- \du: 列出可用的角色
- \dp: 列出访问权限
- \dt:列出表格
- \l: 列出数据库
创建一个 Postgres 表
我们可以使用以下语法在 postgres 中创建表:
<前>
我们将创建一个名为“冰棒”的表来存储我们的冰棒品种和有关它们的一些信息。
CREATE TABLE popsicles ( pop_id serial PRIMARY KEY, flavor varchar (50) NOT NULL, amount int NOT NULL, size varchar (10) check (size in ('small', 'normal', 'large')) );
现在我们可以使用
\dt
命令查看表格:\dt
List of relations Schema | Name | Type | Owner --------+-----------+-------+---------- public | popsicles | table | postgres (1 row)
要查看我们刚刚定义的列和数据结构,我们可以键入以下命令:
\d popsicles
Table "public.popsicles" Column | Type | Modifiers --------+-----------------------+------------------------------------ ------------------------ pop_id | integer | not null default nextval('popsicles _pop_id_seq'::regclass) flavor | character varying(50) | not null amount | integer | not null size | character varying(10) | . . .
将数据插入 Postgres 表
现在我们的数据库中有一个表,但其中还没有数据。我们可以使用
insert
命令填充它。我们键入
INSERT INTO
后跟表名。然后,我们在一组括号内键入以逗号分隔的列名列表。然后我们键入VALUES
,后跟第二组括号,其中包含与列名称对应的以逗号分隔的值列表。让我们现在试试吧。我们将在我们的桌子上插入一些葡萄冰棒:
INSERT INTO popsicles (flavor, amount, size) VALUES ('grape', 10, 'normal');
INSERT 0 1
INSERT 0 1
表示我们的命令被成功接受。关于此命令需要注意的一些事情是我们的值列表中的单词在单引号() 内,并且命令以分号 (;) 结尾。记住这两点都很重要。另一件需要注意的事情是我们没有设置
pop_id
列。那是因为我们将其定义为主键。此列的每个条目必须具有唯一值,因此 postgres 会自动将下一个可用值分配给我们创建的每个记录。让我们填写更多数据,以便我们有一个更有用的表格:
INSERT INTO popsicles (flavor, amount, size) VALUES ('orange', 8, 'small'); INSERT INTO popsicles (flavor, amount, size) VALUES ('fudge', 20, 'large'); INSERT INTO popsicles (flavor, amount, size) VALUES ('eclair', 14, 'normal'); INSERT INTO popsicles (flavor, amount, size) VALUES ('rainbow', 4, 'small');
如果您还记得,当我们创建表时,我们为 \size 列定义了可接受的值。Postgres 检查该值是 \small、\normal 还是 \large。如果我们尝试提供不同的值会发生什么?:
INSERT INTO popsicles (flavor, amount, size) VALUES ('lime', 6, 'huge');
ERROR: new row for relation "popsicles" violates check constraint "popsicles_size_check" DETAIL: Failing row contains (6, lime, 6, huge).
如您所见,postgres 已验证我们输入了正确的数据。它拒绝了我们最新的冰棒,因为它没有我们为尺寸定义的值之一。
从 Postgres 表中选择数据
我们可以使用
select
命令查询新表中的数据。 select 命令从表中返回符合指定条件的数据。要从我们的表中返回所有信息,我们可以使用星号 (*),这是一个特殊符号,表示“匹配所有内容”:
SELECT * FROM popsicles;
pop_id | flavor | amount | size --------+---------+--------+-------- 1 | grape | 10 | normal 2 | orange | 8 | small 3 | fudge | 20 | large 4 | eclair | 14 | normal 5 | rainbow | 4 | small (5 rows)
我们可以通过用我们想要的列替换星号来按列选择:
SELECT flavor, amount FROM popsicles;
flavor | amount ---------+-------- grape | 10 orange | 8 fudge | 20 eclair | 14 rainbow | 4 (5 rows)
如果我们想过滤只显示某些结果,我们可以在末尾添加一个
where
过滤器:SELECT * FROM popsicles WHERE amount <= 10;
pop_id | flavor | amount | size --------+---------+--------+-------- 1 | grape | 10 | normal 2 | orange | 8 | small 5 | rainbow | 4 | small (3 rows)
结论
您现在应该已经在您的系统上安装了 postgres,并且可以很好地掌握它的基本用法。
在与 postgres 打交道时,还有许多其他的东西需要学习。您可以浏览我们的其他文章以了解如何管理