ubuntu 22.04安装PostgreSQL

关系数据库管理系统是许多网站和应用程序的关键组件。 它们提供了一种结构化的方式来存储、组织和访问信息。

PostgreSQL 或 Postgres 是一种关系数据库管理系统,它提供 SQL 查询语言的实现。 它符合标准并具有许多高级功能,例如可靠的事务处理和没有读锁的并发性。

本文档说明了如何在 Ubuntu 22.04 服务器上安装 Postgres。 它还为一般数据库管理提供了一些说明。

安装PostgresSQL

Ubuntu 的默认存储库包含 Postgres 包,因此您可以使用 apt 打包系统安装它们。

刷新本地包索引:

sudo apt update

然后,安装 Postgres 包以及添加一些额外实用程序和功能的 -contrib 包:

sudo apt install postgresql postgresql-contrib

使用 systemctl start 命令确保服务正在运行:

sudo systemctl start postgresql.service

现在该软件已安装并运行,我们可以了解它的工作原理以及它与您可能使用过的其他关系数据库管理系统的不同之处。

使用 PostgreSQL 角色和数据库

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

安装后,Postgres 设置为使用对等身份验证,这意味着它将 Postgres 角色与匹配的 Unix/Linux 系统帐户相关联。 如果 Postgres 中存在角色,则具有相同名称的 Unix/Linux 用户名可以作为该角色登录。

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

有几种方法可以使用此帐户访问 Postgres。

切换到 postgres 帐户

通过键入以下内容切换到服务器上的 postgres 帐户:

sudo -i -u postgres

您现在可以通过键入以下内容立即访问 PostgreSQL 提示符:

psql

从那里您可以根据需要自由地与数据库管理系统进行交互。

通过键入以下内容退出 PostgreSQL 提示符:

\q

这会将您带回 postgres Linux 用户的命令行。

在不切换帐户的情况下访问 Postgres 命令行

您也可以直接使用 sudo 使用 postgres 帐户运行您想要的命令。

例如,在最后一个示例中,您被指示通过首先切换到 postgres 用户然后运行 psql 打开 Postgres 提示符来进入 Postgres 提示符。 您可以通过以 postgres 用户身份使用 sudo 运行单个命令 psql 来一步完成此操作,如下所示:

sudo -u postgres psql

这将使您直接登录到 Postgres,而无需中间的 bash shell。

同样,您可以通过键入以下命令退出交互式 Postgres 会话:

\q

许多用例需要多个 Postgres 角色。 继续阅读下文以了解如何配置这些。

创建新角色

目前,您在数据库中配置了 postgres 角色。 您可以使用 createuser 命令从命令行创建新角色。 --interactive 标志将提示您输入新角色的名称,并询问它是否应该具有超级用户权限。

如果您以 postgres 帐户登录,则可以通过键入以下内容来创建新用户:

createuser --interactive

相反,如果您更喜欢在不从普通帐户切换的情况下对每个命令使用 sudo,请键入:

sudo -u postgres createuser --interactive

该脚本将提示您做出一些选择,并根据您的回答执行正确的 Postgres 命令以创建符合您规范的用户。

Output
Enter name of role to add: sammy
Shall the new role be a superuser? (y/n) y

您可以通过传递一些额外的标志来获得更多控制。 通过查看 createuser 命令的手册页来检查选项:

man createuser

您安装的 Postgres 现在有了一个新用户,但您还没有添加任何数据库。 下一节将描述这个过程。

为角色设置登录密码:

alter role sammy with password 'sammy123';

创建数据库

Postgres 身份验证系统默认做出的另一个假设是,对于用于登录的任何角色,该角色将拥有一个它可以访问的同名数据库。

这意味着如果您在上一节中创建的用户名为 sammy,则默认情况下该角色将尝试连接到也称为“sammy”的数据库。 您可以使用 createdb 命令创建适当的数据库。

如果您以 postgres 帐户登录,您将键入如下内容:

createdb sammy

相反,如果您更喜欢在不从普通帐户切换的情况下对每个命令使用 sudo,您可以键入:

sudo -u postgres createdb sammy

这种灵活性为根据需要创建数据库提供了多种途径。

使用新角色打开 Postgres命令行

要使用对等身份验证登录,您需要一个与您的 Postgres 角色和数据库同名的 Linux 用户。

如果没有可用的匹配 Linux 用户,可以使用 adduser 命令创建一个。 您必须从具有 sudo 权限的非根帐户执行此操作(意思是,不是以 postgres 用户身份登录):

sudo adduser sammy

一旦这个新帐户可用,您可以通过键入以下内容切换并连接到数据库:

sudo -i -u sammy
psql

或者你也可以:

sudo -u sammy psql

假设所有组件都已正确配置,此命令将自动让您登录。

如果您希望您的用户连接到不同的数据库,您可以通过如下指定数据库来实现:

psql -d postgres

登录后,您可以通过键入以下内容来检查当前的连接信息:

\conninfo
Output
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

如果您连接到非默认数据库或非默认用户,这将很有用。

创建和删除表

