金钱(警告)
状态: 被剥夺
本文涵盖了不再受支持的 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. 选择复制链接地址
或任何类似的选项。
回到你的 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。