跳转到主要内容

3 安装与快速入门

在 Windows、Debian 或 Ubuntu 上安装 PostgreSQL 17,管理服务并找到配置文件。

Web 版说明。执行 Debian 或 Ubuntu 软件仓库相关命令前,请先阅读安装勘误:原文中的 lsb_release -cs 少了一个空格,而且软件仓库的配置方式自本书出版后已有变化。

要开始使用 PostgreSQL,需要做哪些准备?本章将介绍如何安装 PostgreSQL,以及如何管理相应的服务。下一章,我们将创建一个简单的数据库,尝试一些基本的 SQL 查询。

我们将使用 PostgreSQL 17 的常规发行版(通常称为“vanilla”,即原版)。安装和配置 PostgreSQL 的过程因操作系统而异:

  • 如果你使用 Windows,请继续往下读。

  • 如果要在基于 Linux 的 Debian 或 Ubuntu 系统上配置 PostgreSQL,请跳到第 30 页。

其他操作系统的安装说明可以在线查看:www.postgresql.org/download.

你也可以使用 Postgres Pro Standard 17:它与原版 PostgreSQL 完全兼容,包含一些由 Postgres Professional 开发的附加特性,试用或用于教学时免费。如果选择它,请参阅 postgrespro.com/products/download 上的安装说明。

Windows

安装

下载 PostgreSQL 安装程序,运行后选择安装语言:postgrespro.com/windows.

安装程序采用常见的向导界面:如果默认选项符合需要,只需一路点击“下一步”(Next)按钮。下面我们来看看主要步骤。

选择组件(如果不确定如何选择,保留当前选项即可):

PostgreSQL 17 的 Windows 安装程序,已选中服务器、客户端、开发和运行时组件。
图 3.1 选择安装组件

接下来需要指定 PostgreSQL 的安装目录。默认情况下,PostgreSQL 服务器安装在 C:\Program Files\PostgreSQL\17。

你还可以指定数据目录的位置。

Windows 安装程序显示数据目录路径和可用磁盘空间。
图 3.2 选择数据目录

数据库系统中存储的所有信息都会放在这个目录中。因此,如果打算存放大量数据,请确保有足够的磁盘空间。

如果打算存储非英语数据,请务必选择相应的区域设置;如果 Windows 的区域设置已经正确,也可以保留“默认”(Default)。

输入并确认数据库用户 postgres 的密码。还应选中“设置环境变量”(Set up environment variables)复选框,以便以当前操作系统用户的身份连接 PostgreSQL 服务器。

其他字段都可以保留默认设置。

Windows 安装程序中的 5432 端口、区域设置、postgres 密码、校验和及环境变量设置。
图 3.3 设置服务器连接选项

如果安装 PostgreSQL 只是为了学习,可以选择“使用默认设置”(Use the default settings),让数据库系统占用更少的内存。

服务管理与主要文件

安装 PostgreSQL 时,系统会注册“postgresql-17”服务。这个服务会在系统启动时,以 Network Service 账户的身份自动运行。如有需要,可以通过 Windows 的标准选项修改服务设置。

要临时停止服务,请在安装时选择的开始菜单子文件夹中运行“停止服务器”(Stop Server)程序。

Windows 安装程序,可为 PostgreSQL 服务器选择调优后的参数或默认设置。
图 3.4 选择服务器的默认配置

要启动服务,请在同一文件夹中运行“启动服务器”(Start Server)程序。

如果启动服务时发生错误,可以查看服务器日志来了解原因。日志文件位于安装时选择的数据库目录下的 log 子目录中(通常是 C:\Program Files\PostgreSQL\17\data\log)。日志会定期切换到新文件。你可以根据最后修改日期查找所需的文件,也可以根据文件名查找;文件名包含切换到该文件时的日期和时间。

服务器设置由几个重要的配置文件决定,它们位于数据库目录中。刚开始使用 PostgreSQL 时,无需修改这些文件,但在实际工作中一定会用到。不妨打开看看,文件内都有详尽的说明:

  • postgresql.conf 是主配置文件,包含服务器参数。

  • pg_hba.conf 定义访问规则。出于安全考虑,默认配置只允许从本机访问,并要求进行密码验证。

现在,我们已经可以连接数据库,尝试一些命令和 SQL 查询了。请转到第 35 页的“体验 SQL”一章。

Debian 和 Ubuntu

安装

如果你使用 Linux,需要添加 PGDG(PostgreSQL 全球开发组)软件包仓库。目前支持的 Debian 版本为 10“Buster”、11“Bullseye”和 12“Bookworm”;支持的 Ubuntu 版本为 20.04“Focal”、22.04“Jammy”、23.10“Mantic”和 24.04“Noble”。

在控制台窗口中运行以下命令:

$ sudo apt-get install lsb-release
$ sudo sh -c 'echo "deb \
http://apt.postgresql.org/pub/repos/apt/ \
$(lsb_release-cs)-pgdg main" \
> /etc/apt/sources.list.d/pgdg.list'
$ wget --quiet -O - \
https://postgresql.org/media/keys/ACCC4CF8.asc \
| sudo apt-key add -

添加仓库后,我们来更新软件包列表:

$ sudo apt-get update

开始安装前,先检查本地化设置:

$ locale

如果打算处理非英语数据,可能需要配置 LC_CTYPE 和 LC_COLLATE 变量。例如,对于法语,将这两个变量设置为“fr_FR.UTF8”比较合适,尽管“en_US.UTF8”也可能适用:

$ export LC_CTYPE=fr_FR.UTF8
$ export LC_COLLATE=fr_FR.UTF8

还应确认操作系统已安装所需的区域设置:

$ locale -a | grep fr_FR
fr_FR.utf8

如果没有安装,请按以下方式生成:

$ sudo locale-gen fr_FR.utf8

现在可以开始安装了:

$ sudo apt-get install postgresql-17

这是最后一步;安装命令完成后,PostgreSQL 就已安装并启动。要检查服务器是否可用,请运行:

$ sudo -u postgres psql -c 'select version()'

如果一切顺利,就会返回当前的 PostgreSQL 版本。

服务管理与主要文件

安装 PostgreSQL 时,系统会创建一个专用用户 postgres。所有服务器进程都以该用户的身份运行,所有数据库文件也都属于该用户。PostgreSQL 会在操作系统启动时自动启动。在默认设置下,这不会带来什么问题:如果你没有使用数据库服务器,它只会消耗很少的系统资源。如果决定禁用自动启动,请运行:

$ sudo systemctl disable postgresql

要临时停止数据库服务,请输入:

$ sudo systemctl stop postgresql

可以按以下方式启动服务:

$ sudo systemctl start postgresql

也可以检查服务的当前状态:

$ sudo systemctl status postgresql

如果服务启动失败,请查看服务器日志了解详情。仔细查看 /var/log/postgresql/postgresql-17-main.log 中最新的日志记录。

数据库中存储的所有信息都位于 /var/lib/postgresql/17/main/ 目录下。如果打算存放大量数据,请确保有足够的磁盘空间。

服务器设置由几个配置文件决定。刚开始使用时,无需编辑所有这些文件,但不妨先看看,因为以后一定会用到:

  • /etc/postgresql/17/main/postgresql.conf 是主配置文件,包含服务器参数。

  • /etc/postgresql/17/main/pg_hba.conf 文件定义访问设置。出于安全考虑,默认配置只允许从本机访问,并且必须使用与当前操作系统用户同名的数据库用户身份。

现在,该连接数据库,尝试 SQL 了。