一、安装前准备

在开始安装PostgreSQL之前,我们需要确认系统满足基本要求,并选择合适的版本,避免后续踩坑。

1.1 系统要求

根据PostgreSQL 17官方文档(www.postgresql.org/docs/17/ins…

  • 硬件:至少256MB内存(推荐1GB以上)、100MB空闲磁盘空间(数据存储需更多);
  • 软件:依赖部分系统库(如libreadline(命令行历史)、zlib(数据压缩)、openssl(加密)),多数操作系统会预装这些库;
  • 权限:安装过程需要管理员/root权限(用于创建服务、写入系统目录)。

1.2 版本选择

PostgreSQL官网提供稳定版(当前为17)和开发版(18beta),初学者建议选择稳定版(www.postgresql.org/download/),…

二、不同操作系统的安装步骤

PostgreSQL支持Windows、macOS、Linux三大主流系统,以下是各系统的详细安装流程(均基于官网17版文档)。

2.1 Windows系统安装

Windows系统推荐使用官方安装包(无需编译,步骤简单):

  1. 下载安装包:访问PostgreSQL Windows下载页(www.postgresql.org/download/wi…
  2. 运行安装程序
    • 双击安装包,点击「Next」,接受许可协议;
    • 选择安装组件:建议勾选「PostgreSQL Server」(核心服务)、「pgAdmin 4」(图形化管理工具)、「Command Line Tools」(psql等命令行工具);
    • 设置安装目录(默认C:Program FilesPostgreSQL17)和数据目录(默认C:Program FilesPostgreSQL17data,建议非系统盘,如D:PostgreSQLdata);
    • 设置超级用户密码postgres用户,后续连接数据库的关键密码,务必记住);
    • 选择端口(默认5432,若被MySQL等服务占用,可改为5433);
  3. 完成安装:点击「Finish」,可选「Launch Stack Builder」安装额外工具(如ODBC驱动)。

2.2 macOS系统安装

macOS推荐使用Homebrew(包管理器,无需手动配置路径)或官方安装包:

方式1:Homebrew安装(推荐)

  1. 安装Homebrew(若未安装):打开终端执行
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. 安装PostgreSQL 17
    brew install postgresql@17
    
  3. 初始化数据库(Homebrew不会自动初始化):
    initdb /usr/local/var/postgresql@17 --locale=en_US.UTF-8  # 设置UTF-8编码
    
  4. 启动服务(开机自启):
    brew services start postgresql@17
    

方式2:官方安装包

  1. 下载安装包(www.postgresql.org/download/ma…
  2. 双击安装包,按提示完成安装(步骤类似Windows);
  3. 初始化数据库:打开「终端」,执行
    /Library/PostgreSQL/17/bin/initdb /Library/PostgreSQL/17/data --locale=en_US.UTF-8
    
  4. 启动服务:
    sudo /Library/PostgreSQL/17/bin/pg_ctl -D /Library/PostgreSQL/17/data start
    

2.3 Linux系统安装

Linux系统推荐使用包管理器(apt/yum),无需手动编译,以下以Ubuntu 22.04和CentOS 9为例:

2.3.1 Ubuntu/Debian系统(apt)

  1. 添加PostgreSQL apt源
    sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    
  2. 导入官方密钥
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    
  3. 更新包列表
    sudo apt update
    
  4. 安装PostgreSQL 17
    sudo apt install postgresql-17
    
  5. 验证服务:安装完成后服务自动启动,执行
    sudo systemctl status postgresql-17  # 查看状态(active为正常)
    

2.3.2 CentOS/RHEL系统(yum)

  1. 安装PostgreSQL YUM库
    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    
  2. 安装PostgreSQL 17
    sudo dnf install postgresql17-server
    
  3. 初始化数据库
    sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
    
  4. 启动服务并设置开机自启
    sudo systemctl start postgresql-17  # 启动服务
    sudo systemctl enable postgresql-17  # 开机自启
    

三、环境配置(关键!否则命令行无法使用)

安装完成后,需配置环境变量(让psql等命令全局可用)和服务管理(控制数据库启动/停止)。

3.1 设置环境变量(PATH)

psql等命令位于PostgreSQL的bin目录下,需将该目录添加到系统PATH中:

Windows系统

  1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」;
  2. 在「系统变量」中找到「Path」,点击「编辑」→「新建」,添加C:Program FilesPostgreSQL17bin(替换为你的安装路径);
  3. 关闭所有终端,重新打开,执行psql --version(显示版本号则成功)。

macOS系统(Homebrew安装)

  1. 打开终端,编辑~/.zshrc(若用bash则编辑~/.bash_profile):
    vi ~/.zshrc
    
  2. 添加一行(PostgreSQL 17的bin目录路径):
    export PATH="/usr/local/opt/postgresql@17/bin:$PATH"
    
  3. 使配置生效:
    source ~/.zshrc
    
  4. 验证:psql --version

Linux系统(Ubuntu/CentOS)

  1. 编辑/etc/profile(系统级,所有用户可用)或~/.bashrc(用户级):
    sudo vi /etc/profile
    
  2. 添加一行(PostgreSQL 17的bin目录路径):
    export PATH="/usr/lib/postgresql/17/bin:$PATH"  # Ubuntu路径
    # export PATH="/usr/pgsql-17/bin:$PATH"  # CentOS路径
    
  3. 使配置生效:
    source /etc/profile
    
  4. 验证:psql --version

3.2 服务管理(启动/停止/开机自启)

PostgreSQL以系统服务形式运行,以下是各系统的服务管理命令:

系统启动服务停止服务查看状态开机自启
Windowsnet start postgresql-x64-17net stop postgresql-x64-17sc query postgresql-x64-17安装时默认开启
macOS(Homebrew)brew services start postgresql@17brew services stop postgresql@17brew services listbrew services start postgresql@17(自动开机)
Linux(systemd)sudo systemctl start postgresql-17sudo systemctl stop postgresql-17sudo systemctl status postgresql-17sudo systemctl enable postgresql-17

四、验证安装(确保数据库可用)

安装完成后,需验证数据库是否正常运行,步骤如下:

  1. 连接数据库:打开终端,执行

    psql -U postgres  # -U指定用户(postgres是超级用户)
    

    输入安装时设置的postgres密码,成功后会看到postgres=#提示符(表示已连接到默认数据库postgres)。

  2. 创建测试数据库

    CREATE DATABASE testdb;  -- 创建名为testdb的数据库(分号是SQL语句结束符)
    
  3. 切换数据库

    c testdb  -- 切换到testdb,提示符变为testdb=#
    
  4. 创建测试表并插入数据

    CREATE TABLE users (
      id SERIAL PRIMARY KEY,  -- 自增主键
      name VARCHAR(50) NOT NULL  -- 姓名(非空)
    );
    INSERT INTO users (name) VALUES ('Alice');  -- 插入一条数据
    
  5. 查询数据

    SELECT * FROM users;  -- 查询users表所有数据
    

    输出结果: id | name ----+------- 1 | Alice (1 row)

  6. 退出psql

    q  -- 退出命令行工具
    

五、课后Quiz(巩固知识点)

Quiz 1:如何在CentOS 9中安装PostgreSQL 17并设置开机自启?

答案解析

  1. 安装YUM库:sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  2. 安装服务:sudo dnf install postgresql17-server
  3. 初始化数据库:sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
  4. 启动服务:sudo systemctl start postgresql-17
  5. 开机自启:sudo systemctl enable postgresql-17

Quiz 2:Windows下执行psql提示「不是内部或外部命令」,怎么办?

答案解析: 原因是psql所在的bin目录未添加到PATH环境变量。解决步骤:

  1. 检查PostgreSQL17bin目录路径(如C:Program FilesPostgreSQL17bin);
  2. 按照「3.1 Windows系统」的步骤添加环境变量;
  3. 重启终端,执行psql --version验证。

六、常见报错及解决办法

以下是安装/配置过程中高频报错的原因分析和解决办法(官网错误文档:www.postgresql.org/docs/17/err…

报错1:psql: FATAL: role "postgres" does not exist

原因:PostgreSQL未初始化数据库,导致默认的postgres角色(超级用户)不存在。
解决

  • Windows:重新运行安装程序,选择「Repair」修复并重新初始化;
  • macOS(Homebrew):执行initdb /usr/local/var/postgresql@17 --locale=en_US.UTF-8
  • Linux(Ubuntu):执行sudo pg_createcluster 17 main --start(创建数据库集群)。

报错2:could not connect to server: Connection refused

原因:数据库服务未启动、端口被占用或防火墙阻止连接。
解决

  1. 检查服务状态(如systemctl status postgresql-17),未启动则启动;
  2. 检查端口占用:netstat -tuln | grep 5432(Windows用netstat -ano | findstr :5432),若被占用则修改postgresql.conf中的port参数(如改为5433),重启服务;
  3. 开放防火墙端口:Linux执行sudo ufw allow 5432(Ubuntu),Windows在防火墙中添加5432端口的入站规则。

报错3:password authentication failed for user "postgres"

原因:密码错误,或pg_hba.conf文件的认证方式设置不当。
解决

  1. 重置密码
    • 修改pg_hba.conf文件(路径:WindowsC:Program FilesPostgreSQL17datapg_hba.conf;Linux/var/lib/postgresql/17/main/pg_hba.conf);
    • local all postgres peer改为local all postgres trust(临时允许无密码登录);
    • 重启服务,执行psql -U postgres(无密码登录),重置密码:ALTER USER postgres WITH PASSWORD 'new_password';
    • 恢复pg_hba.conf中的认证方式(改回peerscram-sha-256),重启服务。

参考链接

  • PostgreSQL 17安装指南:www.postgresql.org/docs/17/ins…
  • 服务管理文档:www.postgresql.org/docs/17/ser…
  • 环境变量文档:www.postgresql.org/docs/17/ref…
本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:[email protected]