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

为何Rails应用无法通过PostgreSQL数据库完成认证?附rails s启动报错

嘿,我来帮你搞定Rails启动时PostgreSQL认证失败的问题!这种情况我碰到好多次了,大多是数据库配置、用户权限或者服务状态的问题,咱们一步步来排查解决:

第一步:检查Rails的数据库配置文件

首先打开项目里的 config/database.yml 文件,仔细核对development(或者你当前使用的环境)下的配置项:

development:
  adapter: postgresql
  encoding: unicode
  database: your_app_name_development
  username: your_postgres_username
  password: your_postgres_password
  host: localhost
  port: 5432

重点确认 username 和 password 是不是和你PostgreSQL里的用户信息完全匹配,别打错字或者大小写搞错了(PostgreSQL用户名默认是小写的哦)。

第二步:验证PostgreSQL用户的有效性

打开终端,直接用PostgreSQL的命令尝试登录,看看能不能连上:

psql -U your_postgres_username -d your_app_name_development

如果登录失败,那大概率是用户不存在或者密码不对:

  • 要是用户不存在,创建一个超级用户(方便Rails操作数据库):
    createuser -s -r your_postgres_username
    
  • 要是密码不对,进入PostgreSQL控制台重置密码:
    先登录默认的postgres用户:
    psql -U postgres
    
    然后执行修改密码的命令:
    ALTER USER your_postgres_username WITH PASSWORD 'your_new_password';
    
    改完记得把 database.yml 里的密码也同步更新。
第三步:确保PostgreSQL服务正在运行

有时候服务没启动也会导致认证失败,不同系统的启动命令不一样:

  • Mac(用Homebrew安装的):
    brew services start postgresql
    
  • Ubuntu/Debian:
    sudo systemctl start postgresql
    
  • Windows:打开「服务」面板,找到PostgreSQL服务,右键点击「启动」。
第四步:检查PostgreSQL的认证策略

如果上面几步都没问题,可能是PostgreSQL的认证方式限制了连接。找到你的PostgreSQL配置目录下的 pg_hba.conf 文件:

  • Mac:/usr/local/var/postgres/pg_hba.conf
  • Linux:/var/lib/postgresql/[你的PostgreSQL版本]/main/pg_hba.conf
  • Windows:C:\Program Files\PostgreSQL\[版本]\data\pg_hba.conf

打开文件后,找到针对localhost的配置行,把认证方式改成 scram-sha-256 或者 md5(这两种是需要密码认证的方式):

host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             ::1/128                 scram-sha-256

修改完之后,一定要重启PostgreSQL服务让配置生效。

最后一步:创建数据库(如果还没创建的话)

有时候数据库本身还没创建,也会触发类似认证失败的报错,执行下面的命令创建数据库:

rails db:create

做完这些步骤,再重新运行 rails s 试试,应该就能正常启动了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:46:13