Debian 系统上配置 PostgreSQL

举报
梦影. 发表于 2026/10/22 10:06:14 2026/10/22
【摘要】 📦 第一步:安装 PostgreSQL在 Debian 上,最简单的安装方式是使用其官方软件源。更新软件包列表:sudo apt update安装 PostgreSQL:建议一并安装 postgresql-contrib,它包含了一些实用的扩展和工具。sudo apt install postgresql postgresql-contrib验证服务状态:安装完成后,PostgreSQL...

📦 第一步:安装 PostgreSQL

在 Debian 上,最简单的安装方式是使用其官方软件源。

  1. 更新软件包列表:
    sudo apt update
    
  2. 安装 PostgreSQL:
    建议一并安装 postgresql-contrib,它包含了一些实用的扩展和工具。
    sudo apt install postgresql postgresql-contrib
    
  3. 验证服务状态:
    安装完成后,PostgreSQL 服务会自动启动并设置为开机自启。你可以通过以下命令确认其运行状态:
    sudo systemctl status postgresql
    

👤 第二步:初次访问与用户管理

PostgreSQL 在 Debian 上默认使用 “peer” 身份验证,这意味着本地连接时,数据库用户名需要与你的 Linux 系统用户名一致。因此,初次配置需要切换到默认的 postgres 系统用户进行操作。

  1. 切换到 postgres 用户并进入 psql:
    sudo -i -u postgres psql
    
    成功进入后,命令提示符会变为 postgres=#。
  2. 设置 postgres 用户的密码(可选,但推荐):
    虽然本地 peer 认证不需要密码,但设置密码对于后续远程连接或使用密码认证方式很有必要。
    ALTER USER postgres WITH PASSWORD '你的强密码';
    
  3. 创建新用户和数据库:
    出于安全和管理的考虑,不建议直接使用 postgres 超级用户来运行你的应用。最佳实践是创建一个专属的用户和数据库。
    -- 创建一个新用户并设置密码
    CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypassword';
    
    -- 创建一个新数据库,并指定所有者为刚才创建的用户
    CREATE DATABASE mydatabase OWNER myuser;
    
    -- (可选)如果你希望该用户能在此数据库中进行所有操作,可以授予全部权限
    GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
    
  4. 退出 psql:
    \q
    

🔧 第三步:配置客户端认证(可选,但关键)

pg_hba.conf 文件决定了谁、以何种方式可以连接到数据库。它位于 /etc/postgresql/<版本号>/main/ 目录下。你可以使用 psql --version 查看你的 PostgreSQL 版本,或者通过 ls /etc/postgresql/ 来确认目录名。

  1. 编辑认证文件:
    sudo nano /etc/postgresql/<版本号>/main/pg_hba.conf
    
  2. 了解默认规则:
    在文件末尾附近,你通常会看到类似下面的规则。peer 表示本地连接依赖系统用户名,md5 或 scram-sha-256 表示需要密码。
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    local   all             all                                     peer
    host    all             all             127.0.0.1/32            scram-sha-256
    host    all             all             ::1/128                 scram-sha-256
    
    解释:这意味着通过 Unix socket 的本地连接(local)使用 peer 认证,而通过 TCP/IP 的本地连接(host ... 127.0.0.1/32)需要密码。
  3. 根据你的需求修改:
    • 场景一:希望 myuser 通过密码在本地连接:确保 host all all 127.0.0.1/32 scram-sha-256 这行规则存在即可,无需额外修改。
    • 场景二:允许所有 IP 远程连接(请谨慎评估安全风险):可以添加一行规则。
      host    all             all             0.0.0.0/0               scram-sha-256
      
    • 场景三:简化本地连接(仅限测试环境):如果你在本地开发,不想每次输入密码,可以将 local 行的 peer 改为 trust。警告:这会允许任何本地系统用户无密码连接数据库。
      local   all             all                                     trust
      
  4. 重新加载配置:
    修改完成后,需要通知 PostgreSQL 重新读取配置,而无需重启服务。
    sudo systemctl reload postgresql
    

🌐 第四步:(可选)允许远程访问

如果你需要从其他机器连接此数据库,除了修改 pg_hba.conf 外,还需要让 PostgreSQL 监听外部网络接口。

  1. 编辑主配置文件:
    sudo nano /etc/postgresql/<版本号>/main/postgresql.conf
    
  2. 修改监听地址:
    找到 #listen_addresses = 'localhost' 这一行,将其修改为:
    listen_addresses = '*'
    
    注意:这会监听所有网络接口。在生产环境中,建议将其设置为服务器具体的 IP 地址以提高安全性。
  3. 重启服务使配置生效:
    sudo systemctl restart postgresql
    
  4. 配置防火墙(如果启用了 ufw):
    允许 PostgreSQL 的默认端口 5432 的流量通过。
    sudo ufw allow 5432/tcp
    

✅ 第五步:测试连接

配置完成后,进行连接测试是验证一切是否正常的关键一步。

  • 从本地连接(使用密码认证):
    使用 -h 参数指定通过 TCP/IP 连接,这会触发密码认证。

    psql -h localhost -U myuser -d mydatabase
    

    系统会提示你输入 myuser 的密码,输入正确后即可进入 mydatabase 的命令行。

  • 从远程机器连接:
    在任何安装了 postgresql-client 的机器上,将 localhost 替换为服务器的 IP 地址。

    psql -h 你的服务器IP -U myuser -d mydatabase
    

如果在连接过程中遇到问题,可以首先检查 PostgreSQL 服务的运行状态 (sudo systemctl status postgresql) 以及 /var/log/postgresql/ 目录下的日志文件以获取详细的错误信息。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。