PostgreSQL 安装:一份全面的分步指南
在 Linux、macOS 或 Windows 上安装 PostgreSQL,然后创建用户、验证访问权限并配置安全的网络连接。
PostgreSQL 安装:全面分步指南
PostgreSQL 的安装通常很简单,但在 Linux、macOS 和 Windows 上的具体细节有所不同。目标不仅仅是让服务运行起来;你还需要一个可用的数据库用户、一种干净的连接方式以及安全的网络访问默认设置。
使用本指南为开发或小型服务器设置安装 PostgreSQL,然后根据你操作系统的当前软件包调整路径和版本号。
前提条件
在开始安装过程之前,请确保你的系统满足以下基本要求:
- 管理权限:你需要在 Linux/macOS 上拥有
sudo权限,或在 Windows 上拥有管理员权限,才能安装软件和配置系统服务。 - 互联网连接:需要下载安装包。
- 足够的磁盘空间:虽然初始安装相对较小,但你的数据库会增长。请确保你有足够的磁盘空间来存储数据。
在 Linux 上安装
Linux 发行版通常通过其默认软件包仓库提供 PostgreSQL,这使得安装非常简单。
Debian/Ubuntu
对于基于 Debian 的系统(如 Ubuntu),你可以使用 apt 安装 PostgreSQL。
更新软件包列表:始终先更新包管理器的列表,以确保你获得最新的可用软件包。
sudo apt update安装 PostgreSQL:安装
postgresql软件包,它通常包含服务器、客户端工具和文档。你可以指定一个版本(例如postgresql-16),或者仅使用postgresql安装默认版本。sudo apt install postgresql postgresql-contribpostgresql-contrib软件包提供了额外的实用程序和功能。注意:在 Debian/Ubuntu 上,PostgreSQL 服务通常在安装后自动启动,并且会创建一个默认的
postgres用户(既是系统用户也是数据库用户)。验证安装:检查服务状态。
sudo systemctl status postgresql你应该会看到输出显示
active (exited)或active (running)。如果主服务单元管理多个作为独立进程运行的集群,那么exited是正常的。
RHEL/CentOS/Fedora
对于基于 Red Hat 的系统,请使用 dnf(对于较旧的 CentOS/RHEL 版本,使用 yum)。
安装 PostgreSQL 仓库:PostgreSQL 提供了自己的仓库,用于获取比默认操作系统仓库中可能提供的版本更新的版本。建议使用此仓库获取最新的稳定版本。
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm # 对于 EL-9,请使用:sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm # 如果需要,请将 EL-8-x86_64 替换为你特定的操作系统版本和架构。禁用默认的 PostgreSQL 模块(如果适用):某些 RHEL/CentOS 版本有一个默认的 PostgreSQL 模块。禁用它以避免与 PGDG 仓库冲突。
sudo dnf -qy module disable postgresql安装 PostgreSQL:安装服务器和 contrib 软件包。将
16替换为你想要的版本。sudo dnf install -y postgresql16-server postgresql16-contrib初始化数据库集群:与 Debian/Ubuntu 不同,在基于 RHEL 的系统上,你通常需要手动初始化数据库集群。
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb根据你安装的版本调整路径
/usr/pgsql-16/bin和postgresql-16-setup。启动并启用 PostgreSQL 服务:启动服务并将其配置为开机自启。
sudo systemctl enable postgresql-16 sudo systemctl start postgresql-16验证安装:检查服务状态。
sudo systemctl status postgresql-16
在 macOS 上安装
在 macOS 上,Homebrew 是安装 PostgreSQL 的推荐且最简单的方法。
安装 Homebrew(如果你还没有安装):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"按照屏幕上的说明进行操作,包括将 Homebrew 添加到你的
PATH中。安装 PostgreSQL:使用 Homebrew 安装 PostgreSQL。你可以指定一个版本(例如
postgresql@16),或者默认安装最新的稳定版本。brew install postgresql启动 PostgreSQL 服务:Homebrew 将 PostgreSQL 安装为后台服务。
brew services start postgresql停止它:
brew services stop postgresql重启它:brew services restart postgresql验证安装:检查
psql是否可用并已连接。psql -V要连接到默认数据库:
psql postgres提示:如需可视化的应用程序体验,请考虑使用 Postgres.app,它提供了一种无需命令行即可运行和管理 PostgreSQL 的简单方法。
在 Windows 上安装
对于 Windows,EnterpriseDB (EDB) 图形化安装程序是本地 PostgreSQL 设置最常用的方法。
下载安装程序:访问官方 PostgreSQL 下载页面(www.postgresql.org/download/windows/)并下载适用于你 Windows 版本的最新 EDB 安装程序。
运行安装程序:执行下载的
.exe文件。安装向导将指导你完成整个过程。- 安装目录:选择 PostgreSQL 的安装位置(例如
C:\Program Files\PostgreSQL\16)。 - 数据目录:选择数据库文件的存储位置(例如
C:\Program Files\PostgreSQL\16\data)。这至关重要,理想情况下应位于快速、可靠的磁盘上。 postgres超级用户密码:为默认的postgres数据库超级用户设置一个强密码。记住此密码,因为你需要它来进行初始连接。- 端口:默认的 PostgreSQL 端口是
5432。除非有冲突,否则通常可以保留默认设置。 - 区域设置:为你的数据库集群选择默认区域设置。
- 安装目录:选择 PostgreSQL 的安装位置(例如
Stack Builder:安装完成后,EDB 安装程序可能会启动 Stack Builder。此工具有助于安装额外的驱动程序、工具和扩展(如
pgAdmin 4)。强烈建议安装pgAdmin 4,以便使用图形界面管理你的数据库。验证安装:安装完成后,你可以打开
pgAdmin 4(通常在“开始”菜单的“PostgreSQL 16”或类似文件夹下),并尝试使用postgres超级用户和你设置的密码连接到本地服务器。
初始配置和安装后步骤
安装 PostgreSQL 后,这些步骤对于功能性和安全的设置至关重要。
1. 设置 PATH 环境变量(可选,主要针对 Windows/macOS,如果找不到 psql)
为了从任何终端位置轻松运行 psql 和其他 PostgreSQL 二进制文件,请将 PostgreSQL 的 bin 目录添加到系统的 PATH 中。
- Linux:通常由包管理器处理,但如果没有,请将
/usr/pgsql-X.Y/bin(RHEL)或/usr/lib/postgresql/X.Y/bin(Debian/Ubuntu)添加到你的PATH。 - macOS (Homebrew):
brew会自动处理此操作。 - Windows:在 EDB 安装过程中,有一个添加到
PATH的选项。如果未选择,你可以通过系统属性 > 环境变量手动添加C:\Program Files\PostgreSQL\16\bin(调整版本)。
2. 访问 psql 终端
psql 是 PostgreSQL 的命令行界面,对于管理和查询至关重要。
Linux/macOS:切换到
postgres系统用户(安装期间创建)。sudo -i -u postgres psql你现在已作为
postgres用户连接到postgres数据库。输入\q退出。Windows:从开始菜单(
PostgreSQL 16 > SQL Shell (psql))打开SQL Shell (psql)。它将提示你输入服务器详细信息和postgres用户密码。
3. 创建新的数据库用户和数据库
最佳实践是不要使用 postgres 超级用户进行日常应用程序操作。创建一个新的专用用户和数据库。
以
postgres超级用户身份登录(如上所示)。创建一个新用户(角色):
CREATE USER myuser WITH PASSWORD 'strong_password';提示:将
myuser和strong_password替换为安全的凭据。创建一个新数据库并分配所有权:
CREATE DATABASE mydatabase OWNER myuser;授予权限(如果需要,或者
CREATE DATABASE的所有者会处理基本操作):GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;退出
psql:\q
4. 配置 pg_hba.conf 以实现网络访问
pg_hba.conf 文件控制客户端身份验证。默认情况下,PostgreSQL 可能只允许来自 localhost(127.0.0.1)的连接。
位置:此文件通常位于 PostgreSQL 数据目录中(例如,Debian/Ubuntu 上的
/var/lib/postgresql/16/main/pg_hba.conf,RHEL 上的/var/lib/pgsql/16/data/pg_hba.conf,或 Windows 上的C:\Program Files\PostgreSQL\16\data\pg_hba.conf)。编辑文件(以 root/管理员身份):
sudo nano /etc/postgresql/16/main/pg_hba.conf(根据你的操作系统和版本调整路径)。
要允许
myuser使用密码身份验证从受信任的子网连接,请添加如下一行:# TYPE DATABASE USER ADDRESS METHOD host mydatabase myuser 192.168.1.0/24 scram-sha-256scram-sha-256是现代 PostgreSQL 部署中首选的密码方法。除非服务器也受到严格的防火墙规则保护并且你确实需要广泛的访问权限,否则请避免使用0.0.0.0/0。重新加载 PostgreSQL:修改
pg_hba.conf后,你必须重新加载 PostgreSQL 服务才能使更改生效。sudo systemctl reload postgresql # Linux # 对于 macOS 上的 Homebrew: # brew services restart postgresql # 对于 Windows,通过 Services.msc 重启 PostgreSQL 服务
5. 配置 postgresql.conf(网络监听)
默认情况下,PostgreSQL 通常只监听 localhost。要接受来自其他机器的连接,你需要修改 postgresql.conf。
位置:此文件通常与
pg_hba.conf位于同一目录中。编辑文件:
sudo nano /etc/postgresql/16/main/postgresql.conf找到
listen_addresses参数,并且仅在远程客户端需要连接时更改它:#listen_addresses = 'localhost' # 要监听的 IP 地址; listen_addresses = 'localhost,192.168.1.10'使用服务器的真实私有 IP 地址代替
192.168.1.10。listen_addresses = '*'也可以,但它应与限制性的pg_hba.conf和防火墙规则配合使用。重启 PostgreSQL:对
postgresql.conf的更改需要完全重启服务。sudo systemctl restart postgresql # Linux # brew services restart postgresql # macOS # 对于 Windows,通过 Services.msc 重启 PostgreSQL 服务
验证你的安装
完成所有配置后,执行最终验证:
检查 PostgreSQL 服务状态(
systemctl status postgresql或brew services list或 Windows 服务)。以你的新用户身份连接到你的新数据库:
psql -h localhost -U myuser -d mydatabase系统将提示你输入
myuser的密码。如果成功,你将看到mydatabase=>提示符。输入\q退出。如果从另一台机器连接,请将
localhost替换为服务器的 IP 地址。
提示和最佳实践
- 强密码:始终为所有数据库用户(尤其是
postgres超级用户)使用强且唯一的密码。 - 专用数据目录:对于生产环境,考虑将数据目录放在专用卷或 RAID 阵列上,以提高性能和可靠性。
- 定期备份:从第一天起就实施稳健的备份策略。PostgreSQL 的
pg_dump和pg_basebackup实用程序是执行此操作的绝佳工具。 - 保持更新:保持你的 PostgreSQL 安装更新,以受益于错误修复、安全补丁和新功能。使用系统的包管理器或遵循 EDB 安装程序的更新过程。
- 防火墙配置:如果允许远程连接,请确保你的系统防火墙(例如
ufw、firewalld、Windows 防火墙)已配置为允许端口5432(或你选择的端口)上的入站流量。
要点
安装 PostgreSQL 后,验证服务,使用 psql 连接,创建一个应用程序角色,并保持远程访问范围狭窄。对于生产环境,在数据库开始保存重要数据之前,你的下一步应该是备份和监控。