Rails:为什么 Rake 需要 Mysql root 用户?

Rails: Why does Rake require the Mysql root user?

当我尝试 运行 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 用户? (对我来说似乎违反了安全逻辑。)这里最好的解决方案是什么?

您需要将环境设置为生产环境。

即:

bundle exec rake db:create RAILS_ENV=production

以上答案在我的案例中不起作用,这个问题真的很笼统,所以我添加我的案例,此外,如果您不知道自己在做什么,运行 反对生产可能真的很危险。 ...小心处理。

相反,我为解决此问题所做的只是更新

config/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 上的根路径 rails 项目)

希望对您有所帮助!

我 运行 进入这个问题,对我来说正是这个 (facepalm) 我完全忘记了我的配置文件 :P

另一种选择是使用

  username: <%= Settings.db.default.username %>
  password: <%= Settings.db.default.password %>

所以请记住,您需要将这些值设置为 OS 变量