Ruby Rails:用户'root'@'localhost'拒绝访问(使用密码:YES)

时间:2016-06-05 08:32:56

标签: mysql ruby-on-rails ruby ruby-on-rails-3

我已经阅读了与此类似的其他问题。我觉得我的情况不同,可以再次提出额外的问题。

我有一个Ruby on Rails应用程序的所有设置。之前我已经设置了其他rails项目,所以我对做rails很熟悉。我对此错误的具体问题:
用户'root'@'localhost'拒绝访问(使用密码:是)

这是我的database.yml文件

default: &default
  adapter: mysql2
  host: localhost
  username: cmsapp
  password: <%= ENV['CMSAPP_PASSWORD'] %>     <-- this line is not working
  port: 3306
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: cms_dev
  socket: /var/run/mysqld/mysqld.sock 

production:
  <<: *default
  database: cms_prod

我遇到的问题是:在我看来,密码没有被解析或从ENV ['CMSAPP_PASSWORD']环境变量中提取。我在mysql db上有双/三检查密码。如果我把文字密码放在密码:line,(我不应该这样做)它确实连接。所以我知道密码是在mysql中正确设置的。

此行上的Ruby错误:

connect user, pass, host, port, database, socket, flags

在页面底部的控制台中,我键入pass以查看变量中的内容,然后我得到“&lt;%= ENV [CMSAPP_PASSWORD]%&gt;”。如果我只输入'ENV [CMSAPP_PASSWORD]',我会得到正确的密码。所以我知道正确的密码在那里,但我相信它发送文字“&lt;%= ENV [CMSAPP_PASSWORD]%&gt;”。因此,即使正确的密码在环境变量中,我仍然会收到错误:访问被拒绝用户'root'@'localhost'(使用密码:是)

如何解决天气问题,从环境变量中正确提取密码?或者如何弄清楚它为什么不读取环境变量?

更新2016-06-09
我已经切换回原来的mysql gem并且所有工作都应该如此。我不建议任何人使用mysql2 gem。它没有database.yml文件使用环境变量。这是一个安全问题。我不会使用mysql2 gem,直到它可以正确拉出环境变量。

感谢您的帮助。

0 个答案:

没有答案