Rails集成PostgreSQL启动服务器失败:无密码提供错误求助
解决PostgreSQL连接错误:fe_sendauth: no password supplied
这个错误的核心原因是PostgreSQL要求身份认证,但你的数据库配置未提供有效用户名/密码,或者数据库的认证规则不允许无密码连接。以下是具体解决步骤:
1. 修正database.yml配置
你的development环境配置缺少用户名和密码项,PostgreSQL默认管理员用户为postgres,若你专门创建了scafold用户则使用该用户名。修改后的配置示例如下:
default: &default adapter: postgresql encoding: unicode pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default database: scafold_development username: postgres # 或你创建的scafold用户 password: 你的数据库用户密码 # 填写对应用户的密码 test: <<: *default database: scafold_test username: scafold password: 你的scafold用户密码 # 此处之前为空,需补充有效密码 production: <<: *default database: scafold_production username: scafold password: <%= ENV["SCAFOLD_DATABASE_PASSWORD"] %>
2. 调整PostgreSQL认证配置(pg_hba.conf)
若修改配置后仍报错,需检查PostgreSQL的pg_hba.conf文件:
- 找到文件位置:
- Ubuntu/Debian:
/etc/postgresql/[你的PostgreSQL版本]/main/pg_hba.conf - Mac(Homebrew安装):
/usr/local/var/postgres/pg_hba.conf - Windows:
C:\Program Files\PostgreSQL\[版本]\data\pg_hba.conf
- Ubuntu/Debian:
- 定位IPv6本地连接的规则行(对应错误中的
::1):
开发环境可临时改为host all all ::1/128 md5trust允许无密码连接(生产环境禁止此操作):host all all ::1/128 trust - 修改后重启PostgreSQL服务:
- Ubuntu:
sudo systemctl restart postgresql - Mac:
brew services restart postgresql - Windows:在系统服务列表中重启PostgreSQL服务
- Ubuntu:
3. 确认目标数据库已创建
最后运行命令确保开发/测试数据库已生成:
rails db:create
内容的提问来源于stack exchange,提问作者evan clevenger
相关产品推荐
相关产品推荐

