PostgreSQL 的安装与初始设置

PostgreSQLPostgreSQLBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将在 LabEx 虚拟机上安装并完成 PostgreSQL 的初始设置。目标是让 PostgreSQL 启动并运行,并验证其基本功能。

你将首先更新软件包列表,然后安装 PostgreSQL 服务器以及 postgresql-contrib 软件包。安装完成后,你将使用 pg_isready 命令验证 PostgreSQL 服务是否正在运行并接受连接。最后,你将探索默认数据库,并检查服务器状态和基本配置。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"]) postgresql/PostgreSQLGroup -.-> postgresql/db_setup("Create New Database") postgresql/PostgreSQLGroup -.-> postgresql/db_access("Connect To Database") postgresql/PostgreSQLGroup -.-> postgresql/db_status("Check Database Status") postgresql/PostgreSQLGroup -.-> postgresql/sys_version("Get Server Version") subgraph Lab Skills postgresql/db_setup -.-> lab-550900{{"PostgreSQL 的安装与初始设置"}} postgresql/db_access -.-> lab-550900{{"PostgreSQL 的安装与初始设置"}} postgresql/db_status -.-> lab-550900{{"PostgreSQL 的安装与初始设置"}} postgresql/sys_version -.-> lab-550900{{"PostgreSQL 的安装与初始设置"}} end

安装 PostgreSQL 并验证安装

在这一步中,你将在 LabEx 虚拟机上安装 PostgreSQL,并验证安装是否成功。PostgreSQL 是一款强大的开源关系型数据库管理系统(RDBMS)。

首先,让我们更新软件包列表,以便进行升级和新软件包的安装。在 LabEx 虚拟机中打开一个终端。你可以在桌面上找到终端图标。

执行以下命令:

sudo apt update

此命令会更新可用软件包及其版本的列表,但不会安装或升级任何软件包。你应该会看到表明软件包列表正在更新的输出信息。

接下来,安装 PostgreSQL 服务器和 postgresql-contrib 软件包。postgresql-contrib 软件包提供了许多实用的额外工具和功能。

执行以下命令:

sudo apt install postgresql postgresql-contrib -y
postgresql-contrib

-y 标志会在安装过程中自动对所有提示回答“yes”。此命令将下载并安装 PostgreSQL 及其相关软件包。在下载和安装软件包的过程中,你会看到大量输出信息。

安装完成后,你需要验证 PostgreSQL 是否正在运行。安装完成后,PostgreSQL 应该会自动启动。

要检查 PostgreSQL 服务的状态,请执行以下命令:

sudo service postgresql status

你也可以使用 pg_isready 命令来检查 PostgreSQL 服务器是否正在运行并接受连接。

执行以下命令:

pg_isready

如果 PostgreSQL 正在运行,你应该会看到以下输出:

/var/run/postgresql:5432 - accepting connections

如果 PostgreSQL 没有运行,你可能会看到类似以下的错误消息:

/var/run/postgresql:5432 - no response

如果你遇到“no response”错误,请尝试重启 PostgreSQL 服务。你可以尝试执行以下命令:

sudo service postgresql restart

然后,再次运行 pg_isready 命令来检查状态。

pg_isready

如果 pg_isready 显示“accepting connections”,则表明 PostgreSQL 已成功安装并正在运行。

访问 PostgreSQL 命令行工具 (psql)

在这一步中,你将访问 PostgreSQL 命令行工具 psql,它是一个用于与 PostgreSQL 数据库进行交互的命令行工具。psql 允许你执行 SQL 查询、管理数据库以及执行其他管理任务。

默认情况下,PostgreSQL 会创建一个名为 postgres 的 Unix 用户,该用户对应于 PostgreSQL 的超级用户。要访问 psql 命令行工具,你可以切换到 postgres 用户,也可以使用 sudopostgres 用户的身份运行命令。

首先,让我们切换到 postgres 用户。执行以下命令:

sudo -i -u postgres

此命令会将当前用户切换为 postgres。你会注意到命令提示符会发生变化,以反映新的用户身份。

现在你已经以 postgres 用户身份登录,你可以访问 psql 命令行工具。执行以下命令:

psql

此命令将打开 psql 命令行工具。你应该会看到类似如下的提示符:

postgres=#

这表明你已连接到 PostgreSQL 服务器,现在可以执行 SQL 命令了。

要退出 psql 命令行工具,请输入 \q 并按回车键:

postgres=## \q

这将使你返回到 postgres 用户的 shell。

要退出 postgres 用户的 shell 并返回到你原来的用户 (labex),请输入 exit 并按回车键:

exit

或者,你可以使用 sudo 直接以 labex 用户的身份访问 psql 命令行工具。这样就无需切换用户。

psql

执行以下命令:

sudo -u postgres psql

此命令以 postgres 用户的身份运行 psql 命令。你将直接连接到 psql 命令行工具。

同样,要退出 psql 命令行工具,请输入 \q 并按回车键:

postgres=## \q

这将使你返回到 labex 用户的 shell。

