当前位置: 首页 > news >正文

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

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

关系型数据库是满足多种需求的数据组织的基石。它们支持从在线购物到火箭发射等各种应用。PostgreSQL 是一种历史悠久但仍然活跃的数据库,它遵循大部分 SQL 标准,支持 ACID 事务,支持外键和视图,并且仍在积极开发中。

如果你运行的应用程序需要稳定性、软件包质量和简单的管理,Debian 8(代号“Jessie”)是 Linux 发行版中最佳的选择之一。它的更新速度比其他“发行版”慢一些,但其稳定性和质量得到了广泛认可。如果你的应用程序或服务需要数据库,Debian 8 和 PostgreSQL 的组合是最佳选择之一。

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

先决条件

首先要做的是启动 Debian 8 Stable 系统。你可以按照《使用 Debian 8 进行初始服务器设置》中的说明进行操作。本教程假设你已经准备好了一个 Debian 8 Stable Droplet。

除非另有说明,本教程中的所有命令都应该以具有 sudo 权限的非 root 用户身份运行。要了解如何创建用户并授予他们 sudo 权限,请查看《使用 Debian 8 进行初始服务器设置》。

安装 PostgreSQL

在安装 PostgreSQL 之前,请确保通过以下命令更新 apt 软件包列表,以获取来自 Debian 软件仓库的最新信息:

sudo apt-get update

你应该看到软件包列表正在更新,并出现以下消息:

Reading package lists... Done.

有几个以 postgresql 开头的软件包:

  • postgresql-9.4:PostgreSQL 服务器软件包
  • postgresql-client-9.4:PostgreSQL 客户端
  • postgresql:Debian 手册或 Debian 新维护者指南中更好解释的“元软件包”

要直接安装 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 的默认用户和默认数据库。要连接到数据库,首先需要切换到 postgres 用户,方法是在以 root 用户登录的情况下发出以下命令(使用 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 默认设置了通过匹配系统帐户请求的身份验证角色(您可以在 postgresql.org 上获取更多信息)。它还假定匹配的数据库将存在于角色连接的数据库中。因此,如果我有一个名为 test1 的用户,该角色将默认尝试连接到名为 test1 的数据库。

您可以通过简单地以 postgres 用户的身份调用以下命令来创建适当的数据库:

createdb test1

现在已创建了新数据库 test1

使用新用户连接到 PostgreSQL

假设您有一个名为 test1 的 Linux 帐户,创建了一个 PostgreSQL test1 角色与之匹配,并创建了数据库 test1。要在 Linux 中切换用户帐户为 test1

su - test1

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

psql

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

创建和删除表

现在您知道如何连接到 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)
);

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

您可以在《如何在云服务器上创建、删除和管理 PostgreSQL 表》文章中了解有关如何在 Postgres 中创建和管理表的更多信息。

对于我们的目的,我们将创建一个类似于以下内容的简单表:

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
);

我们已经创建了一个记录我们拥有的设备的游乐场表。这始于一个设备 ID,它是序列类型的。此数据类型是自增整数。我们已经给了这个列主键的约束,这意味着值必须是唯一的且不为空。

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

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

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

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

如您所见,我们有我们的游乐场表。

向表中添加、查询和删除数据

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

让我们添加一个滑梯和一个秋千。我们通过调用我们要添加到的表,命名列,然后为每个列提供数据来完成这个操作。我们的滑梯和秋千可以这样添加:

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-282 | 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-docsudo apt-get install postgresql-doc

  • 安装在 /usr/share/doc/postgresql-doc-9.4/tutorial/READMEREADME 文件

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

  • SQL 命令

要比较不同数据库的功能,请查看:

  • SQLite vs MySQL vs PostgreSQL

要更好地理解角色和权限,请参阅:

  • 如何在 VPS 上使用角色和管理授予权限的 PostgreSQL

相关文章:

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

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 关系型数据库是满足多种需求的数据组织的基石。它们支持从在线购物到火箭发射等各种应用。PostgreSQL 是一种历史悠久但仍然活跃的…...

【微信小程序】微信小程序设置本地背景图片在真机无法显示的解决方案

微信小程序设置本地背景图片在真机无法显示的解决方案 在开发微信小程序时,很多开发者会遇到一个常见的问题:在调试环境中设置本地背景图片可以正常显示,但在真机上却无法显示。本文将详细探讨这一问题的原因,并提供三种解决方案…...

Arthas在线诊断案例实战整理

Arthas - Java 应用诊断利器 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法…...

使用 XRDP 远程linux主机

一、简介 XRDP是一个开源的远程桌面协议(Remote Desktop Protocol,RDP)服务器,采用的是标准的RDP。 官网地址:https://www.xrdp.org/ github地址: https://github.com/neutrinolabs/xrdp/releases XRDP也是C/S架构&…...

学习小型gpt源码(自用)

数据集构建_哔哩哔哩_bilibili (b站上有一系列课,从数据处理到模型构建和训练使用) 什么是batch? 为什么一个batch内的句子要一样长? 不同batch的长度可以不一样,但是同一个batch内长度一样!…...

@Transactional使用的注意事项

在项目中涉及到CRUD操作时,一般都会在方法上添加该注解,以为加上Transactional,Spring就可以自动帮我们进行事务的开启、提交 有一个很多人都会犯的误区: 将Spring事务与Transactional划上了等号,只要有数据库相关操作…...

快手可灵视频生成大模型全方位测评

