PostgreSQL 18 从新手到大师:实战指南 - 1.4 PostgreSQL本地安装

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 下载安装包

  1. 访问PostgreSQL官方下载页面:https://www.postgresql.org/download/windows/
  2. 点击"Download the installer"按钮,进入EDB下载页面
  3. 选择PostgreSQL 18版本,点击"Download"按钮下载安装包

1.4.2.3 安装步骤

  1. 双击下载的安装包,启动安装向导
  2. 点击"Next"按钮,进入安装目录选择页面
  3. 选择安装目录,默认安装在C:\Program Files\PostgreSQL\18
  4. 选择要安装的组件,建议选择所有组件:
    • PostgreSQL Server:PostgreSQL服务器
    • pgAdmin 4:PostgreSQL图形化管理工具
    • Stack Builder:用于安装额外的PostgreSQL扩展
    • Command Line Tools:命令行工具,包括psql、pg_dump等
  5. 选择数据目录,默认位于C:\Program Files\PostgreSQL\18\data
  6. 设置PostgreSQL超级用户(postgres)的密码
  7. 设置端口号,默认端口为5432
  8. 选择区域设置,建议选择"Default locale"
  9. 点击"Next"按钮,开始安装
  10. 安装完成后,选择是否启动Stack Builder(可以选择不启动)
  11. 点击"Finish"按钮,完成安装

1.4.2.4 验证安装

  1. 打开命令提示符,输入以下命令:

    bash 复制代码
    psql --version

    如果安装成功,会显示PostgreSQL的版本信息

  2. 连接到PostgreSQL:

    bash 复制代码
    psql -U postgres -h localhost

    输入超级用户密码,成功连接后会显示PostgreSQL命令行界面

  3. 查看已安装的数据库:

    sql 复制代码
    \l
  4. 退出psql:

    sql 复制代码
    \q

1.4.3 Linux系统安装PostgreSQL 18

1.4.3.1 Ubuntu 24.04系统安装

1.4.3.1.1 添加PostgreSQL官方仓库
  1. 更新系统包:

    bash 复制代码
    sudo apt update
    sudo apt upgrade -y
  2. 安装必要的依赖:

    bash 复制代码
    sudo apt install -y wget ca-certificates
  3. 添加PostgreSQL官方GPG密钥:

    bash 复制代码
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg
  4. 添加PostgreSQL 18仓库:

    bash 复制代码
    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
1.4.3.1.2 安装PostgreSQL 18
  1. 更新系统包:

    bash 复制代码
    sudo apt update
  2. 安装PostgreSQL 18:

    bash 复制代码
    sudo apt install -y postgresql-18 postgresql-contrib-18
  3. 验证PostgreSQL服务状态:

    bash 复制代码
    sudo systemctl status postgresql
  4. 设置PostgreSQL服务开机自启:

    bash 复制代码
    sudo systemctl enable postgresql
1.4.3.1.3 配置PostgreSQL
  1. 切换到postgres用户:

    bash 复制代码
    sudo su - postgres
  2. 连接到PostgreSQL:

    bash 复制代码
    psql
  3. 设置postgres用户密码:

    sql 复制代码
    ALTER USER postgres PASSWORD 'new_password';
  4. 退出psql和postgres用户:

    sql 复制代码
    \q
    exit
  5. 配置PostgreSQL允许远程连接(可选):

    bash 复制代码
    sudo vi /etc/postgresql/18/main/postgresql.conf

    修改以下配置:

    复制代码
    listen_addresses = '*'  # 允许所有IP访问
  6. 配置pg_hba.conf,允许远程连接:

    bash 复制代码
    sudo vi /etc/postgresql/18/main/pg_hba.conf

    添加以下配置:

    复制代码
    host    all             all             0.0.0.0/0               scram-sha-256
  7. 重启PostgreSQL服务:

    bash 复制代码
    sudo systemctl restart postgresql

1.4.4 macOS系统安装PostgreSQL 18

1.4.4.1 使用Homebrew安装

  1. 安装Homebrew(如果尚未安装):

    bash 复制代码
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 更新Homebrew:

    bash 复制代码
    brew update
  3. 安装PostgreSQL 18:

    bash 复制代码
    brew install postgresql@18
  4. 启动PostgreSQL服务:

    bash 复制代码
    brew services start postgresql@18
  5. 验证安装:

    bash 复制代码
    psql --version

1.4.4.2 使用DMG安装包安装

  1. 访问PostgreSQL官方下载页面:https://www.postgresql.org/download/macosx/
  2. 下载PostgreSQL 18 DMG安装包
  3. 双击安装包,启动安装向导
  4. 按照提示完成安装
  5. 安装完成后,PostgreSQL会自动启动

1.4.4.3 验证安装

  1. 连接到PostgreSQL:

    bash 复制代码
    psql -U postgres -h localhost
  2. 查看已安装的数据库:

    sql 复制代码
    \l
  3. 退出psql:

    sql 复制代码
    \q

