You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04.1上PostgreSQL 14.8登录异常:无法进入psql CLI

解决PostgreSQL连接及权限问题

1. 临时绕过目录权限直接进入psql

执行命令时指定postgres用户的登录环境,避免尝试访问你的个人家目录:

sudo -u postgres -i psql

-i参数会模拟postgres用户的登录状态,自动进入其系统家目录(通常是/var/lib/postgresql),直接避开权限拒绝的问题。

2. 修复peer认证失效问题

如果上述命令仍要求输入密码,说明pg_hba.conf的配置未生效或被其他规则覆盖:

  • 打开pg_hba.conf配置文件(替换<版本号>为实际安装的PostgreSQL版本,比如14、15):
    sudo nano /etc/postgresql/<版本号>/main/pg_hba.conf
    
  • 确保针对postgres用户的本地连接规则为peer认证:
    找到如下行,确认认证方式是peer而非md5或scram-sha-256:
    local   all             postgres                                peer
    
  • 重启PostgreSQL服务使配置生效:
    sudo systemctl restart postgresql
    
    重启后执行sudo -u postgres psql即可直接进入psql。

3. 创建带密码的用户与数据库

进入psql CLI后,执行以下SQL命令:

  • 创建带密码的用户(替换your_user和your_password为自定义内容):
    CREATE USER your_user WITH PASSWORD 'your_password';
    
  • 创建数据库并指定所有者:
    CREATE DATABASE your_db OWNER your_user;
    
  • 授予用户数据库全部权限(可选):
    GRANT ALL PRIVILEGES ON DATABASE your_db TO your_user;
    

4. 目录权限拒绝的原因说明

Could not change directory to "/home/roland": Permission denied的本质是:

  • 使用sudo -u postgres切换用户后,psql默认会尝试进入当前终端的工作目录(即你的个人家目录/home/roland)。
  • postgres作为系统专用用户,没有访问普通用户家目录的权限,因此触发权限拒绝错误。
  • 用-i参数切换到postgres的登录环境,会自动进入其有权限访问的系统家目录,从而解决该问题。

内容的提问来源于stack exchange,提问作者Roland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:12:48