尝试运行RAKE任务时出现以下错误:
rake aborted!
Mysql2::Error: Access denied for user 'root'@'localhost' (using password: YES)
我的database.yml
文件如下所示:
production:
[...]
database: <some_database_name>
username: <a_non_root_user>
password: <password_for_above_non_root_user>
正如您所见,冲突是:
这是否意味着我应该在database.yml
配置中使用root用户? (对我来说似乎违反安全逻辑。)这里最好的解决方案是什么?
答案 0 :(得分:0)
您需要将环境设置为生产。
即:
bundle exec rake db:create RAILS_ENV=production
答案 1 :(得分:-1)
上面的答案在我的情况下没有用,问题是非常通用的,所以加重了我的情况,除了如果你不知道你在做什么,反对生产的事实真的很危险....小心。
相反,我为解决这个问题所做的只是更新
配置/ database.yml的
default: &default
adapter: mysql2
encoding: utf8mb4
charset: utf8mb4
pool: 5
username: root
password: your_password
development:
<<: *default
database: your_database_name
host: <%= Settings.db.default.host %>
port: <%= Settings.db.default.port %>
这样你的bundle / rake任务就会加载这些值而不要在运行时询问它们...还记得你在正确的文件夹路径(ruby on rails项目的根路径)
希望这有帮助!
我遇到了这个问题,对我来说正是这个(facepalm)我完全忘记了我的配置文件:P
另一种选择是使用
username: <%= Settings.db.default.username %>
password: <%= Settings.db.default.password %>
所以请记住,您需要将这些值设置为操作系统变量