在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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
20天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
55 5
|
26天前
|
存储 缓存 Linux
|
18天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
19天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
25天前
|
存储 监控 Linux
在 CentOS 7 中进行磁盘分区和挂载的具体操作步骤,如何使用 `fdisk` 创建分区、格式化分区、创建挂载点以及临时和永久挂载分区的方法。
本文介绍了在 CentOS 7 中进行磁盘分区和挂载的具体操作步骤。通过一个实际案例,详细说明了如何使用 `fdisk` 创建分区、格式化分区、创建挂载点以及临时和永久挂载分区的方法。此外,还分享了一些实践经验,帮助读者更好地管理和优化服务器磁盘空间。
43 4
|
26天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
73 3
|
27天前
|
数据库
|
27天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
49 2
|
29天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
85 2
|
15天前
|
存储 安全 Linux
VMware安装CentOS7
【11月更文挑战第11天】本文详细介绍了在 VMware 中安装 CentOS 7 的步骤,包括准备工作、创建虚拟机、配置虚拟机硬件和安装 CentOS 7。具体步骤涵盖下载 CentOS 7 镜像文件、安装 VMware 软件、创建和配置虚拟机硬件、启动虚拟机并进行安装设置,最终完成 CentOS 7 的安装。在安装过程中,需注意合理设置磁盘分区、软件选择和网络配置,以确保系统的性能和功能满足需求。
117 0