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

Rails+PostgreSQL无法创建数据库问题求助

解决Rails 5连接PostgreSQL时的"Peer authentication failed for user 'postgres'"错误

这个问题很常见,原因是PostgreSQL默认对本地连接采用Peer认证——它会检查你的操作系统用户名和PostgreSQL用户名是否一致,而你当前用的操作系统用户(看起来是indu)和PostgreSQL里的postgres用户不同名,所以认证失败。即使你在database.yml里填了密码,Peer认证也不会用密码来验证。

下面给你两种可行的解决方案,选一种适合你的就行:

方案一:修改PostgreSQL的认证方式(匹配你现有的database.yml配置)

这个方法不需要改database.yml,直接调整PostgreSQL的认证规则:

  1. 找到PostgreSQL的配置文件pg_hba.conf:
    • 如果你用的是Ubuntu/Debian系统,路径通常是/etc/postgresql/你的PostgreSQL版本/main/pg_hba.conf(比如/etc/postgresql/10/main/pg_hba.conf)
    • 如果你用Homebrew安装的PostgreSQL(macOS),路径是/usr/local/var/postgres/pg_hba.conf(Apple Silicon的Mac是/opt/homebrew/var/postgres/pg_hba.conf)
  2. 打开这个文件,找到开头类似这样的行:
    local   all             postgres                                peer
    
    把peer改成md5,变成:
    local   all             postgres                                md5
    
  3. 保存文件后,重启PostgreSQL服务:
    • Ubuntu/Debian:sudo systemctl restart postgresql
    • macOS(Homebrew):brew services restart postgresql
  4. 现在再执行rails db:create,应该就能成功创建数据库了。

方案二:创建和操作系统用户同名的PostgreSQL用户(更符合PostgreSQL的默认推荐)

如果你不想修改PostgreSQL的全局配置,可以创建一个和你当前操作系统用户(indu)同名的PostgreSQL用户:

  1. 打开终端,切换到PostgreSQL的默认管理员用户:
    sudo -u postgres psql
    
  2. 在PostgreSQL命令行里创建用户(替换密码为你想设置的):
    CREATE USER indu WITH PASSWORD 'mypassword';
    
  3. 给这个用户赋予创建数据库的权限(因为Rails需要创建开发和测试数据库):
    ALTER USER indu CREATEDB;
    
  4. 输入\q退出PostgreSQL命令行。
  5. 修改你的database.yml,把username改成indu:
    default: &default
      adapter: postgresql
      encoding: unicode
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
    development:
      <<: *default
      database: myapp_development
      username: indu
      password: mypassword
    test:
      <<: *default
      database: myapp_test
      username: indu
      password: mypassword
    
  6. 执行rails db:create,就能正常创建数据库了。

两种方法都能解决你的问题,选哪个看你的偏好~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:57:10