1.4.1 PostgreSQL 本地安装概述
PostgreSQL 可以在多种操作系统上安装,包括 Windows、Linux 和 macOS。本地安装 PostgreSQL 是学习和使用 PostgreSQL 的基础,通过本地安装,你可以在自己的计算机上运行和管理 PostgreSQL 数据库。
本章节将详细介绍在不同操作系统上安装 PostgreSQL 18 的方法,包括:
- Windows 系统安装
- Linux 系统安装(Ubuntu 24.04)
- macOS 系统安装
- PostgreSQL 初始化配置
- 本地安装实践项目
1.4.2 Windows 系统安装 PostgreSQL 18
1.4.2.1 系统要求
- Windows 10 或 Windows Server 2016 及以上版本
- 至少 2GB RAM
- 至少 10GB 可用磁盘空间
- 64 位操作系统
1.4.2.2 下载安装包
- 访问 PostgreSQL 官方下载页面:https://www.postgresql.org/download/windows/
- 点击"Download the installer"按钮,进入 EDB 下载页面
- 选择 PostgreSQL 18 版本,点击"Download"按钮下载安装包
1.4.2.3 安装步骤
- 双击下载的安装包,启动安装向导
- 点击"Next"按钮,进入安装目录选择页面
- 选择安装目录,默认安装在
C:\Program Files\PostgreSQL\18 - 选择要安装的组件,建议选择所有组件:
- PostgreSQL Server:PostgreSQL 服务器
- pgAdmin 4:PostgreSQL 图形化管理工具
- Stack Builder:用于安装额外的 PostgreSQL 扩展
- Command Line Tools:命令行工具,包括 psql、pg_dump 等
- 选择数据目录,默认位于
C:\Program Files\PostgreSQL\18\data - 设置 PostgreSQL 超级用户(postgres)的密码
- 设置端口号,默认端口为 5432
- 选择区域设置,建议选择"Default locale"
- 点击"Next"按钮,开始安装
- 安装完成后,选择是否启动 Stack Builder(可以选择不启动)
- 点击"Finish"按钮,完成安装
1.4.2.4 验证安装
退出 psql:
\q
查看已安装的数据库:
\l
连接到 PostgreSQL:
psql -U postgres -h localhost
输入超级用户密码,成功连接后会显示 PostgreSQL 命令行界面
打开命令提示符,输入以下命令:
psql --version
如果安装成功,会显示 PostgreSQL 的版本信息
1.4.3 Linux 系统安装 PostgreSQL 18
1.4.3.1 Ubuntu 24.04 系统安装
1.4.3.1.1 添加 PostgreSQL 官方仓库
添加 PostgreSQL 18 仓库:
echo "deb [signed-by=/usr/share/keyrings/postgresql-keyring.gpg] http://apt.postgresql.org/pub/repos/apt/ jammy-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
添加 PostgreSQL 官方 GPG 密钥:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg
安装必要的依赖:
sudo apt install -y wget ca-certificates
更新系统包:
sudo apt update && sudo apt upgrade -y
1.4.3.1.2 安装 PostgreSQL 18
设置 PostgreSQL 服务开机自启:
sudo systemctl enable postgresql
验证 PostgreSQL 服务状态:
sudo systemctl status postgresql
安装 PostgreSQL 18:
sudo apt install -y postgresql-18 postgresql-contrib-18
更新系统包:
sudo apt update
1.4.3.1.3 配置 PostgreSQL
重启 PostgreSQL 服务:
sudo systemctl restart postgresql
配置 pg_hba.conf,允许远程连接:
sudo vi /etc/postgresql/18/main/pg_hba.conf
添加以下配置:
host all all 0.0.0.0/0 scram-sha-256
配置 PostgreSQL 允许远程连接(可选):
sudo vi /etc/postgresql/18/main/postgresql.conf
修改以下配置:
listen_addresses = '*' # 允许所有 IP 访问
退出 psql 和 postgres 用户:
\q exit
设置 postgres 用户密码:
ALTER USER postgres PASSWORD 'new_password';
连接到 PostgreSQL:
psql
切换到 postgres 用户:
sudo su - postgres
1.4.4 macOS 系统安装 PostgreSQL 18
1.4.4.1 使用 Homebrew 安装
验证安装:
psql --version
启动 PostgreSQL 服务:
brew services start postgresql@18
安装 PostgreSQL 18:
brew install postgresql@18
更新 Homebrew:
brew update
安装 Homebrew(如果尚未安装):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
1.4.4.2 使用 DMG 安装包安装
- 访问 PostgreSQL 官方下载页面:https://www.postgresql.org/download/macosx/
- 下载 PostgreSQL 18 DMG 安装包
- 双击安装包,启动安装向导
- 按照提示完成安装
- 安装完成后,PostgreSQL 会自动启动
1.4.4.3 验证安装
退出 psql:
\q
查看已安装的数据库:
\l
连接到 PostgreSQL:
psql -U postgres -h localhost
1.4.5 PostgreSQL 初始化配置
1.4.5.1 修改超级用户密码
修改超级用户密码:
ALTER USER postgres PASSWORD 'new_password';
连接到 PostgreSQL:
psql -U postgres -h localhost
1.4.5.2 创建新用户和数据库
授予用户对数据库的所有权限:
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
将数据库所有者设置为新用户:
ALTER DATABASE mydb OWNER TO myuser;
创建新数据库:
CREATE DATABASE mydb;
创建新用户:
CREATE USER myuser WITH PASSWORD 'mypassword';
连接到 PostgreSQL:
psql -U postgres -h localhost
1.4.5.3 配置远程访问
重启 PostgreSQL 服务:
# Windows 系统 net stop postgresql-x64-18 && net start postgresql-x64-18 # Ubuntu 24.04 系统 sudo systemctl restart postgresql # macOS 系统(Homebrew 安装) brew services restart postgresql@18
添加远程访问规则:
# 允许所有 IP 地址使用 scram-sha-256 认证方式连接到所有数据库 host all all 0.0.0.0/0 scram-sha-256 # 允许 IPv6 地址使用 scram-sha-256 认证方式连接到所有数据库 host all all ::/0 scram-sha-256
编辑 pg_hba.conf 文件:
# Windows 系统 notepad "C:\Program Files\PostgreSQL\18\data\pg_hba.conf" # Linux 系统(Ubuntu 24.04)sudo vi /etc/postgresql/18/main/pg_hba.conf # macOS 系统(Homebrew 安装)vi /opt/homebrew/var/postgresql@18/pg_hba.conf
修改监听地址:
listen_addresses = '*' # 允许所有 IP 访问
编辑 postgresql.conf 文件:
# Windows 系统 notepad "C:\Program Files\PostgreSQL\18\data\postgresql.conf" # Linux 系统(Ubuntu 24.04)sudo vi /etc/postgresql/18/main/postgresql.conf # macOS 系统(Homebrew 安装)vi /opt/homebrew/var/postgresql@18/postgresql.conf
1.4.6 实践项目:本地安装 PG18
1.4.6.1 项目目标
通过本次实践,掌握在不同操作系统上安装 PostgreSQL 18 的方法,包括:
- Windows 系统安装 PostgreSQL 18
- Linux 系统安装 PostgreSQL 18
- macOS 系统安装 PostgreSQL 18
- PostgreSQL 初始化配置
- 创建用户和数据库
- 配置远程访问
1.4.6.2 实践步骤
1.4.6.2.1 选择合适的安装方式
根据你的操作系统,选择相应的安装方式:
- Windows:使用安装包安装
- Linux:使用包管理器安装
- macOS:使用 Homebrew 或 DMG 安装包安装
1.4.6.2.2 安装 PostgreSQL 18
按照上述相应操作系统的安装步骤,完成 PostgreSQL 18 的安装。
1.4.6.2.3 初始化配置
- 修改超级用户密码
- 创建新用户和数据库
- 配置远程访问
1.4.6.2.4 验证安装
- 使用 psql 连接到 PostgreSQL
- 创建一个测试表
- 插入测试数据
- 查询测试数据
-- 创建测试表 CREATE TABLE test ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, value INTEGER ); -- 插入测试数据 INSERT INTO test (name, value) VALUES ('test1', 100), ('test2', 200), ('test3', 300); -- 查询测试数据 SELECT * FROM test;
1.4.6.2.5 备份和恢复测试
恢复测试数据库:
psql -U postgres -d mydb -f mydb_backup.sql
备份测试数据库:
pg_dump -U postgres -d mydb -f mydb_backup.sql
1.4.7 PostgreSQL 常用命令
1.4.7.1 服务管理命令
| 操作系统 | 启动命令 | 停止命令 | 重启命令 | 查看状态 | 开机自启 |
|---|---|---|---|---|---|
| Windows | net start postgresql-x64-18 | net stop postgresql-x64-18 | net stop postgresql-x64-18 && net start postgresql-x64-18 | sc query postgresql-x64-18 | 安装时自动配置 |
| Ubuntu 24.04 | sudo systemctl start postgresql | sudo systemctl stop postgresql | sudo systemctl restart postgresql | sudo systemctl status postgresql | sudo systemctl enable postgresql |
| macOS (Homebrew) | brew services start postgresql@18 | brew services stop postgresql@18 | brew services restart postgresql@18 | brew services list | 安装时自动配置 |
1.4.7.2 客户端命令
| 命令 | 描述 | 示例 |
|---|---|---|
psql | PostgreSQL 命令行客户端 | psql -U postgres -h localhost |
pg_dump | 备份数据库 | pg_dump -U postgres -d mydb -f mydb.sql |
pg_restore | 恢复数据库 | pg_restore -U postgres -d mydb mydb.dump |
createdb | 创建数据库 | createdb -U postgres mydb |
dropdb | 删除数据库 | dropdb -U postgres mydb |
createuser | 创建用户 | createuser -U postgres myuser -P |
dropuser | 删除用户 | dropuser -U postgres myuser |
pg_ctl | PostgreSQL 服务器控制工具 | pg_ctl start -D /usr/local/pgsql/data |
initdb | 初始化 PostgreSQL 数据库集群 | initdb -D /usr/local/pgsql/data |
1.4.8 主流数据库本地安装对比
为了帮助你更全面地了解不同数据库的本地安装和配置方法,本节将对比 PostgreSQL 18、SQL Server 2019+ 和 MySQL 8.0+ 在本地安装方面的差异。
1.4.8.1 安装方法对比
| 操作系统 | PostgreSQL 18 | SQL Server 2019+ | MySQL 8.0+ |
|---|---|---|---|
| Windows | 通过 EDB 安装包安装,或使用 Chocolatey | 通过 SQL Server 安装向导,或使用 Chocolatey | 通过 MySQL Installer,或使用 Chocolatey |
| Ubuntu 24.04 | 通过 apt 仓库安装:sudo apt install postgresql-18 | 使用 apt 仓库或 Docker | 通过 apt 仓库安装:sudo apt install mysql-server |
| macOS | 通过 Homebrew 安装:brew install postgresql@18,或使用 EnterpriseDB 安装包 | 使用 Docker 或 Azure Data Studio | 通过 Homebrew 安装:brew install mysql,或使用 MySQL Installer |
| 安装包大小 | 约 200MB | 约 1GB(完整安装) | 约 600MB |
| 安装时间 | 较快,约 5-10 分钟 | 较慢,约 20-30 分钟(完整安装) | 中等,约 10-15 分钟 |
| 默认安装目录 | Windows: C:\Program Files\PostgreSQL\18,Linux: /var/lib/postgresql/18/main,macOS: /usr/local/var/postgresql@18 | Windows: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER,Linux: /var/opt/mssql | Windows: C:\Program Files\MySQL\MySQL Server 8.0,Linux: /var/lib/mysql,macOS: /usr/local/var/mysql |
1.4.8.2 初始化配置对比
| 配置方面 | PostgreSQL 18 | SQL Server 2019+ | MySQL 8.0+ |
|---|---|---|---|
| 初始化命令 | Windows: 安装时自动初始化,Linux (Ubuntu 24.04): 安装时自动初始化,macOS: initdb /usr/local/var/postgresql@18 | 安装时自动初始化 | Windows: 安装时自动初始化,Linux: sudo mysqld --initialize |
| 默认端口 | 5432 | 1433 | 3306 |
| 默认超级用户 | postgres | sa | root |
| 密码设置 | 安装时设置 postgres 用户密码,或使用 pg_ctl 设置 | 安装时设置 sa 用户密码 | 安装时设置 root 用户密码,或初始化时生成临时密码 |
| 字符集 | 默认 UTF-8 | 默认 Latin1 或 UTF-8 | 默认 Latin1 或 UTF-8 |
| 默认存储引擎 | 堆表存储引擎 | Rowstore(B-Tree) | InnoDB |
| 初始化数据目录 | 自动创建,包含配置文件和数据文件 | 自动创建,包含数据库文件和日志文件 | 自动创建,包含数据文件和配置文件 |
1.4.8.3 服务管理对比
| 服务方面 | PostgreSQL 18 | SQL Server 2019+ | MySQL 8.0+ |
|---|---|---|---|
| 服务名称 | Windows: postgresql-x64-18,Linux (Ubuntu 24.04): postgresql,macOS: postgresql@18 | Windows: MSSQLSERVER,Linux: mssql-server | Windows: MySQL80,Linux: mysqld |
| 启动命令 | Windows: net start postgresql-x64-18,Linux (Ubuntu 24.04): sudo systemctl start postgresql,macOS: brew services start postgresql@18 | Windows: net start MSSQLSERVER,Linux: sudo systemctl start mssql-server | Windows: net start MySQL80,Linux: sudo systemctl start mysqld |
| 停止命令 | Windows: net stop postgresql-x64-18,Linux (Ubuntu 24.04): sudo systemctl stop postgresql,macOS: brew services stop postgresql@18 | Windows: net stop MSSQLSERVER,Linux: sudo systemctl stop mssql-server | Windows: net stop MySQL80,Linux: sudo systemctl stop mysqld |
| 重启命令 | Windows: net stop postgresql-x64-18 && net start postgresql-x64-18,Linux (Ubuntu 24.04): sudo systemctl restart postgresql,macOS: brew services restart postgresql@18 | Windows: net stop MSSQLSERVER && net start MSSQLSERVER,Linux: sudo systemctl restart mssql-server | Windows: net stop MySQL80 && net start MySQL80,Linux: sudo systemctl restart mysqld |
| 开机自启 | Windows: 安装时自动配置,Linux (Ubuntu 24.04): sudo systemctl enable postgresql,macOS: brew services start postgresql@18 | Windows: 安装时自动配置,Linux: sudo systemctl enable mssql-server | Windows: 安装时自动配置,Linux: sudo systemctl enable mysqld |
| 状态查看 | Windows: sc query postgresql-x64-18,Linux (Ubuntu 24.04): sudo systemctl status postgresql,macOS: brew services list | Windows: sc query MSSQLSERVER,Linux: sudo systemctl status mssql-server | Windows: sc query MySQL80,Linux: sudo systemctl status mysqld |
1.4.8.4 配置文件结构对比
| 配置文件 | PostgreSQL 18 | SQL Server 2019+ | MySQL 8.0+ |
|---|---|---|---|
| 主配置文件 | postgresql.conf:包含数据库服务器的主要配置 | mssql.conf(Linux),Windows: 通过 SQL Server Configuration Manager 管理 | my.cnf 或 my.ini:包含 MySQL 服务器的主要配置 |
| 认证配置文件 | pg_hba.conf:控制客户端认证方式 | 通过 SQL Server Management Studio 或 Transact-SQL 管理 | 通过 my.cnf 和权限表管理 |
| 访问控制文件 | pg_ident.conf:用于映射系统用户到数据库用户 | 通过 SQL Server Management Studio 或 Transact-SQL 管理 | 通过权限表和防火墙管理 |
| 日志文件 | Windows: C:\Program Files\PostgreSQL\18\data\pg_log,Linux: /var/log/postgresql,macOS: /usr/local/var/log/postgresql@18 | Windows: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log,Linux: /var/opt/mssql/log | Windows: C:\ProgramData\MySQL\MySQL Server 8.0\Data,Linux: /var/log/mysql,macOS: /usr/local/var/mysql |
| 配置文件修改方式 | 直接编辑配置文件,需要重启服务 | Windows: 使用 SQL Server Configuration Manager,Linux: 编辑 mssql.conf,部分配置需要重启服务 | 直接编辑配置文件,部分配置需要重启服务 |
1.4.8.5 用户和数据库管理对比
| 管理方面 | PostgreSQL 18 | SQL Server 2019+ | MySQL 8.0+ |
|---|---|---|---|
| 创建用户 | CREATE USER username WITH PASSWORD 'password'; | CREATE LOGIN username WITH PASSWORD = 'password'; CREATE USER username FOR LOGIN username; | CREATE USER username@'localhost' IDENTIFIED BY 'password'; |
| 创建数据库 | CREATE DATABASE dbname; | CREATE DATABASE dbname; | CREATE DATABASE dbname; |
| 授权 | GRANT ALL PRIVILEGES ON DATABASE dbname TO username; | ALTER AUTHORIZATION ON DATABASE::dbname TO username; | GRANT ALL PRIVILEGES ON dbname.* TO username@'localhost'; FLUSH PRIVILEGES; |
| 客户端工具 | psql(命令行),pgAdmin(图形化) | sqlcmd(命令行),SQL Server Management Studio(图形化) | mysql(命令行),MySQL Workbench(图形化) |
| 远程访问配置 | 修改 postgresql.conf 的 listen_addresses 和 pg_hba.conf | 修改 SQL Server 配置管理器的网络配置,配置防火墙 | 修改 my.cnf 的 bind-address,配置防火墙,创建远程用户 |
1.4.8.6 常用命令对比
| 命令类型 | PostgreSQL 18 | SQL Server 2019+ | MySQL 8.0+ |
|---|---|---|---|
| 连接数据库 | psql -U username -d dbname -h host | sqlcmd -S server -U username -P password -d dbname | mysql -u username -p -h host dbname |
| 备份数据库 | pg_dump -U username -d dbname -f backup.sql | sqlcmd -S server -U username -P password -Q "BACKUP DATABASE dbname TO DISK = 'backup.bak'" | mysqldump -u username -p dbname > backup.sql |
| 恢复数据库 | pg_restore -U username -d dbname backup.dump,或 psql -U username -d dbname -f backup.sql | sqlcmd -S server -U username -P password -Q "RESTORE DATABASE dbname FROM DISK = 'backup.bak'" | mysql -u username -p dbname < backup.sql |
| 列出数据库 | psql -l,或在 psql 中:l | sqlcmd -S server -U username -P password -Q "SELECT name FROM sys.databases;" | mysql -u username -p -e "SHOW DATABASES;" |
| 列出用户 | 在 psql 中:du | sqlcmd -S server -U username -P password -Q "SELECT name FROM sys.server_principals WHERE type IN ('S','U');" | mysql -u username -p -e "SELECT user FROM mysql.user;" |
| 查看版本 | psql --version,或在 psql 中:SELECT version(); | sqlcmd -S server -U username -P password -Q "SELECT @@VERSION;" | mysql --version,或在 mysql 中:SELECT VERSION(); |
1.4.8.7 适用场景对比
| 场景类型 | PostgreSQL 18 | SQL Server 2019+ | MySQL 8.0+ |
|---|---|---|---|
| 开发环境 | 适合,安装简单,配置灵活 | 适合,尤其是与.NET 开发环境集成 | 适合,安装简单,资源占用低 |
| 测试环境 | 适合,易于部署和配置 | 适合,支持多种配置选项 | 适合,易于自动化部署 |
| 生产环境 | 适合,稳定性高,支持高可用配置 | 适合,企业级支持,功能全面 | 适合,高性能,适合高并发场景 |
| 大数据量 | 适合,支持分区表和并行查询 | 适合,支持列存储和内存优化表 | 适合,InnoDB 引擎支持大数据量 |
| 复杂查询 | 适合,强大的查询优化器和高级 SQL 特性 | 适合,优秀的查询优化器和分析功能 | 适合,基本的复杂查询支持 |
| 成本敏感 | 适合,开源免费,无许可费用 | 不适合,企业版许可费用高 | 适合,开源免费,无许可费用 |
| 跨平台需求 | 适合,完全跨平台支持 | 适合,支持 Windows 和 Linux | 适合,完全跨平台支持 |
1.4.9 总结
本章节详细介绍了在不同操作系统上安装 PostgreSQL 18 的方法,包括:
- Windows 系统安装 PostgreSQL 18
- Linux 系统安装 PostgreSQL 18(Ubuntu 24.04)
- macOS 系统安装 PostgreSQL 18
- PostgreSQL 初始化配置
- 创建用户和数据库
- 配置远程访问
- PostgreSQL 常用命令
- 一个完整的本地安装实践项目
- 主流数据库本地安装对比
通过本章节的学习,你应该能够:
- 在不同操作系统上成功安装 PostgreSQL 18
- 进行基本的 PostgreSQL 配置
- 创建用户和数据库
- 配置远程访问
- 使用常用的 PostgreSQL 命令
- 了解 PostgreSQL 18 与 SQL Server 2019+ 和 MySQL 8.0+ 在本地安装方面的差异
PostgreSQL 的本地安装是学习和使用 PostgreSQL 的基础,掌握本地安装方法可以帮助你快速搭建开发和测试环境,为后续学习 PostgreSQL 的高级特性打下坚实的基础。同时,通过与其他主流数据库的对比,你可以更好地理解 PostgreSQL 的特点和优势,选择最适合你需求的数据库。
在接下来的章节中,我们将学习 PostgreSQL 的 SQL 基础语法和高级查询,帮助你掌握 PostgreSQL 的数据操作和查询技能。
1.4.10 思考与练习
1.4.10.1 思考问题
- 比较 PostgreSQL 18 与 SQL Server 2019+ 和 MySQL 8.0+ 在本地安装方面的差异
- 为什么需要配置 PostgreSQL 允许远程访问?配置远程访问时需要注意哪些安全问题?
- PostgreSQL 的主要配置文件有哪些?它们的作用是什么?
- 如何管理 PostgreSQL 服务?不同操作系统的命令有什么区别?
- 什么是数据库备份和恢复?为什么需要定期备份数据库?
1.4.10.2 练习题
- 在你的操作系统上安装 PostgreSQL 18
- 创建一个新用户和数据库
- 配置 PostgreSQL 允许远程访问
- 使用 psql 连接到 PostgreSQL,创建表并插入数据
- 使用 pg_dump 备份数据库
- 使用 pg_restore 恢复数据库
- 了解 PostgreSQL 的常用命令
- 比较不同操作系统上安装 PostgreSQL 的异同
- 编写一个脚本,自动备份 PostgreSQL 数据库
- 简述 PostgreSQL 18 与 SQL Server 2019+ 和 MySQL 8.0+ 在用户和数据库管理方面的差异
1.4.11 参考资源
- PostgreSQL 官方文档:安装指南
- PostgreSQL 官方下载页面:https://www.postgresql.org/download/
- PostgreSQL 中文社区:https://www.postgresql.org.cn/
- 《PostgreSQL 实战》:关于 PostgreSQL 安装和配置的章节
