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

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
2月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
477 69
|
8天前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
272 3
|
2月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
256 78
|
9天前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
206 16
|
SQL Ubuntu 关系型数据库
PostgreSQL介绍和PostgreSQL包安装
PostgreSQL 是一个功能强大、可扩展的开源关系型数据库系统,以其可靠性、数据完整性和高性能著称。它支持复杂查询、事务、多版本并发控制及丰富的数据类型,适用于各种应用场景。本文介绍 PostgreSQL 的核心特性,并详细说明在多种 Linux 发行版上的安装与配置方法,帮助用户快速部署和使用该数据库系统。
180 0
|
3月前
|
Linux 网络安全 Apache
针对在Centos/Linux安装Apache过程中出现的常见问题集锦
以上每个问题的解决方案应深入分析错误日志、系统消息和各种配置文件,以找到根本原因并加以解决。务必保持系统和Apache软件包更新到最新版本,以修复已知的bugs和安全漏洞。安装和管理Web服务器是一项需要细致关注和不断学习的任务。随着技术的发展,推荐定期查看官方文档和社区论坛,以保持知识的更新。
179 80
|
2月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
152 10
|
3月前
|
人工智能 数据挖掘 Linux
Centos安装Python3.7(亲测可用)
本指南详细介绍了在基于Linux(以CentOS系统为例,使用yum包管理器)的系统上安装Python 3.7版本的完整流程。Python是一种广泛使用的高级编程语言,在各种领域如软件开发、数据分析、人工智能和区块链开发等都有着重要的应用。
298 2
|
2月前
|
运维 网络协议 Linux
CentOS下Bind服务的安装与故障排查
通过以上的步骤,您应该能够在CentOS系统上安装并配置BIND DNS服务,并进行基本的故障排查。
197 0
|
2月前
|
存储 Ubuntu Linux
安卓手机免root安装各种Linux系统:Ubuntu, Centos,Kali等
此外还可以安装Slackware、Archstrike等系统,还可以通过github查找方法安装更多有趣的东西。 昨日小编就是通过Termux安装的Kali Linux工具包。