我已经阅读了与此类似的其他问题。我觉得我的情况不同,可以再次提出额外的问题。
我有一个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,直到它可以正确拉出环境变量。
感谢您的帮助。