快手视频生成大模型“可灵”(Kling),是全球首个真正用户可用的视频生成大模型,自面世以来,凭借其无与伦比的视频生成效果,在全球范围内赢得了用户的热烈追捧与高度评价。截至目前,申请体验其内测…...

【JavaScript】`Map` 数据结构

文章目录 一、Map 的基本概念二、常见操作三、与对象的对比四、实际应用场景 在现代 JavaScript 中,Map 是一种非常重要且强大的数据结构。与传统的对象(Object)不同,Map 允许您使用各种类型的值作为键,不限于字符串或…...

Ubuntu22.04使用NVM安装多版本Node.js和版本切换

Fabric官方目前支持Node.js开发区块链应用,建议使用Node长期支持版本(LTS)。 建议使用NVM安装Node.js,NVM可以帮助我们方便的在Node的不同版本之间进行切换,这样我们就可以同时工作在不同的项目上。 下面是安装的脚本…...

基于C51和OLED12864实现Goole小恐龙

在数字娱乐领域,Google小恐龙(T-Rex Runner)以其简单而上瘾的游戏机制赢得了广泛的关注和喜爱。这款内置于Chrome浏览器的离线小游戏,不仅为用户带来了乐趣,也激发了开发者们对其进行各种创新和扩展的灵感。本文将介绍…...

【Docker】CentOS7环境下的安装

环境展示 安装 配置仓库 sudo yum install -y yum-utils # docker官方key文件下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 建议使用阿里云key文件下载 sudo yum-config-manager --add-repo https://mirrors.aliyun.…...

浏览器的最大并发数(http1.1)

HTTP/1.1:每个资源请求通常需要单独的TCP连接,尽管支持Keep-Alive机制,允许在同一个TCP连接上连续发送多个请求。但通常浏览器限制并发TCP连接数(例如,每个域名最多6个并发连接)。 HTTP/2:引入…...

Android 开发中px、dpi 和 dp三个单位的介绍

Android 开发中px、dpi 和 dp三个单位的介绍 在 Android 开发中,px、dpi 和 dp 是用来描述屏幕尺寸和密度的单位,它们在设计和开发中有着不同的作用和用途。 1. px(像素) 定义: px 表示屏幕上的一个像素点&#xff0c…...

zookeeper开启SASL权限认证

目录 一、SASL介绍 二、使用 SASL 进行身份验证 2.1 服务器到服务器的身份验证 2.2 客户端到服务器身份验证 三、验证功能 一、SASL介绍 默认情况下,ZooKeeper 不使用任何形式的身份验证并允许匿名连接。但是,它支持 Java 身份验证与授权服务(JAAS)…...

mysql一个小问题引发的思考-mysql类型转换-查询缓存 及 MYSQL查询缓存以及自动选择不使用查询缓存的情况

一、mysql一个小问题引发的思考-mysql类型转换-查询缓存 最近在做的一个项目中有一个SQL语句发现点问题,大概如下: select * from table where cid0 or find_in_set(1, cid); 数据表中的字段cid是字符串类型,原来的后端同学未提过此字段还能是…...

css更改图片颜色

css更改图片颜色&#xff0c;比较时候颜色单一的图片&#xff0c;比如logo之类的 css中的 filter 属性定义元素&#xff08;通常是 <img>&#xff09;的视觉效果&#xff08;如模糊和饱和度&#xff09; img{ -webkit-filter: invert(51%) sepia(94%) saturate(6433%) h…...

通过POST请求往Elastic批量插入数据

文章目录 引言I 请求文档请求参数请求例子引言 调试工具:Apifox 需求: 向Elasticsearch中的’test_index’索引批量插入文档 情况认证: Basic Auth 在 Header 添加参数 Authorization,其值为在 Basic 之后拼接空格,以及经过 Base64 编码的 {{Username}}:{{Password}} 示…...

JAW:一款针对客户端JavaScript的图形化安全分析框架

关于JAW JAW是一款针对客户端JavaScript的图形化安全分析框架&#xff0c;该工具基于esprima解析器和EsTree SpiderMonkey Spec实现其功能&#xff0c;广大研究人员可以使用该工具分析Web应用程序和基于JavaScript的客户端程序的安全性。 工具特性 1、动态可扩展的框架&#x…...

错误解决 error CS0117: ‘Buffer‘ does not contain a definition for ‘BlockCopy‘

Unity 2022.3.9f1 导入 Runtime OBJ Importer 后出现&#xff1a; error CS0117: ‘Buffer’ does not contain a definition for ‘BlockCopy’ 解决办法&#xff1a; 源代码&#xff1a; int DDS_HEADER_SIZE 128; byte[] dxtBytes new byte[ddsBytes.Length - DDS_HEAD…...

ICMPv6与DHCPv6之网络工程师软考中级

ICMPv6概述 ICMPv6是IPv6的基础协议之一。 在IPv6报文头部中&#xff0c;Next Header字段值为58则对应为ICMPv6报文。 ICMPv6报文用于通告相关信息或错误。 ICMPv6报文被广泛应用于其它协议中&#xff0c;包括NDP、Path MTU发现机制等 ICMPv6控制着IPv6中的地址自动配置、地址…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了&#xff0c;很多小伙伴想体验鸿蒙电脑版操作系统&#xff0c;可惜&#xff0c;鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机&#xff0c;来体验大家心心念念的鸿蒙系统啦&#xff01;注意&#xff1a;虚拟…...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...