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

Ubuntu20.04下PostgreSQL新建用户blog出现Peer认证失败报错如何解决

报错原因
  • 第一个sudo: unknown user: blog报错:你通过CREATE USER创建的是PostgreSQL内部的数据库角色,不属于Linux操作系统的用户体系,sudo -u只能切换系统层面已存在的用户,因此会识别不到blog用户。
  • 第二个Peer authentication failed for user "blog"报错:Ubuntu环境下PostgreSQL默认对本地Unix套接字连接使用peer认证规则,要求发起连接的Linux系统用户名与要登录的PostgreSQL用户名完全一致才允许通过,你当前使用的普通系统账号和PostgreSQL的blog用户名称不匹配,因此认证失败。
解决方案

按需选择以下适配方案即可:

方案1:临时密码登录(无需修改配置)

登录时指定走本地TCP连接,触发密码认证规则,执行以下命令后输入你创建blog用户时设置的密码即可登录:
psql -h 127.0.0.1 -U blog blog

方案2:永久修改本地认证规则(开发环境推荐)

修改PostgreSQL的访问控制配置,将本地默认的peer认证改为密码认证,适配多用户登录需求:

  1. 编辑pg_hba.conf配置文件:
    sudo nano /etc/postgresql/13/main/pg_hba.conf
  2. 找到如下配置行:

local all all peer
将末尾的peer修改为scram-sha-256(PostgreSQL 10+推荐)或md5

  1. 保存退出后重启PostgreSQL服务生效:
    sudo systemctl restart postgresql
  2. 后续即可直接用以下命令登录:
    psql -U blog blog

方案3:Django项目专用适配

如果只需让Django正常连接该数据库,无需修改全局认证规则,直接在Django的settings.py中指定数据库HOST为127.0.0.1即可,参考配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'blog',
        'USER': 'blog',
        'PASSWORD': '你创建blog用户时设置的密码',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:57:04