最新PostgreSQL安装教程(含详细步骤)
最新 PostgreSQL 安装教程(含详细步骤)
PostgreSQL 是一款功能强大、开源的对象-关系型数据库系统 (ORDBMS),以其可靠性、数据完整性和广泛的功能集而闻名。 无论您是开发人员、数据库管理员,还是仅仅对学习数据库感兴趣,本教程都将指导您完成在不同操作系统上安装 PostgreSQL 的详细过程。
本教程涵盖以下内容:
- Windows 上的 PostgreSQL 安装
- macOS 上的 PostgreSQL 安装
- Linux 上的 PostgreSQL 安装 (Ubuntu/Debian, CentOS/RHEL/Fedora)
- PostgreSQL 的基本配置
- 连接到 PostgreSQL 数据库
- 常见问题解答 (FAQ)
1. Windows 上的 PostgreSQL 安装
在 Windows 上安装 PostgreSQL 最简单的方法是使用 EnterpriseDB 提供的图形化安装程序。
步骤:
-
下载安装程序:
- 访问 PostgreSQL 官方下载页面:https://www.postgresql.org/download/windows/
- 选择与您的 Windows 版本(32 位或 64 位)对应的最新稳定版本的安装程序。
- 单击下载链接。
-
运行安装程序:
- 双击下载的
.exe
文件。 - 如果出现“用户帐户控制”提示,请单击“是”以允许安装程序进行更改。
- 双击下载的
-
安装向导:
- 欢迎界面: 单击“下一步”。
- 安装目录:
- 默认情况下,PostgreSQL 将安装在
C:\Program Files\PostgreSQL\<version>
。 - 您可以更改安装目录,但建议保留默认设置。
- 单击“下一步”。
- 默认情况下,PostgreSQL 将安装在
- 数据目录:
- 默认情况下,数据目录将位于安装目录下的
data
文件夹中。 - 数据目录存储数据库文件。 建议保留默认设置。
- 单击“下一步”。
- 默认情况下,数据目录将位于安装目录下的
- 密码:
- 输入并确认超级用户 (postgres) 的密码。
- 请务必记住此密码,因为您将需要它来管理数据库。
- 单击“下一步”。
- 端口:
- 默认端口号为 5432。 除非您有特殊原因,否则建议保留默认设置。
- 单击“下一步”。
- 区域设置:
- 选择适当的区域设置(例如,"Default locale" 或特定语言/区域)。
- 单击“下一步”。
- 预安装摘要:
- 查看安装设置。 如果一切正确,请单击“下一步”。
- 安装:
- 安装程序将开始复制文件并配置 PostgreSQL。
- 此过程可能需要几分钟时间。
-
Stack Builder (可选):
- 安装完成后,安装程序可能会提示您启动 Stack Builder。
- Stack Builder 是一个工具,可用于下载和安装 PostgreSQL 的附加工具、驱动程序和应用程序(例如,PostGIS 地理空间扩展)。
- 您可以选择启动 Stack Builder 并安装所需的组件,也可以稍后手动安装它们。
-
完成:
- 安装完成后,单击“完成”。
- 建议重新启动计算机以确保所有更改生效。
-
验证安装:
- 打开 "开始" 菜单,找到 "PostgreSQL" 文件夹,然后选择 "SQL Shell (psql)"。
- 输入您在安装过程中设置的超级用户 (postgres) 密码。
- 如果您看到
postgres=#
提示符,则表示安装成功。 - 您可以键入
\q
并按 Enter 键退出 psql。
2. macOS 上的 PostgreSQL 安装
在 macOS 上安装 PostgreSQL 有几种方法:
- 使用 Homebrew(推荐): Homebrew 是 macOS 上流行的包管理器,可以轻松安装和管理软件。
- 使用 Postgres.app: Postgres.app 是一个独立的 macOS 应用程序,包含 PostgreSQL 服务器和图形化管理工具。
- 使用 EnterpriseDB 安装程序: 与 Windows 类似,您也可以使用 EnterpriseDB 提供的图形化安装程序。
使用 Homebrew 安装 (推荐):
-
安装 Homebrew (如果尚未安装):
- 打开终端 (Terminal)。
- 运行以下命令:
bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 按照屏幕上的说明完成 Homebrew 的安装。
-
安装 PostgreSQL:
- 在终端中运行以下命令:
bash
brew install postgresql - Homebrew 将下载并安装 PostgreSQL 及其依赖项。
- 在终端中运行以下命令:
-
启动 PostgreSQL 服务:
- 运行以下命令以启动 PostgreSQL 服务并在系统启动时自动启动:
bash
brew services start postgresql
或者,如果不想开机启动
bash
pg_ctl -D /usr/local/var/postgres start
- 运行以下命令以启动 PostgreSQL 服务并在系统启动时自动启动:
-
创建数据库用户 (可选):
- 默认情况下,Homebrew 安装的 PostgreSQL 使用您的 macOS 用户名作为数据库超级用户。
- 您可以使用
createuser
命令创建其他数据库用户:
bash
createuser -s <username> # 创建一个超级用户
createuser <username> # 创建一个普通用户
-
验证安装:
- 在终端中运行
psql
命令。 - 如果连接成功,您将看到
postgres=#
提示符。 - 键入
\q
并按 Enter 键退出 psql。
- 在终端中运行
使用 Postgres.app 安装:
-
下载 Postgres.app:
- 访问 Postgres.app 网站:https://postgresapp.com/
- 单击“下载”按钮。
-
安装 Postgres.app:
- 双击下载的
.dmg
文件。 - 将 Postgres.app 图标拖到“应用程序”文件夹中。
- 双击下载的
-
启动 Postgres.app:
- 打开“应用程序”文件夹并双击 Postgres.app。
- Postgres.app 将在菜单栏中显示一个大象图标,表示 PostgreSQL 服务器正在运行。
-
初始化数据库 (如果需要):
- 首次启动 Postgres.app 时,它可能会提示您初始化数据库。
- 单击“初始化”按钮。
-
配置 PATH (可选):
- 为了方便在终端中使用 PostgreSQL 命令行工具 (如
psql
),您可以将 Postgres.app 的bin
目录添加到您的 PATH 环境变量中。 - 编辑您的 shell 配置文件 (例如,
~/.bash_profile
或~/.zshrc
) 并添加以下行:
bash
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" - 重新加载您的 shell 配置文件或打开一个新的终端窗口以使更改生效。
- 为了方便在终端中使用 PostgreSQL 命令行工具 (如
-
验证安装:
- 从Postgres.app的菜单里点击"Open psql"
- 如果连接成功,您将看到
postgres=#
提示符。 - 键入
\q
并按 Enter 键退出 psql。
3. Linux 上的 PostgreSQL 安装
在 Linux 上安装 PostgreSQL 通常使用包管理器。 以下是在两种常见的 Linux 发行版上安装 PostgreSQL 的步骤:
3.1 Ubuntu/Debian
-
更新软件包列表:
bash
sudo apt update -
安装 PostgreSQL 软件包:
bash
sudo apt install postgresql postgresql-contribpostgresql
软件包包含 PostgreSQL 服务器。postgresql-contrib
软件包包含一些额外的实用程序和扩展。
-
启动 PostgreSQL 服务:
- 在大多数现代 Ubuntu/Debian 系统上,PostgreSQL 服务将在安装后自动启动。
- 您可以使用以下命令检查服务状态:
bash
sudo systemctl status postgresql - 如果服务未运行,可以使用以下命令启动它:
bash
sudo systemctl start postgresql - 要使 PostgreSQL 在系统启动时自动启动,请运行:
bash
sudo systemctl enable postgresql
-
设置 postgres 用户的密码:
- 默认情况下,PostgreSQL 安装会创建一个名为
postgres
的 Linux 用户和一个同名的数据库超级用户。 - 为了安全起见,您应该为
postgres
用户设置密码:
bash
sudo passwd postgres
输入并确认新密码。
- 默认情况下,PostgreSQL 安装会创建一个名为
-
验证安装:
- 切换到
postgres
用户:
bash
sudo -i -u postgres - 运行
psql
命令:
bash
psql - 如果连接成功,您将看到
postgres=#
提示符。 - 键入
\q
并按 Enter 键退出 psql。 - 键入
exit
返回到您的原始用户。
- 切换到
3.2 CentOS/RHEL/Fedora
-
安装 PostgreSQL 软件包:
bash
sudo dnf install postgresql-server postgresql-contrib
(在较旧的 CentOS/RHEL 版本上,使用yum
而不是dnf
。) -
初始化数据库:
- 在 CentOS/RHEL/Fedora 上,您需要在启动 PostgreSQL 服务之前初始化数据库:
bash
sudo /usr/bin/postgresql-setup initdb
- 在 CentOS/RHEL/Fedora 上,您需要在启动 PostgreSQL 服务之前初始化数据库:
-
启动 PostgreSQL 服务:
bash
sudo systemctl start postgresql -
使 PostgreSQL 在系统启动时自动启动:
bash
sudo systemctl enable postgresql -
设置 postgres 用户的密码:
bash
sudo passwd postgres
输入并确认新密码。 -
验证安装:
- 切换到
postgres
用户:
bash
sudo -i -u postgres - 运行
psql
命令:
bash
psql - 如果连接成功,您将看到
postgres=#
提示符。 - 键入
\q
并按 Enter 键退出 psql。 - 键入
exit
返回到您的原始用户。
- 切换到
4. PostgreSQL 的基本配置
安装 PostgreSQL 后,您可能需要进行一些基本配置以满足您的需求。
主要的配置文件:
- postgresql.conf: 这是 PostgreSQL 的主要配置文件,包含各种服务器设置,例如监听地址、端口、内存分配等。
- pg_hba.conf: 此文件控制客户端身份验证。 它定义了哪些用户可以从哪些主机连接到哪些数据库,以及使用哪种身份验证方法。
配置文件的位置:
- Windows: 通常位于数据目录中 (例如,
C:\Program Files\PostgreSQL\<version>\data
)。 - macOS (Homebrew):
/usr/local/var/postgres/
- macOS (Postgres.app): 位于Postgres.app程序的数据目录中。右键点击菜单栏图标,选择"Show Data Directory"
- Linux: 通常位于
/etc/postgresql/<version>/main/
(Ubuntu/Debian) 或/var/lib/pgsql/<version>/data/
(CentOS/RHEL/Fedora)。
修改配置文件:
- 使用文本编辑器打开配置文件。 您可能需要管理员权限才能编辑这些文件。
- 进行所需的更改。 仔细阅读文件中的注释,了解每个设置的作用。
- 保存文件。
- 重新启动 PostgreSQL 服务 以使更改生效。
常见配置更改:
- 监听地址 (listen_addresses):
- 默认情况下,PostgreSQL 仅监听本地连接 (localhost)。
- 如果您希望允许来自其他计算机的远程连接,请将
listen_addresses
设置为'*'
(监听所有接口) 或特定 IP 地址。
- 端口 (port):
- 默认端口号为 5432。 如果您需要更改端口,请在此处修改。
- 客户端身份验证 (pg_hba.conf):
pg_hba.conf
文件中的每一行都指定一个连接规则。- 常见的身份验证方法包括:
trust
:允许任何连接,无需密码 (不安全,仅用于测试)。md5
:使用 MD5 密码哈希进行身份验证。password
:使用明文密码进行身份验证 (不安全)。scram-sha-256
: 使用更安全的 SCRAM-SHA-256 密码哈希进行身份验证(推荐)。
- 例如,要允许来自特定 IP 地址 (例如, 192.168.1.100) 的所有用户使用 MD5 密码连接到所有数据库,您可以添加以下行:
host all all 192.168.1.100/32 md5
- 修改
pg_hba.conf
后,您需要重新加载 PostgreSQL 配置 (无需重启服务):
bash
sudo -u postgres psql -c "SELECT pg_reload_conf();"
5. 连接到 PostgreSQL 数据库
安装和配置 PostgreSQL 后,您可以使用各种客户端工具连接到数据库。
常用的客户端工具:
-
psql (命令行客户端):
- psql 是 PostgreSQL 自带的命令行客户端。
- 要连接到本地数据库,请运行
psql -U <username> -d <database>
。 - 例如,要以
postgres
用户连接到默认的postgres
数据库,请运行psql -U postgres
。 - 系统将提示您输入密码。
- 要连接到远程数据库,请使用
-h
选项指定主机名或 IP 地址:psql -U <username> -h <host> -d <database>
。
-
pgAdmin (图形化客户端):
- pgAdmin 是一个流行的开源 PostgreSQL 图形化管理工具。
- 您可以从 pgAdmin 网站下载并安装它:https://www.pgadmin.org/
- pgAdmin 提供了一个用户友好的界面,用于管理数据库、表、用户、执行 SQL 查询等。
- 其他客户端:
- 许多其他数据库客户端和开发工具也支持 PostgreSQL,例如 DBeaver、DataGrip、Navicat 等。
6. 常见问题解答 (FAQ)
Q: 如何启动/停止/重启 PostgreSQL 服务?
- Windows:
- 打开“服务”管理器 (搜索 "services.msc")。
- 找到 "PostgreSQL" 服务。
- 右键单击该服务,然后选择“启动”、“停止”或“重启”。
- macOS (Homebrew):
bash
brew services start postgresql # 启动
brew services stop postgresql # 停止
brew services restart postgresql # 重启 - macOS (Postgres.app):
- 在菜单栏中单击 Postgres.app 图标,然后选择“Start”或“Stop”。
- Linux (systemd):
bash
sudo systemctl start postgresql # 启动
sudo systemctl stop postgresql # 停止
sudo systemctl restart postgresql # 重启
Q: 如何创建新的数据库?
- 使用 psql:
sql
CREATE DATABASE <database_name>; - 使用 createdb 命令行工具:
bash
createdb <database_name>
Q: 如何创建新的数据库用户?
- 使用 psql:
sql
CREATE USER <username> WITH PASSWORD '<password>'; - 使用 createuser 命令行工具:
bash
createuser <username>
然后,您可以使用psql
中的ALTER USER
命令设置密码。
Q: 如何授予用户对数据库的权限?
sql
GRANT <privilege> ON DATABASE <database_name> TO <username>;
例如,要授予用户对数据库的完全权限:
sql
GRANT ALL PRIVILEGES ON DATABASE <database_name> TO <username>;
Q: 如何备份和恢复 PostgreSQL 数据库?
- 备份 (pg_dump):
bash
pg_dump -U <username> -d <database_name> > <backup_file.sql> - 恢复 (psql):
bash
psql -U <username> -d <database_name> < <backup_file.sql>
Q:安装了新版本的PostgreSQL, 如何迁移旧版本数据库?
可以使用pg_upgrade
工具进行数据库迁移
例如:
bash
pg_upgrade \
-d /var/lib/pgsql/9.6/data/ \
-D /var/lib/pgsql/12/data/ \
-b /usr/pgsql-9.6/bin/ \
-B /usr/pgsql-12/bin/
Q:如果忘记了PostgreSQL的超级用户(postgres)密码,如何重置?
- 停止PostgreSQL服务
- 编辑
pg_hba.conf
将包含local all postgres
配置项的那一行的验证方式从md5
或者其他,改为trust
- 启动PostgreSQL服务
- 使用psql免密登录
bash
psql -U postgres - 修改密码
sql
ALTER USER postgres WITH PASSWORD 'new_password'; - 将
pg_hba.conf
恢复到之前的状态 - 重启PostgreSQL服务
希望这篇详细的 PostgreSQL 安装教程对您有所帮助! 如果您在安装或配置过程中遇到任何问题,请随时查阅 PostgreSQL 官方文档或在相关论坛上寻求帮助。