【问题标题】:Rails mysql Access denied for user 'root'@'localhost' (using password: NO) errorRails mysql Access denied for user 'root'@'localhost' (using password: NO) 错误
【发布时间】:2021-08-28 16:14:27
【问题描述】:

我知道有很多与这个问题相关的问题和答案,但就我所尝试的一切而言,它对我不起作用。当我运行诸如 bin/rake recognize:init 甚至 rake db:preparerake db:create 之类的 rake 任务时,我收到以下错误消息:

错误日志

mac@MacBook-Pro-2 recognize-develop % bin/rake recognize:init
Please require the stackprof gem falling back to fast_stack
Access denied for user 'root'@'localhost' (using password: NO)
Couldn't drop database 'database_name'
rake aborted!
Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: NO)
/Users/mac/Downloads/recognize-develop/lib/tasks/recognize.rake:233:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)

/Users/mac/Downloads/recognize-develop/lib/tasks/recognize.rake:233

desc "Initialize Recognize. To be run from fresh install."
  task :init => :environment do
    prevent_production!
    ENV['DISABLE_DATABASE_ENVIRONMENT_CHECK'] = "1"

    Rake::Task['tmp:clear'].invoke
    Rake::Task['db:drop'].invoke # This is LINE 233. It doesn;t go beyond this.
    Rake::Task['db:create'].invoke
    Rake::Task['db:migrate'].invoke

    load "#{Rails.root.to_s}/db/schema.rb" # dont load schema b/c there is some issue with mysql index lengths when done this way
    Rails.application.load_seed

  end

database.yml 文件

defaults: &defaults
  adapter: mysql2
  username: <%= ENV['DATABASE_MYSQL_USERNAME'] || 'root' %>
  password: <%= ENV['DATABASE_MYSQL_PASSWORD'] || '' %>
  encoding: utf8mb4
  collation: utf8mb4_unicode_ci
  port: 3306
  host: <%= ENV['DATABASE_MYSQL_HOST'] || '127.0.0.1' %>
  variables:
    sql_mode: TRADITIONAL  


development:
  <<: *defaults
  database: <%= ENV['DATABASE_MYSQL_DATABASE'] || 'database_name' %>

Ruby 版本 ruby 2.7.2p137

Rails 版本 Rails 6.0.3.7

我什么都试过了。我可以在终端中与我的 MySQL 通信并运行查询,但我在使用 MySQL 的这个应用程序时遇到错误。我该怎么办?

【问题讨论】:

    标签: mysql ruby-on-rails ruby


    【解决方案1】:

    也许您应该在数据库中创建一个具有足够权限的用户,以便在您的应用程序中使用它,而不是使用 root。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 2021-09-08
      • 2018-08-17
      • 2022-12-01
      • 2018-10-22
      • 1970-01-01
      • 2016-09-28
      相关资源
      最近更新 更多