簡體   English   中英

rails db:migrate rails已中止! Mysql2 :: Error:用戶'root'@'localhost'的訪問被拒絕(使用密碼:是)

[英]rails db:migrate rails aborted! Mysql2::Error: Access denied for user 'root'@'localhost' (using password: YES)

我正在運行此遷移:

class CreateAdmins < ActiveRecord::Migration[5.1]
  def change
    create_table :admins do |t|

      t.string "first_name" :limit => 30
      t.string "last name", :limit => 30
      t.string "email", :default => '', :null => false
      t.string "password" ,:limit => 40
      t.timestamps

    end
  end

  def down
    drop_table :admins
  end
end

我收到一條錯誤消息:

rails db:migrate rails已中止! Mysql2 :: Error:用戶'root'@'localhost'的訪問被拒絕(使用密碼:是)

您應該在配置目錄中更新database.yml文件。 該錯誤是由mysql對您的root用戶響應的身份驗證錯誤引起的。 您可能想查看http://edgeguides.rubyonrails.org/configuring.html#configuring-a-database以獲得有關database.yml語法的信息。

您還可以通過運行mysql -u root -p並嘗試輸入密碼來檢查和驗證Shell中的登錄。

首先,這是正確的遷移代碼:

class CreateAdmins < ActiveRecord::Migration[5.1]
  def self.up
    create_table :admins do |t|
      t.string :first_name, limit: 30
      t.string :last_name, limit: 30
      t.string :email, default: '', null: false
      t.string :password ,limit: 40

      t.timestamps
    end
  end

  def self.down
    drop_table :admins
  end
end

或只是改變 差異

class CreateAdmins < ActiveRecord::Migration[5.1]
  def change
    create_table :admins do |t|
      t.string :first_name, limit: 30
      t.string :last_name, limit: 30
      t.string :email, default: '', null: false
      t.string :password ,limit: 40

      t.timestamps
    end
  end
end

關於錯誤,用於開發環境的database.yml應該如下所示:

development:
  adapter: mysql2
  encoding: utf8
  database: your_db_name
  username: your_user
  password: your_password
  host: 127.0.0.1
  port: 3306

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM