简介
在本次实验中,你将在 LabEx 虚拟机上安装并完成 PostgreSQL 的初始设置。目标是让 PostgreSQL 启动并运行,并验证其基本功能。
你将首先更新软件包列表,然后安装 PostgreSQL 服务器以及 postgresql-contrib
软件包。安装完成后,你将使用 pg_isready
命令验证 PostgreSQL 服务是否正在运行并接受连接。最后,你将探索默认数据库,并检查服务器状态和基本配置。
在本次实验中,你将在 LabEx 虚拟机上安装并完成 PostgreSQL 的初始设置。目标是让 PostgreSQL 启动并运行,并验证其基本功能。
你将首先更新软件包列表,然后安装 PostgreSQL 服务器以及 postgresql-contrib
软件包。安装完成后,你将使用 pg_isready
命令验证 PostgreSQL 服务是否正在运行并接受连接。最后,你将探索默认数据库,并检查服务器状态和基本配置。
在这一步中,你将在 LabEx 虚拟机上安装 PostgreSQL,并验证安装是否成功。PostgreSQL 是一款强大的开源关系型数据库管理系统(RDBMS)。
首先,让我们更新软件包列表,以便进行升级和新软件包的安装。在 LabEx 虚拟机中打开一个终端。你可以在桌面上找到终端图标。
执行以下命令:
sudo apt update
此命令会更新可用软件包及其版本的列表,但不会安装或升级任何软件包。你应该会看到表明软件包列表正在更新的输出信息。
接下来,安装 PostgreSQL 服务器和 postgresql-contrib
软件包。postgresql-contrib
软件包提供了许多实用的额外工具和功能。
执行以下命令:
sudo apt install postgresql postgresql-contrib -y
-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
显示“accepting connections”,则表明 PostgreSQL 已成功安装并正在运行。
在这一步中,你将访问 PostgreSQL 命令行工具 psql
,它是一个用于与 PostgreSQL 数据库进行交互的命令行工具。psql
允许你执行 SQL 查询、管理数据库以及执行其他管理任务。
默认情况下,PostgreSQL 会创建一个名为 postgres
的 Unix 用户,该用户对应于 PostgreSQL 的超级用户。要访问 psql
命令行工具,你可以切换到 postgres
用户,也可以使用 sudo
以 postgres
用户的身份运行命令。
首先,让我们切换到 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
命令行工具。这样就无需切换用户。
执行以下命令:
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
:这是另一个用于创建新数据库的模板数据库,它是一个标准模板,可以进行自定义。要连接到特定的数据库,你可以使用 \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
数据库。
最后,输入 \q
并按回车键退出 psql
命令行工具:
postgres=## \q
这将使你返回到 labex
用户的 shell。
在这一步中,你学习了如何列出可用的数据库、连接到特定的数据库,并使用 psql
命令行工具探索其内容。
在这一步中,你将检查 PostgreSQL 服务器的状态,并探索一些基本的配置设置。
如前所述,由于 LabEx 虚拟机在 Docker 容器中运行,systemctl
命令可能无法按预期工作。你将主要使用 pg_isready
和 psql
来检查服务器状态。
首先,让我们再次验证 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 的默认端口。
最后,输入 \q
并按回车键退出 psql
命令行工具:
postgres=## \q
这将使你返回到 labex
用户的 shell。
在这一步中,你学习了如何使用 pg_isready
和 psql
命令行工具检查 PostgreSQL 服务器的状态,并探索一些基本的配置设置。
在本次实验中,你使用 apt update
和 apt 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
。