总之,你已经学习了两种访问 psql 命令行工具的方法:切换到 postgres 用户和使用 sudo。这两种方法的效果相同,但在某些情况下,使用 sudo 可能更方便。

探索默认数据库

在这一步中,你将探索安装 PostgreSQL 时创建的默认数据库。这些数据库提供了关于 PostgreSQL 服务器的基本功能和信息。

首先,以 postgres 用户身份访问 psql 命令行工具。你可以使用以下命令:

sudo -u postgres psql

进入 psql 命令行工具后,你可以使用 \l 命令列出可用的数据库。执行以下命令:

postgres=## \l

此命令将显示数据库列表,以及它们的所有者、编码和访问权限等信息。你至少会看到三个数据库:

  • postgres:这是你首次访问 psql 命令行工具时连接的默认数据库,常用于管理任务。
  • template0:该数据库用作创建新数据库的模板,你不应修改此数据库。
  • template1:这是另一个用于创建新数据库的模板数据库,它是一个标准模板,可以进行自定义。
psql-l

要连接到特定的数据库,你可以使用 \c 命令,后跟数据库名称。例如,要连接到 postgres 数据库,请执行以下命令:

postgres=## \c postgres

你会看到一条消息,表明你现在已连接到 postgres 数据库:

You are now connected to database "postgres" as user "postgres".

现在你已连接到 postgres 数据库,可以探索其内容。例如,你可以使用 \dt 命令列出数据库中的表:

postgres=## \dt

此命令将显示当前数据库中的表列表。由于 postgres 数据库主要用于管理任务,它可能不包含任何用户定义的表。

你还可以使用 \conninfo 命令查看当前数据库连接的信息:

postgres=## \conninfo

此命令将显示数据库名称、用户、主机和端口等信息。

要断开与当前数据库的连接并返回默认连接,你可以使用不带数据库名称的 \c 命令:

postgres=## \c

这将使你重新连接到默认数据库,通常是 postgres 数据库。

psql-c

最后,输入 \q 并按回车键退出 psql 命令行工具:

postgres=## \q

这将使你返回到 labex 用户的 shell。

在这一步中,你学习了如何列出可用的数据库、连接到特定的数据库,并使用 psql 命令行工具探索其内容。

检查服务器状态和基本配置

在这一步中,你将检查 PostgreSQL 服务器的状态,并探索一些基本的配置设置。

如前所述,由于 LabEx 虚拟机在 Docker 容器中运行,systemctl 命令可能无法按预期工作。你将主要使用 pg_isreadypsql 来检查服务器状态。

首先,让我们再次验证 PostgreSQL 服务器是否正在运行。执行以下命令:

pg_isready

如果 PostgreSQL 正在运行,你应该会看到以下输出:

/var/run/postgresql:5432 - accepting connections

接下来,让我们使用 psql 命令行工具检查一些基本的配置设置。以 postgres 用户身份访问 psql 命令行工具:

sudo -u postgres psql

进入 psql 命令行工具后,你可以使用以下 SQL 查询来检查 PostgreSQL 的版本:

SELECT version();

psql 命令行工具中执行此查询。你应该会看到类似于以下的输出:

                                                                version
----------------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.17 (Ubuntu 14.17-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit
(1 row)

这显示了服务器上安装的 PostgreSQL 版本。

你还可以检查当前的数据库用户:

SELECT user;

输出将是:

  user
----------
 postgres
(1 row)

要检查你当前连接的数据库名称,请使用:

SELECT current_database();

输出将是:

 current_database
------------------
 postgres
(1 row)

要查看配置设置,你可以使用 SHOW 命令。例如,要检查 listen_addresses 设置(该设置指定服务器监听连接的 IP 地址),执行以下命令:

SHOW listen_addresses;

输出可能是:

 listen_addresses
--------------------
 *
(1 row)

* 表示服务器正在监听所有可用的 IP 地址。

另一个值得检查的有用设置是 port,它指定服务器监听连接的端口号:

SHOW port;

输出将是:

 port
------
 5432
(1 row)

这表明服务器正在监听 5432 端口,这是 PostgreSQL 的默认端口。

psql-show

最后,输入 \q 并按回车键退出 psql 命令行工具:

postgres=## \q

这将使你返回到 labex 用户的 shell。

在这一步中,你学习了如何使用 pg_isreadypsql 命令行工具检查 PostgreSQL 服务器的状态,并探索一些基本的配置设置。

总结

在本次实验中,你使用 apt updateapt install postgresql postgresql-contrib -y 命令在 LabEx 虚拟机上安装了 PostgreSQL 关系型数据库管理系统(RDBMS)。其中,-y 标志用于在安装过程中自动接受提示。

安装完成后,你验证了 PostgreSQL 服务正在运行并接受连接。由于 LabEx 虚拟机在 Docker 容器中运行,你使用 pg_isready 命令而非 systemctl status postgresql 来检查服务器状态。当服务器运行时,pg_isready 的预期输出是 /var/run/postgresql:5432 - accepting connections