如何在Debian 8上安装和使用PostgreSQL 9.4

介绍

关系数据库是满足多种需求的数据组织的基石。它们支持从网上购物到火箭发射的各种功能。PostgreSQL是一个既古老但仍然存在的数据库。PostgreSQL遵循大部分SQL标准,具有ACID事务,支持外键和视图,并且仍在积极开发中。

如果您运行的应用程序需要稳定性,打包质量和易于管理,Debian 8(代号“Jessie”)是Linux发行版的最佳候选者之一。它的移动速度比其他“发行版”慢一点,但它的稳定性和质量得到了很好的认可。如果您的应用程序或服务需要数据库,Debian 8和PostgreSQL的组合是城里最好的组合之一。

在本文中,我们将向您展示如何在新的Debian 8 Stable实例上安装PostgreSQL并开始使用。

准备

第一件事是让Debian 8 Stable系统继续运行。本教程假设您准备好了Debian 8 Stable 腾讯云CVM

除非另有说明,否则本教程中的所有命令都应作为具有sudo权限的非root用户运行。

没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

安装PostgreSQL

在安装PostgreSQL之前,请确保通过更新apt包列表来获取Debian存储库中的最新信息:

sudo apt-get update

您应该看到正在更新的包列表以及以下消息:

Reading package lists... Done.

有几个包以postgresql开头:

要直接安装postgresql-9.4包:

sudo apt-get install postgresql-9.4 postgresql-client-9.4

当被询问时,键入Y以安装软件包。如果一切顺利,现在可以从存储库下载并安装软件包。

检查安装

要检查PostgreSQL服务器是否已正确安装并且正在运行,您可以使用ps命令:

# ps -ef | grep postgre

你应该在终端上看到这样的东西:

postgres 32164     1  0 21:58 ?        00:00:00 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/   postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf
postgres 32166 32164  0 21:58 ?        00:00:00 postgres: checkpointer process
postgres 32167 32164  0 21:58 ?        00:00:00 postgres: writer process
postgres 32168 32164  0 21:58 ?        00:00:00 postgres: wal writer process
postgres 32169 32164  0 21:58 ?        00:00:00 postgres: autovacuum launcher process
postgres 32170 32164  0 21:58 ?        00:00:00 postgres: stats collector process 

成功了!PostgreSQL已成功安装并正在运行。

访问PostgreSQL数据库

在Debian上,PostgreSQL安装时默认用户和默认数据库都叫postgres。要连接到数据库,首先需要在以root身份登录时通过发出以下命令切换到用户postgres(这不适用于sudo访问):

su - postgres

你现在应该已经作为postgres登录。要启动PostgreSQL控制台,请键入psql

psql

完成了!您已经登录了PostgreSQL控制台。您应该看到以下提示:

psql (9.4.2)
Type "help" for help.
​
postgres=# 

要退出psql控制台,只需使用\q命令即可。

创造新角色

默认情况下,Postgres使用称为“角色”的概念来帮助进行身份验证和授权。在某些方面,这些类似于常规的Unix风格帐户,但PostgreSQL不区分用户和组,而是更喜欢更灵活的术语“角色”。

安装后,PostgreSQL设置为使用“ident”身份验证,这意味着它将PostgreSQL角色与匹配的Unix / Linux系统帐户相关联。如果存在PostgreSQL角色,则可以通过登录到关联的Linux系统帐户来登录。

安装过程创建了一个名为postgres的用户帐户,该帐户与默认的Postgres角色相关联。

要创建其他角色,我们可以使用createuser命令。请注意,此命令应以用户postgres的身份发布,而不是在PostgreSQL控制台内部:

createuser --interactive

这基本上是一个交互式shell脚本,它调用正确的PostgreSQL命令来根据您的规范创建用户。它会问你一些问题:角色的名称,是否应该是超级用户,角色是否应该能够创建新数据库,以及角色是否能够创建新角色。man页面包含更多信息:

man createuser

创建新数据库

PostgreSQL默认设置为匹配系统帐户请求的身份验证角色。它还假设存在匹配数据库以供角色连接。因此,如果我有一个被调用的用户test1,该角色将尝试连接到默认调用的数据库test1

您只需以postgres用户身份调用此命令即可创建相应的数据库:

createdb test1

现在创建了新数据库test1

使用新用户连接到PostgreSQL

假设您有一个名为test1的Linux的帐户,创建了一个匹配它的PostgreSQL 角色test1,并创建了数据库test1。要将Linux中的用户帐户更改为test1

su - test1

然后,使用以下命令以PostgreSQL角色test1连接到数据库test1

psql

现在您应该看到PostgreSQL提示与新创建的用户test1而不是postgres

创建和删除表

既然您已经知道如何连接到PostgreSQL数据库系统,我们将开始讨论如何完成一些基本任务。

首先,让我们创建一个表来存储一些数据。让我们创建一个描述游乐场设备的表格。

此命令的基本语法如下:

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

如您所见,我们为表提供一个名称,然后定义我们想要的列,以及字段数据的列类型和最大长度。我们还可以选择为每列添加表约束。

出于我们的目的,我们将创建一个这样的简单表:

CREATE TABLE playground (
    equip_id serial PRIMARY KEY,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
    install_date date
);

我们制作了一个playground table,可以用于清点我们拥有的设备。这从设备ID开始,该ID是串行类型。此数据类型是自动递增整数。我们已经为此列提供了主键的约束,这意味着值必须是唯一的而不为空。

