4

我部署了我的 Rails 应用程序,并且在所有页面上都出现 500 错误。我的 production.log 没有显示任何内容(这是一个问题),但我做了一个“脚本/控制台生产”并尝试运行一个简单的查询(User.find :first),它抛出了这个:

Access denied for user 'root'@'localhost' (using password: NO)

我的 database.yml 文件肯定有密码,而且是正确的。

所以,加上没有错误记录到我的 production.log 文件中,这让我想知道发生了什么。

任何想法我会开始寻找或问题可能是什么?

另外,为了它的价值,我在 Apache 上运行乘客。

更新:这是我的 database.yml 文件内容

development:
  adapter: mysql
  encoding: utf8
  database: website_development
  username: root
  password: secretz
  socket: /tmp/mysql.sock

test:
  adapter: mysql
  encoding: utf8
  database: website_test
  username: root
  password: secretz
  socket: /tmp/mysql.sock

production:
  adapter: mysql
  encoding: utf8
  database: website_production
  username: ttp_mysql
  password: secretz
  socket: /var/run/mysqld/mysqld.sock

新更新:我更改了 mysql 用户,因此它没有在 root 中运行,但现在我仍然收到“'root'@'localhost' 的访问被拒绝”位......即使在生产模式下也不应该完全以“root”身份运行。

现在真的很迷茫。

4

4 回答 4

5

所以我发现了这个问题。我在 /models 文件夹中添加了一些文件,用于从旧数据库进行一些数据库迁移。

在这些文件中,我有“ActiveRecord::Base.establish_connection”来连接到数据库,并且不知何故,这些文件覆盖了我的 database.yml 文件中的内容(即使我没有直接调用这些文件)。

无论哪种方式...删除那些解决了问题。

感谢您花时间尝试解决这个问题!

于 2009-11-09T02:18:14.413 回答
4

它正在尝试使用该root帐户的事实以及您在production.log文件中看不到任何内容的事实似乎表明该应用程序未在生产模式下运行。

要轻松检查这是否正确,请尝试将以下行添加到 environment.rb 文件(靠近顶部),重新启动应用程序,然后查看是否仍然出现相同的错误:

ENV["RAILS_ENV"] = "production" 

注意:由于显而易见的原因,这不是一个好的做法,所以即使这样可行,我建议找出根本原因并从文件中删除这一行。但是,当您在生产服务器上看到问题时,我希望这个答案至少能让您(恢复)并运行,同时您继续诊断为什么它首先没有在生产模式下运行。

于 2009-11-08T23:04:05.070 回答
2

我遇到了同样的问题,并意识到我没有重新启动我的 Rails 服务器。试试看。

于 2012-12-12T16:09:02.133 回答
1

我也有同样的问题。我关闭了所有终端并重新启动了服务器。它工作正常!

于 2013-04-18T14:45:20.670 回答