现在您知道如何连接到 PostgreSQL 数据库系统,您可以学习一些基本的 Postgres 管理任务。

创建表的基本语法如下:

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

此命令将创建一个表,用于清点游乐场设备。 表中的第一列将保存序列类型的设备 ID 号,它是一个自动递增的整数。 此列还具有 PRIMARY KEY 的约束,这意味着其中的值必须是唯一的且不能为空。

接下来的两行分别为设备类型和颜色创建列,它们都不能为空。 这些之后的行创建了一个位置列,其约束要求值是八个可能值之一。 最后一行创建一个日期列,记录您安装设备的日期。

对于其中两列(equip_id 和 install_date),该命令未指定字段长度。 这样做的原因是某些数据类型不需要设置长度,因为长度或格式是隐含的。

通过键入以下内容检查您的新表:

\d

得到:

Output
                  List of relations
 Schema |          Name           |   Type   | Owner 
--------+-------------------------+----------+-------
 public | playground              | table    | sammy
 public | playground_equip_id_seq | sequence | sammy
(2 rows)

你的 playground 表在这里,但还有一个叫做 playground_equip_id_seq 的东西,它是序列类型的。 这是您为 equip_id 列提供的序列类型的表示。 这会跟踪序列中的下一个数字,并为此类列自动创建。

如果只想查看没有序列的表,可以键入:

\dt
Output
          List of relations
 Schema |    Name    | Type  | Owner 
--------+------------+-------+-------
 public | playground | table | sammy
(1 row)

准备好表格后,让我们用它来练习管理数据。

在表中新增、查询和删除数据

现在您有了一个表,您可以向其中插入一些数据。 例如,通过调用要添加到的表、命名列然后为每一列提供数据来添加幻灯片和秋千,如下所示:

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

输入数据时应小心,以避免出现一些常见的挂断。 其一,不要将列名用引号引起来,但您输入的列值确实需要引号。

另一件要记住的事情是您没有为 equip_id 列输入值。 这是因为每当您向表中添加新行时,它都会自动生成。

通过键入以下内容检索您添加的信息:

SELECT * FROM playground;
Output
 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        1 | slide | blue   | south     | 2017-04-28
        2 | swing | yellow | northwest | 2018-08-16
(2 rows)

请注意,您的 equip_id 已成功填写,并且所有其他数据已正确组织。

如果 playground 上的幻灯片坏了而你必须将其删除,你也可以通过键入以下内容从表格中删除该行:

DELETE FROM playground WHERE type = 'slide';

再次查表:

SELECT * FROM playground;

得到:

Output
 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        2 | swing | yellow | northwest | 2018-08-16
(1 row)

请注意,幻灯片行不再是表格的一部分。

从表中新增和删除列

创建表后,您可以通过添加或删除列来修改它。 通过键入以下内容添加一列以显示每台设备的最后一次维护访问:

ALTER TABLE playground ADD last_maint date;

再次查看您的表信息。 已添加新列但未输入任何数据:

SELECT * FROM playground;
Output
 equip_id | type  | color  | location  | install_date | last_maint 
----------+-------+--------+-----------+--------------+------------
        2 | swing | yellow | northwest | 2018-08-16   | 
(1 row)

如果您发现您的工作人员使用单独的工具来跟踪维护历史记录,您可以通过键入以下内容来删除该列:

ALTER TABLE playground DROP last_maint;

这将删除 last_maint 列和其中找到的任何值,但保留所有其他数据不变。

更新表中的数据

到目前为止,您已经学习了如何向表中添加记录以及如何删除它们,但本教程尚未涵盖如何修改现有条目。

您可以通过查询所需的记录并将列设置为您希望使用的值来更新现有条目的值。 您可以查询挥杆记录(这将匹配您表中的每个挥杆)并将其颜色更改为红色。 如果您给秋千套装涂漆,这可能会有用:

UPDATE playground SET color = 'red' WHERE type = 'swing';

您可以通过再次查询数据来验证操作是否成功:

SELECT * FROM playground;
Output
 equip_id | type  | color | location  | install_date 
----------+-------+-------+-----------+--------------
        2 | swing | red   | northwest | 2018-08-16
(1 row)

该幻灯片现在注册为红色。

结论

您现在已在 Ubuntu 22.04 服务器上设置了 PostgreSQL。

