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

Rails 6新建应用PostgreSQL数据库Peer认证失败求助

PostgreSQL Peer认证失败的解决思路

1. 调整PostgreSQL认证规则

Ubuntu下PostgreSQL的认证配置文件默认路径为/etc/postgresql/<你的PG版本>/main/pg_hba.conf。找到本地连接规则(local开头的行):

  • 若当前规则为local all all peer,Peer认证要求系统用户名与数据库用户名完全一致。执行id lmt检查系统是否存在lmt用户,不存在则用sudo useradd lmt创建。
  • 或者将认证方式改为md5(需密码)或trust(本地开发无密码):
    local   all             all                                     md5
    
    修改后重启服务:sudo systemctl restart postgresql

2. 强制使用TCP连接绕开Peer认证

在database.yml的development/test块中添加host: localhost,强制PostgreSQL使用TCP连接而非socket Peer认证:

development:
  <<: *default
  database: lmt_development
  username: lmt
  host: localhost
  password: <你的lmt用户密码> # 若用md5认证需填写

3. 验证数据库用户有效性

确认lmt用户存在且权限正确:

# 检查用户是否存在
sudo -u postgres psql -c "SELECT usename FROM pg_user WHERE usename='lmt';"
# 重新授予数据库权限
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE lmt_development TO lmt;"

4. 对比其他应用的配置差异

既然之前其他应用无问题,对比两个应用的database.yml,检查是否有隐藏配置差异(如host、password字段),同时确认是否使用同一PostgreSQL实例,是否有自定义认证规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:19:51