Ruby on Rails新建应用启动时PostgreSQL数据库连接错误求助
Rails PostgreSQL数据库连接错误排查方案
以下是针对你遇到的ActiveRecord::DatabaseConnectionError的具体排查步骤:
1. 确认数据库用户与权限
- 登录PostgreSQL超级用户控制台:
sudo -u postgres psql - 执行命令检查用户是否存在:
确保你在SELECT usename FROM pg_user;database.yml中填写的用户名出现在结果里 - 给用户授予目标数据库的连接权限:
GRANT CONNECT ON DATABASE blog_development TO YOUR_ACTUAL_USERNAME;
2. 直接测试用户密码有效性
用PostgreSQL客户端直接测试连接,排除Rails层面的问题:
psql -U YOUR_ACTUAL_USERNAME -d blog_development -h localhost
输入你设置的密码,如果无法连接,说明用户密码或用户配置本身有问题;如果能连接,再排查Rails配置。
3. 修正database.yml配置细节
- 确保
default块中的username和password已经替换为实际的用户名和密码,不是占位符USERNAME和PASSWORD - 取消
development块中host: localhost的注释(部分系统默认使用socket连接,密码验证规则不同):development: <<: *default database: blog_development host: localhost - 确认
blog_development数据库已创建,若未创建执行:createdb blog_development
4. 检查PostgreSQL认证配置(pg_hba.conf)
- 找到pg_hba.conf文件位置(不同系统路径不同,示例:macOS为
/usr/local/var/postgres/pg_hba.conf,Ubuntu为/var/lib/postgresql/[版本号]/main/pg_hba.conf) - 修改本地IP连接的认证方式为
md5或scram-sha-256(替换原来的peer或ident):host all all 127.0.0.1/32 md5 host all all ::1/128 md5 - 重启PostgreSQL服务使配置生效:
# macOS(Homebrew) brew services restart postgresql # Ubuntu/Debian sudo systemctl restart postgresql
内容的提问来源于stack exchange,提问作者Pooja M
相关产品推荐
相关产品推荐