原文地址:https://blog.csdn.net/weixin_39636364/article/details/131175994

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,但是对于懂数据库却不熟悉Oracle的同学可能会有一定的障碍。正好在最近的一个项目中碰到了这样一个任务,于是研究了一下Oracle的数据导入导出,在这里跟大家分享一下。......_oracle 迁移方法 对比
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共700多人左右 1 + 2)。最近我们在使用MYSQL 8 的情况下(8.025)在数据库运行中出现一个问题 参数prefer_order_i..._mysql prefer_ordering_index
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才成功连上,在这分享一下我的经验,也仅仅是经验分享,有不足的地方欢迎大家在评论区补充交流。_navicat连接opengauss
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation。它是一种开放标准格式,将数据组织成中详述的键/值对和数组。_postgresql json
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgresql 注:navicat老版本可能报错。1.在springboot中引入我们需要的依赖以及相应版本。用代码生成器生成代码后,即可进行增删改查(略)安装好postgresql 略。更改配置信息(注释中有)_mybatisplus postgresql
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解析、修改、删除、更新、强制踢出数据库所有使用用户、连表更新与删除、获取今年第一天、获取近12个月的年月、锁表处理、系统表使用(查询所有表和字段及注释、查询表占用空间)、指定数据库查找模式search_path、postgre备份及还原_pgsql分组取每组第一条
文章浏览阅读3.3k次。上一篇我们学习了日志清理,日志清理虽然解决了日志膨胀的问题,但就无法再恢复检查点之前的一致性状态。因此,我们还需要日志归档,pg的日志归档原理和Oracle类似,不过归档命令需要自己配置。以下代码在postmaster.c除了开启归档外,还需要保证wal_level不能是MINIMAL状态(因为该状态下有些操作不会记录日志)。在db启动时,会同时检查archive_mode和wal_level。以下代码也在postmaster.c(PostmasterMain函数)。......_postgresql archive_mode
文章浏览阅读3k次。系统:ubuntu22.04.3目的:利用向日葵实现windows远程控制ubuntu。_csdn局域网桌面控制ubuntu
文章浏览阅读1.6k次。表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会造成查询变慢,可能分区是一种解决方案。一般建议当单表大小超过内存就可以考虑表分区了。1,继承式分区,分为触发器(trigger)和规则(rule)两种方式触发器的方式1)创建表CREATE TABLE "public"."track_info_trigger_partition" ( "id" serial, "object_type" int2 NOT NULL DEFAULT 0, "object_name..._pg数据表分区的实现
文章浏览阅读3.3k次。物联网平台开源的有几个,就我晓得的有、、thingskit、JetLink、DG-iot(还有其他开源的,欢迎在评论区留言哦!),然后重点分析了下ThingsBoard、ThingsPanel和JetLink,ThingsBoard和Jetlinks是工程师思维产品,可以更多的通过配置去实现开发的目的,ThingsPanel是业务人员思路产品,或者开发或者用,避免了复杂的配置带来的较高学习门槛。ThingsBoard和Jetlinks是Java技术体系的,ThingsPanel是PHP开发的。_jetlinks和thingsboard
文章浏览阅读3.8k次。PostgreSQL 数据类型转换_pgsql数字转字符串
文章浏览阅读7k次,点赞3次,收藏14次。在做数据统计页面时,总会遇到统计某段时间内,每天、每月、每年的数据视图(柱状图、折线图等)。这些统计数据一眼看过去也简单呀,不就是按照时间周期(天、月、年)对统计数据进行分个组就完了嘛?但是会有一个问题,简单的写个sql对周期分组,获取到的统计数据是缺失的,即没有数据的那天,整条记录也都没有了。如下图需求:以当前月份(2023年2月)为起点,往后倒推一年,查询之前一年里每个月的统计数据。可见图中的数据其实是缺少的,这条sql只查询到了有数据的月份(23年的1月、2月,22年的12月)_如何用一条sql查出按年按月按天的汇总
文章浏览阅读3.8k次,点赞66次,收藏51次。PostgreSQL全球开发小组与2022年10月13日,宣布发布PostgreSQL15,这是世界上最先进的开源数据库的最新版本_mysql8 postgresql15
文章浏览阅读1.3k次。上文介绍了磁盘管理器中VFD的实现原理,本篇将从上层角度讲解磁盘管理器的工作细节。_smgrrelationdata
文章浏览阅读1.1k次。PostgreSQL设置中文语言界面和局域网访问_postgressql汉化
文章浏览阅读4.2k次。PostgreSQL 修改数据存储路径_如何设置postgresql 数据目录
文章浏览阅读4.7k次。在项目中用到了多数据源,在连接postgres数据库时,项目启动报错,说数据库连接错误,说dual不存在,网上好多教程都是说数据库查询的时候的大小写问题,而这个仅仅是连接,咋鞥却处理方法是修改application-dev.yml中的配置文件.项目中的druid参数是这样的:确实在配置文件中有个查询语句。_relation "dual" does not exist
文章浏览阅读4.9k次。PostgreSQL是一款强大的关系型数据库,但在实际使用过程中,许多用户经常会遇到慢SQL的问题。这些问题不仅会降低数据库性能,还会直接影响业务流程和用户体验。因此,本文将会深入分析PostgreSQL慢SQL的原因和优化方案,帮助用户更好地利用这个优秀的数据库系统。无论你是初学者还是专业开发者,本文都将为你提供实用的技巧和方法,让你的PostgreSQL数据库始终保持高效快速。_postgresql数据库优化
文章浏览阅读1.6k次。Linux配置postgresql开机自启_linux 启动pgsql
文章浏览阅读2k次。本篇介绍如何在centos7系统搭建一个postgresql主备集群实现最近的HA(高可用)架构。后续更高级的HA模式都是基于这个最基本的主备搭建。_postgresql主备