我在使用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。
答案 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