1.4.5 PostgreSQL初始化配置

1.4.5.1 修改超级用户密码

  1. 连接到PostgreSQL:

    bash 复制代码
    psql -U postgres -h localhost
  2. 修改超级用户密码:

    sql 复制代码
    ALTER USER postgres PASSWORD 'new_password';

1.4.5.2 创建新用户和数据库

  1. 连接到PostgreSQL:

    bash 复制代码
    psql -U postgres -h localhost
  2. 创建新用户:

    sql 复制代码
    CREATE USER myuser WITH PASSWORD 'mypassword';
  3. 创建新数据库:

    sql 复制代码
    CREATE DATABASE mydb;
  4. 将数据库所有者设置为新用户:

    sql 复制代码
    ALTER DATABASE mydb OWNER TO myuser;
  5. 授予用户对数据库的所有权限:

    sql 复制代码
    GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

1.4.5.3 配置远程访问

  1. 编辑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
  2. 修改监听地址:

    复制代码
    listen_addresses = '*'  # 允许所有IP访问
  3. 编辑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
  4. 添加远程访问规则:

    复制代码
    # 允许所有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
  5. 重启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. 修改超级用户密码
  2. 创建新用户和数据库
  3. 配置远程访问
1.4.6.2.4 验证安装
  1. 使用psql连接到PostgreSQL
  2. 创建一个测试表
  3. 插入测试数据
  4. 查询测试数据
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 备份和恢复测试
  1. 备份测试数据库:

    bash 复制代码
    pg_dump -U postgres -d mydb -f mydb_backup.sql
  2. 恢复测试数据库:

    bash 复制代码
    psql -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.cnfmy.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.conflisten_addressespg_hba.conf 修改SQL Server配置管理器的网络配置,配置防火墙 修改my.cnfbind-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的方法,包括:

  1. Windows系统安装PostgreSQL 18
  2. Linux系统安装PostgreSQL 18(Ubuntu 24.04)
  3. macOS系统安装PostgreSQL 18
  4. PostgreSQL初始化配置
  5. 创建用户和数据库
  6. 配置远程访问
  7. PostgreSQL常用命令
  8. 一个完整的本地安装实践项目
  9. 主流数据库本地安装对比

通过本章节的学习,你应该能够:

  • 在不同操作系统上成功安装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 思考问题

  1. 比较PostgreSQL 18与SQL Server 2019+和MySQL 8.0+在本地安装方面的差异
  2. 为什么需要配置PostgreSQL允许远程访问?配置远程访问时需要注意哪些安全问题?
  3. PostgreSQL的主要配置文件有哪些?它们的作用是什么?
  4. 如何管理PostgreSQL服务?不同操作系统的命令有什么区别?
  5. 什么是数据库备份和恢复?为什么需要定期备份数据库?

1.4.10.2 练习题

  1. 在你的操作系统上安装PostgreSQL 18
  2. 创建一个新用户和数据库
  3. 配置PostgreSQL允许远程访问
  4. 使用psql连接到PostgreSQL,创建表并插入数据
  5. 使用pg_dump备份数据库
  6. 使用pg_restore恢复数据库
  7. 了解PostgreSQL的常用命令
  8. 比较不同操作系统上安装PostgreSQL的异同
  9. 编写一个脚本,自动备份PostgreSQL数据库
  10. 简述PostgreSQL 18与SQL Server 2019+和MySQL 8.0+在用户和数据库管理方面的差异

1.4.11 参考资源

相关推荐
正在走向自律2 小时前
【金仓数据库产品体验官】Oracle迁移实战:深度剖析金仓V9R2C13性能优化三大核心场景,代码与数据说话!
数据库·oracle·性能优化·数据库平替用金仓·电科金仓·金仓产品体验官
DemonAvenger2 小时前
Redis哨兵模式详解:自动故障转移与高可用保障
数据库·redis·性能优化
典孝赢麻崩乐急2 小时前
Redis复习----------Redis超高性能的原因
数据库·redis·学习·缓存
腾讯云开发者2 小时前
腾讯技术面:聊聊MySQL五大核心模块
数据库·mysql
Albert Edison2 小时前
【MySQL】事务管理
数据库·mysql
l1t2 小时前
DeepSeek对利用DuckDB求解Advent of Code 2021第9题“烟雾盆地”第二部分SQL的分析
数据库·人工智能·sql·递归·duckdb·deepseek·cte
gjc5922 小时前
MySQL无主键大表删除导致主从同步延迟的深度分析
数据库·mysql
汪不止2 小时前
【 分布式唯一业务单号生成方案:Redis + 数据库双保险架构】
数据库·redis·分布式
典孝赢麻崩乐急2 小时前
Redis复习-------Redis事务
数据库·redis·缓存