当我在我的CMD中键入rails服务器时,服务器正常工作,我可以转到localhost:3000。 但是我在CMD中获得了这个消息,并且在错误部分的localhost:3000上的浏览器中显示了相同的消息。
Started GET "/rails/info/properties" for 127.0.0.1 at 2010-12-02 21:14:55 +0200
Mysql2::Error (Access denied for user 'root'@'localhost' (using password: NO)):
Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatc
h/middleware/templates/rescues/_trace.erb (1.0ms)
Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatc
h/middleware/templates/rescues/_request_and_response.erb (30.0ms)
Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatc
h/middleware/templates/rescues/diagnostics.erb within rescues/layout (97.0ms)
问题是什么?
这是database.yml文件:
#MySQL。版本4.1和5.0是 推荐的。 # #安装MySQL驱动程序: #gem install mysql2 # #并确保使用新式密码哈希: #http://dev.mysql.com/doc/refman/5.0/en/old-client.html 发展: 适配器:mysql2 编码:utf8 重新连接:false database:simple_cms_development 游泳池:5 用户名:root 密码: 主持人:localhost
# Warning: The database defined as "test" will be erased and # re-generated from your development database when you run
“耙”。 #不要将此db设置为与开发或生产相同。 测试: 适配器:mysql2 编码:utf8 重新连接:false database:simple_cms_test 游泳池:5 用户名:root 密码: 主持人:localhost
production: adapter: mysql2 encoding: utf8 reconnect: false database: simple_cms_production pool: 5 username: root password:passwordex host: localhost
答案 0 :(得分:3)
我知道你已经找到了问题的解决方案,但我会发布这个作为答案,对于那些可能会遇到同样问题的人。
具有完全相同的Access denied for user 'user'@'localhost' (using password: NO)
问题,结果发现我的database.yml
文件格式错误。原因? YAML不允许某些字符:我碰巧使用了'!'在我的密码中,无论出于何种原因,读取此database.yml
文件的YAML解析器忽略了我的密码行,就像它不存在一样,因此(using password: NO)
,即使我明确声明了它。
解决方案?更改了我的密码,不包括任何YAML特殊字符。不过,我想可能有办法逃脱它。尽管很恼火。
答案 1 :(得分:1)
您正在为您的mysql用户使用root,但不在config / database.yml中提供root密码。
顺便提一下,虽然它通常可以开发,但在生产中使用root mysql用户或进行分段是一个非常糟糕的想法。
这是一个典型的mysql配置部分:
production:
adapter: mysql
database: app_production
username: root
password: password
pool: 5
timeout: 5000
encoding: utf8