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 验证安装
-
打开命令提示符,输入以下命令:
bashpsql --version如果安装成功,会显示PostgreSQL的版本信息
-
连接到PostgreSQL:
bashpsql -U postgres -h localhost输入超级用户密码,成功连接后会显示PostgreSQL命令行界面
-
查看已安装的数据库:
sql\l -
退出psql:
sql\q
1.4.3 Linux系统安装PostgreSQL 18
1.4.3.1 Ubuntu 24.04系统安装
1.4.3.1.1 添加PostgreSQL官方仓库
-
更新系统包:
bashsudo apt update sudo apt upgrade -y -
安装必要的依赖:
bashsudo apt install -y wget ca-certificates -
添加PostgreSQL官方GPG密钥:
bashwget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg -
添加PostgreSQL 18仓库:
bashecho "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
1.4.3.1.2 安装PostgreSQL 18
-
更新系统包:
bashsudo apt update -
安装PostgreSQL 18:
bashsudo apt install -y postgresql-18 postgresql-contrib-18 -
验证PostgreSQL服务状态:
bashsudo systemctl status postgresql -
设置PostgreSQL服务开机自启:
bashsudo systemctl enable postgresql
1.4.3.1.3 配置PostgreSQL
-
切换到postgres用户:
bashsudo su - postgres -
连接到PostgreSQL:
bashpsql -
设置postgres用户密码:
sqlALTER USER postgres PASSWORD 'new_password'; -
退出psql和postgres用户:
sql\q exit -
配置PostgreSQL允许远程连接(可选):
bashsudo vi /etc/postgresql/18/main/postgresql.conf修改以下配置:
listen_addresses = '*' # 允许所有IP访问 -
配置pg_hba.conf,允许远程连接:
bashsudo vi /etc/postgresql/18/main/pg_hba.conf添加以下配置:
host all all 0.0.0.0/0 scram-sha-256 -
重启PostgreSQL服务:
bashsudo systemctl restart postgresql
1.4.4 macOS系统安装PostgreSQL 18
1.4.4.1 使用Homebrew安装
-
安装Homebrew(如果尚未安装):
bash/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
更新Homebrew:
bashbrew update -
安装PostgreSQL 18:
bashbrew install postgresql@18 -
启动PostgreSQL服务:
bashbrew services start postgresql@18 -
验证安装:
bashpsql --version
1.4.4.2 使用DMG安装包安装
- 访问PostgreSQL官方下载页面:https://www.postgresql.org/download/macosx/
- 下载PostgreSQL 18 DMG安装包
- 双击安装包,启动安装向导
- 按照提示完成安装
- 安装完成后,PostgreSQL会自动启动
1.4.4.3 验证安装
-
连接到PostgreSQL:
bashpsql -U postgres -h localhost -
查看已安装的数据库:
sql\l -
退出psql:
sql\q
1.4.5 PostgreSQL初始化配置
1.4.5.1 修改超级用户密码
-
连接到PostgreSQL:
bashpsql -U postgres -h localhost -
修改超级用户密码:
sqlALTER USER postgres PASSWORD 'new_password';
1.4.5.2 创建新用户和数据库
-
连接到PostgreSQL:
bashpsql -U postgres -h localhost -
创建新用户:
sqlCREATE USER myuser WITH PASSWORD 'mypassword'; -
创建新数据库:
sqlCREATE DATABASE mydb; -
将数据库所有者设置为新用户:
sqlALTER DATABASE mydb OWNER TO myuser; -
授予用户对数据库的所有权限:
sqlGRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
1.4.5.3 配置远程访问
-
编辑postgresql.conf文件:
bash# 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 -
修改监听地址:
listen_addresses = '*' # 允许所有IP访问 -
编辑pg_hba.conf文件:
bash# 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 -
添加远程访问规则:
# 允许所有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 -
重启PostgreSQL服务:
bash# 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
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
- 创建一个测试表
- 插入测试数据
- 查询测试数据
sql
-- 创建测试表
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 备份和恢复测试
-
备份测试数据库:
bashpg_dump -U postgres -d mydb -f mydb_backup.sql -
恢复测试数据库:
bashpsql -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安装和配置的章节