PostgreSQL 安装与配置
本章将带你一步步在不同的操作系统上安装 PostgreSQL,并强调每种环境下需要注意的核心事项。
1. 安装前的准备工作
在正式开始安装之前,评估以下几个关键因素,能确保你的安装过程更加顺畅。
1.1 系统要求
PostgreSQL 的系统要求通常不高,但具体取决于你的使用场景。对于开发或测试,一台普通电脑就足够了。但如果用于生产环境,请仔细考虑以下因素:
- 操作系统: PostgreSQL 支持多种操作系统,包括 Windows、macOS、Linux 等。请根据你的服务器或工作站选择合适的版本。
- 硬件资源: 评估 CPU、内存 (RAM) 和磁盘空间。针对小型的开发数据库,极少的资源即可运行;但如果是拥有大量并发连接的大型数据库,增加内存和使用更快的存储设备会大幅提升性能。
- 存储规划: 根据预期的数据库规模规划存储空间。PostgreSQL 擅长处理大型数据库,但充足的物理存储是前提。建议使用 SSD 固态硬盘以获得更快的读写速度。
- 网络条件: 如果你计划远程访问数据库,稳定且安全的网络连接至关重要。
1.2 选择安装方式
安装 PostgreSQL 有多种途径,各有优势:
- 官方安装程序: 这是最常见的方法,为 Windows、macOS 和 Linux 提供了对新手友好的图形界面安装包。它通常捆绑了 pgAdmin 等基础工具。
- 包管理器 (Package Manager): 在 Linux 系统上,使用包管理器(如 Debian/Ubuntu 上的 apt,或 CentOS/RHEL 上的 yum)可以简化安装过程并自动处理依赖关系。
- Docker 容器: Docker 允许你在容器中运行 PostgreSQL,这非常适合在不同环境中保持一致的部署体验。
- 源码编译: 高级用户可以选择直接从源码编译 PostgreSQL,以实现最大程度的定制化。
1.3 安全注意事项
在安装和配置 PostgreSQL 时,安全是重中之重:
- 用户账户: 在安装过程中,系统会创建一个 PostgreSQL 超级用户账户(通常名为
postgres)。务必为该账户设置一个强密码。 - 防火墙: 配置你的防火墙以允许通过 5432 端口(PostgreSQL 的默认端口)进行连接,但仅限受信任的来源。
- 身份验证: PostgreSQL 支持多种身份验证方式。默认的
ident模式可能不适合生产环境。建议使用md5或更加安全的scram-sha-256进行密码加密。
2. 在 Windows 上安装
官方的 PostgreSQL 安装程序为 Windows 用户提供了最直接的安装方式。
2.1 下载安装程序
- 访问 PostgreSQL 官方网站 (www.postgresql.org)。
- 导航至“Downloads (下载)”页面。
- 选择 Windows 版本。
- 下载你需要的 PostgreSQL 版本的安装程序。
2.2 运行安装程序
- 双击运行下载的
.exe文件。 - 按照屏幕上的图形界面提示进行操作。
- 安装程序会引导你完成以下核心步骤:
- 安装目录 (Installation Directory): 选择 PostgreSQL 的安装位置。默认路径通常是
C:\Program Files\PostgreSQL\<版本号>。 - 数据目录 (Data Directory): 这是存放你数据库文件的位置。默认路径通常是
C:\Program Files\PostgreSQL\<版本号>\data。为了兼顾性能和备份需求,通常建议将数据存储在单独的硬盘驱动器上。 - 组件 (Components): 选择要安装的组件。建议勾选核心的 PostgreSQL Server (服务器)、pgAdmin (图形化管理工具) 以及 Command Line Tools (命令行工具)。
- 密码 (Password): 为超级用户
postgres设置强密码。该用户在数据库中拥有最高管理员权限。 - 端口 (Port): 默认端口为 5432。除非有特殊原因导致端口冲突,否则保持默认即可。
- 本地化 (Locale): 选择数据库集群的默认区域设置。
2.3 验证安装
安装完成后,你可以通过以下方式验证:
- pgAdmin: 启动 pgAdmin,使用
postgres用户和安装时设置的密码连接到 PostgreSQL 服务器。 - psql: 打开 Windows 命令提示符 (CMD),输入
psql -U postgres。这将以postgres用户的身份连接到服务器,系统会提示你输入密码。
3. 在 macOS 上安装
在 macOS 上,你可以使用 EnterpriseDB 提供的图形化安装程序,或者使用 Homebrew 这样的包管理器。
3.1 使用 EnterpriseDB 安装程序
这种方法与 Windows 的安装过程非常相似。
- 访问 PostgreSQL 官网并导航至“Downloads”。
- 选择 macOS 版本并下载对应的安装包。
- 运行下载的
.app镜像文件。 - 按照屏幕提示,依次选择安装目录、数据目录、组件、密码、端口和本地化设置。
3.2 使用 Homebrew
Homebrew 是 macOS 上极受欢迎的包管理工具。
如果你还没安装 Homebrew,请先在终端 (Terminal) 运行以下命令安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"更新 Homebrew 软件库:
brew update安装 PostgreSQL:
brew install postgresql启动 PostgreSQL 后台服务:
brew services start postgresql验证安装是否成功:
psql -U postgres配置环境变量
通过 Homebrew 安装后,你可能需要将 PostgreSQL 的路径添加到环境变量中。
在终端执行以下命令将其加入 PATH:
echo 'export PATH="/opt/homebrew/opt/postgresql@14/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc(注意:请根据你安装的具体版本和使用的 Shell 配置文件进行相应调整。)
4. 在 Linux (Debian/Ubuntu) 上安装
在基于 Debian 的系统(如 Ubuntu)上,apt 包管理器是你的最佳选择。
4.1 添加 PostgreSQL 仓库并安装
更新本地软件包索引:
sudo apt update安装 postgresql 及其附加组件:
sudo apt install postgresql postgresql-contrib注:postgresql-contrib 包内含许多实用的附加工具和功能扩展。
4.2 配置与启动
安装完成后,PostgreSQL 服务通常会自动启动。你可以用以下命令检查其运行状态:
sudo systemctl status postgresql默认情况下,PostgreSQL 使用 "peer(对等)" 身份验证模式。这意味着如果你当前登录的操作系统用户也是 postgres,你就可以直接无密码连接数据库。
4.3 提升安全性配置
首先,为数据库中的 postgres 用户设置密码:
sudo -u postgres psql进入数据库命令行后执行 SQL:
ALTER USER postgres PASSWORD '输入你的强密码';
\q接着,配置 PostgreSQL 使用安全的 md5 或 scram-sha-256 验证模式。这需要编辑 pg_hba.conf 文件(它掌管着客户端的认证规则):
sudo nano /etc/postgresql/<版本号>/main/pg_hba.conf找到关于本地连接的部分,将 METHOD(认证方法)更改为 md5 或 scram-sha-256。示例如下:
# "local" 仅限 Unix 域套接字连接
local all postgres md5
# IPv4 本地连接:
host all all 127.0.0.1/32 md5
# IPv6 本地连接:
host all all ::1/128 md5保存退出后,重启服务使配置生效:
sudo systemctl restart postgresql5. 在 Linux (CentOS/RHEL) 上安装
在基于 Red Hat 的系统(如 CentOS/RHEL)上,我们使用 yum 包管理器。
5.1 添加仓库并安装
从官方 PostgreSQL Yum 仓库安装 RPM 源包:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm(提示:请根据你的 CentOS/RHEL 版本调整链接中的 EL-8 部分。)
安装 PostgreSQL 服务器和客户端包:
sudo yum install -y postgresql14-server postgresql14(提示:请根据你想要的 PostgreSQL 版本调整 postgresql14。)
5.2 初始化数据库
首次安装后必须初始化数据库目录:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb5.3 启动与开机自启
启动 PostgreSQL 服务:
sudo systemctl start postgresql-14设置服务为开机自动启动:
sudo systemctl enable postgresql-145.4 安全性配置
CentOS/RHEL 上的安全配置步骤与 Debian/Ubuntu 相似:
- 为
postgres用户设置密码。 - 编辑对应的
pg_hba.conf文件,将身份验证修改为md5或scram-sha-256。 - 重启 PostgreSQL 服务 (
sudo systemctl restart postgresql-14)。
6. 使用 Docker 安装 PostgreSQL
Docker 提供了一种极其便捷的方式,在独立隔离的容器中运行 PostgreSQL,确保你的应用在任何环境中都能得到一致的部署结果。
6.1 安装 Docker
如果你尚未安装 Docker,请访问 Docker 官网 (www.docker.com) 获取适合你操作系统的安装指南。
6.2 运行 PostgreSQL 容器
首先,拉取官方的 PostgreSQL 镜像:
docker pull postgres(你也可以指定具体版本,例如:docker pull postgres:14)
启动并运行容器:
docker run --name postgresdb -e POSTGRES_PASSWORD=你的强密码 -p 5432:5432 -d postgres参数详解:
--name postgresdb: 为你的容器命名。-e POSTGRES_PASSWORD=你的强密码: 设置postgres用户的环境变量密码。注意: 在生产环境中绝对不要硬编码密码,应当使用 Docker Secrets 或安全的环境变量注入机制。-p 5432:5432: 将宿主机的 5432 端口映射到容器内部的 5432 端口。-d: 让容器在后台(分离模式)运行。
验证容器是否正在运行:
docker ps6.3 连接到容器
容器运行后,你可以像连接普通本地数据库一样,使用 psql 或 pgAdmin 进行连接。主机名 (Hostname) 使用 localhost 或 127.0.0.1,端口是 5432,用户为 postgres,密码为你运行容器时设定的密码。
6.4 使用 Docker 卷 (Volumes) 实现数据持久化
默认情况下,一旦 Docker 容器被停止或删除,内部产生的数据就会永久丢失。为了持久化保存数据,我们需要使用 Docker 数据卷 (Volumes)。
第一步:创建一个 Docker 卷
docker volume create postgres_data第二步:挂载数据卷并运行容器
docker run --name postgresdb -e POSTGRES_PASSWORD=你的强密码 -p 5432:5432 -v postgres_data:/var/lib/postgresql/data -d postgres参数解析:
-v postgres_data:/var/lib/postgresql/data: 这一步极为关键,它将你刚创建的postgres_data数据卷,挂载到了容器内部存放数据的默认目录/var/lib/postgresql/data上。这样即使容器被销毁,数据依然安全存放在宿主机的数据卷中。