Rails可以在没有用户名和密码的情况下连接到数据库。

3

我正在使用Rails 4开发一个网站。尝试配置生产环境时,我注意到用户名和密码都不需要。在database.yml下有以下配置:


development:
  adapter: postgresql
  encoding: unicode
  database: walko
  username: walko
  password:
  pool: 5
  timeout: 5000

生产环境: 适配器: postgresql 编码: unicode 数据库: <%= ENV['DB_NAME'] %> 用户名: 密码: 连接池: 5 超时时间: 5000

我可以在rails console中实现与生产数据库的迁移和连接。

这是如何实现的呢?

1个回答

12

Rails使用Ruby的Pg宝石,该宝石使用PostgreSQL的libpq客户端库。

如果没有提供用户名,则libpq使用当前系统用户名

如果在pg_hba.conf中使用peerident sameusertrust身份验证,则服务器不需要密码。如果服务器不要求密码,则libpq不会尝试发送密码并且不关心缺少密码。

实际上,您也可以为数据库提供空字符串;如果存在与您的用户名相同的数据库,则libpq将使用该数据库。


它对我起作用了!正如你所说,它使用了我的系统凭据。 - displayer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接