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

Ubuntu下PostgreSQL创建数据库遇Peer authentication failed及为角色mark建rates库方法

解决Ubuntu上PostgreSQL Peer身份验证失败问题

这个Peer认证失败的坑在Ubuntu环境下用PostgreSQL真的太常见了,本质是因为Ubuntu默认给本地PostgreSQL连接用的是Peer认证——它要求你的系统用户名和PostgreSQL里的角色名完全一致,而且不需要密码,靠系统用户身份直接验证。如果你的系统用户不是mark,或者想改用密码验证,就会触发这个错误。下面给你两个实用的解决办法:

方法1:通过Postgres超级用户代操作(无需修改配置)

这是最稳妥的方式,不用动任何配置文件:

  • 先切换到系统自带的postgres超级用户:
    sudo su - postgres
    
  • 进入PostgreSQL的命令行交互界面:
    psql
    
  • 如果你还没给mark角色添加登录权限(默认创建的角色可能没有),先执行:
    ALTER ROLE mark WITH LOGIN PASSWORD '你的安全密码';
    
    (如果mark角色还没创建,就用CREATE ROLE mark WITH LOGIN PASSWORD '你的密码';)
  • 然后创建rates数据库并指定所有者为mark:
    CREATE DATABASE rates OWNER mark;
    
  • 退出psql:输入\q回车,再退出postgres用户:exit

之后你就可以用mark角色登录这个数据库了,比如:

psql -U mark -d rates

方法2:修改认证配置,允许密码登录

如果你想直接用mark系统用户(或者任意用户)通过密码连接PostgreSQL,可以修改认证规则:

  1. 先找到pg_hba.conf的准确路径,在终端执行:
    psql -U postgres -c "SHOW hba_file;"
    
    通常Ubuntu上的路径是/etc/postgresql/[你的PostgreSQL版本]/main/pg_hba.conf(比如/etc/postgresql/14/main/pg_hba.conf)
  2. 用sudo编辑这个文件:
    sudo nano /etc/postgresql/14/main/pg_hba.conf
    
  3. 找到文件里类似这样的行:

    local all all peer
    把它改成更安全的scram-sha-256认证(或者旧版的md5,但推荐scram):
    local all all scram-sha-256
    如果你只想给mark角色和rates数据库开权限,可以更精准地写:
    local rates mark scram-sha-256

  4. 保存文件(nano里按Ctrl+O回车,再Ctrl+X退出),然后重启PostgreSQL服务生效:
    sudo systemctl restart postgresql
    
  5. 现在你可以直接用mark角色连接了,比如:
    psql -U mark -d rates
    
    输入你之前给mark设置的密码就行。

额外注意点

  • 如果你的系统里还没有mark这个用户,得先创建:sudo adduser mark,然后切换到这个用户操作会更顺畅。
  • 如果你想让mark能自己创建数据库,记得给它加权限:在psql里执行ALTER ROLE mark CREATEDB;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:55:24