在生产模式下获取“拒绝用户’root’@’localhost’(使用密码:NO)”并且没有记录错误

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

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

我的database.yml文件肯定有一个密码,这是正确的。

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

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

此外,为了它的价值,我在Apache上运行Passenger。

更新:这是我的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’运行。

现在真的很困惑。

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

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

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

感谢您抽出宝贵时间尝试解决这个问题!

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

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

 ENV["RAILS_ENV"] = "production" 

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

我有同样的问题,并意识到我没有重新启动我的rails服务器。 试一试。

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