Rails没有使用database.yml中提供的密码

时间:2013-06-28 06:43:11

标签: mysql ruby-on-rails ruby

我在使用rails应用程序连接到数据库时遇到问题。

我提供了带有凭据的database.yml文件:

development: &development
  adapter: mysql2
  encoding: utf8
  database: myapp_dev
  pool: 5
  username: root
  password: passoword

test:
  <<: *development
  database: myapp_test

production:
  <<: *development
  database: myapp_prod

staging:
  <<: *development
  database: myapp_staging

但是当我尝试运行应用程序时,它会给我以下错误:

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

使用具有相同凭据的mysql -u root -p我可以毫无问题地访问我的数据库。谁能告诉我这里有什么问题?

修改

我已经将用户从root更改为其他用户,但它仍然给我同样的错误。显然它使用一些其他凭据连接到db。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。事实证明,我的database.yml文件中存在错误。这是我的database.yml文件的样子:

production:
  adapter: mysql2
  encoding: utf8
  database: my_db
  username: my_db_user
  password: !strong_password
  host: localhost
  port: 3306
  pool: 5
  timeout: 5000

密码开头的!字符无效YAML标记(至少是我试图实现的目标)。在密码周围包装引号('')可以解决问题。这是更新的database.yml文件:

 production:
      adapter: mysql2
      encoding: utf8
      database: my_db
      username: my_db_user
      password: '!strong_password'
      host: localhost
      port: 3306
      pool: 5
      timeout: 5000

答案 1 :(得分:0)

尝试以下代码,如果有效,我们可以继续前进 在database.yml中注释所有以前的代码并粘贴以下内容

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: myapp_dev
  pool: 5
  username: root
  password: passoword
  host: localhost