对于我们的两个列,我们没有给出字段长度。这是因为某些列类型不需要设置长度,因为类型隐含了长度。

然后我们给出设备类型和颜色的列,每个列都不能为空。然后,我们创建一个位置列并创建一个约束,该约束要求该值为八个可能值之一。最后一列是日期列,记录我们安装设备的日期。

要查看表,请在psql提示符下使用命令\dt。结果将类似于

             List of relations
 Schema |    Name    | Type  |  Owner 
--------+------------+-------+----------
 public | playground | table | postgres

如您所见,我们有playground table了。

添加,查询和删除表中的数据

现在我们已经创建了一个表,我们可以在其中插入一些数据。

让我们添加一张幻灯片和一个swing。我们通过调用我们想要添加的表,命名列然后为每列提供数据来完成此操作。我们的幻灯片和swing可以添加如下:

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

你应该注意到一些事情。首先,请记住不应引用列名,但是您输入的列值确实需要引号。

要记住的另一件事是我们不输入equip_id列的值。这是因为只要创建表中的新行,就会自动生成此项。

然后我们可以通过输入以下内容来获取我们添加的信息:

SELECT * FROM playground;

输出应该是

 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        1 | slide | blue   | south     | 2014-04-28
        2 | swing | yellow | northwest | 2010-08-16

在这里,您可以看到我们已成功填写equip_id,并且所有其他数据都已正确组织。如果我们的幻灯片断开,我们将它从操场上移除,我们也可以通过键入以下内容从表中删除行:

DELETE FROM playground WHERE type = 'slide';

如果我们再次查询我们的表:

SELECT * FROM playground;

我们将看到我们的幻灯片不再是表格的一部分:

 equip_id | type  | color | location | install_date 
----------+-------+-------+----------+--------------
        1 | slide | blue  | south    | 2014-04-28

有用的命令

以下是一些可以帮助您了解当前环境的命令:

  • \?:获取psql命令的完整列表,包括此处未列出的命令。
  • \ h:获取有关SQL命令的帮助。您可以使用特定命令执行此操作以获取语法帮助。
  • \ q:退出psql程序并退出到Linux提示符。
  • \ d:列出当前数据库中的可用表,视图和序列。
  • \ du:列出可用角色。
  • \ dp:列出访问权限。
  • \ dt:列出表格。
  • \ l:列出数据库。
  • \ c:连接到其他数据库。按照数据库名称进行操作。
  • \ password:更改后续用户名的密码。
  • \ conninfo:获取有关当前数据库和连接的信息。

使用这些命令,您应该能够立即导航PostgreSQL数据库,表和角色。

结论

您现在应该在Debian系统上启动并运行功能齐全的PostgreSQL数据库。恭喜!这里有大量的文档:

  • PostgreSQL手册
  • 安装postgresql-doc包:sudo apt-get install postgresql-doc
  • README 文件安装在 /usr/share/doc/postgresql-doc-9.4/tutorial/README

有关PostgreSQL中支持的SQL命令的完整列表,请访问以下链接:

想要了解更多关于安装和使用PostgreSQL 9.4的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Install and Use PostgreSQL 9.4 on Debian 8》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏文渊之博

Elasticsearch-深入理解索引原理

最近开始大面积使用ES,很多地方都是知其然不知其所以然,特地翻看了很多资料和大牛的文档,简单汇总一篇。内容多为摘抄,说是深入其实也是一点浅尝辄止的理解。希望...

1.5K5
来自专栏数据和云

如何在多租户环境下使用数据库的闪回功能

编辑手记:对于数据库的闪回功能,可能大家都不陌生,那么如何在多租户环境下使用该功能,如果关闭了表空间的闪回功能,会给数据库带来哪些影响?我们一起来学习。 本文来...

3445
来自专栏文渊之博

SQLServer中的死锁的介绍

简介 什么是死锁?      我认为,死锁是由于两个对象在拥有一份资源的情况下申请另一份资源,而另一份资源恰好又是这两对象正持有的,导致两对象无法完成操作,且...

2485
来自专栏猿天地

solr or es 结合弥补mongodb的全文检索功能

最近将公司的solr集群升级到了最新的6.5版本。 之前用了N年的是3点多的版本,那个时候solr还不支持自带的集群,集群方式都是自己实现的。 公司里用的最多的...

48114
来自专栏Java后端技术

Spring+SpringMvc+Mybatis框架集成搭建教程四(项目部署及测试)

(1).点击如下图所示的下拉按钮,弹出Edit Configurations...后点击该项。

823
来自专栏林欣哲

MySQL数据库备份和恢复

2442
来自专栏蔡鹏的专栏

【腾讯云的1001种玩法】自建SQL Server迁移云SQL Server过程小记

使用云SQL Server实例的好处可能大家都知道 ,数据的安全性会得到保障,云有迁移工具,但貌似需要同版本迁移才可以,我的生成环境是SQL Server 20...

1.1K0
来自专栏Linux运维学习之路

MySQL体系结构及多实例

MySQL客户端和服务器端模型 MySQL是一个典型C/S,服务器端与客户端两部分组成 服务器端程序  mysqld mysql自带的客户端(mysql mys...

38312
来自专栏python3

解决centos7 /etc/rc.local 不能执行

最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了

1402
来自专栏Danny的专栏

SQL Server 2008 附加数据库时出错

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

2.7K3

扫码关注云+社区

领取腾讯云代金券