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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 在CentOS 6上安装和使用PostgreSQL的方法

简介


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

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

如何安装 PostgreSQL


尽管 CentOS 默认仓库中包含 postgres 软件包,但我们将使用 postgres 项目自己提供的软件包。

这样可以确保我们可以访问到最新版本的软件,而无需从源代码安装。

排除 CentOS 的 Postgres 软件包


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

在文本编辑器中打开 CentOS 仓库配置文件:

nano /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*

[updates] 部分的底部也添加相同的行,以防止 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。

在链接上按下 Ctrl 键或右键,选择 “复制链接地址” 或类似的选项。

!Postgres 复制最新版本的位置

回到您的 droplet 会话,切换到您的主目录。输入 curl -O,然后粘贴下载链接:

cd ~

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

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

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

我们可以看到,在这种情况下,所有软件包的版本都是 “93”,表示版本为 9.3。我们需要下载 “-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: 列出数据库
  • \c: 连接到不同的数据库。在其后跟上数据库名称。
  • \password: 更改接下来的用户名的密码。
  • \conninfo: 获取关于当前数据库和连接的信息。

创建一个Postgres表


我们可以使用以下语法在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;


我们将创建一个名为“popsicles”的表,用于存储我们的冰棒品种以及一些关于它们的信息。

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 时还有许多其他内容需要学习。您可以探索我们的其他文章,了解如何管理表、如何创建查询、如何管理权限、如何备份 postgres,以及如何保护 postgres。


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
11天前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
94 64
|
12天前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
100 61
|
5天前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
24 1
Linux系统之Centos7安装cockpit图形管理界面
|
11天前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
36 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
8天前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
64 3
|
8天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
60 2
|
10天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
19 3
|
14天前
|
安全 Linux 编译器
Centos 7.9如何使用源码编译安装curl最新版本
通过上述步骤,您就能在CentOS 7.9上成功地从源代码编译并安装curl的最新版本。这种方法不仅提供了灵活性,允许您定制编译选项,还确保了软件的最新功能和安全更新得到应用。
26 1
|
9天前
|
安全 Linux 数据库连接
CentOS 7环境下DM8数据库的安装与配置
【10月更文挑战第16天】本文介绍了在 CentOS 7 环境下安装与配置达梦数据库(DM8)的详细步骤,包括安装前准备、创建安装用户、上传安装文件、解压并运行安装程序、初始化数据库实例、配置环境变量、启动数据库服务、配置数据库连接和参数、备份与恢复、以及安装后的安全设置、性能优化和定期维护等内容。通过这些步骤,可以顺利完成 DM8 的安装与配置。
|
13天前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
32 0