2016年5月17日火曜日

【Rails4.2.5】Mysql2::Error: Access denied for user

  • 公開日:2016年05月17日

記事概要

rake db:create失敗時に発生するMysql2::Error: Access denied for userの修正方法

環境

  • rbenv
  • bundler
  • rails 4.2.5
  • ruby 2.3.0

はじめに

Mysql2::Error: Access denied for userは、Railsでプロジェクトを開発するたびに、毎回やらかしてしまうエラーです。
なので、修正方法を記載しておきます。

Mysql2::Error: Access denied for user

rake db:createの実行時によく発生するエラーです。
原因は、databaseに既にユーザーが存在しているからです。

修正方法

mysqlのユーザー情報を調査して、ユーザーが存在すれば削除、もしくはdatabaseを作成するユーザーを新規追加します。

ユーザー情報は、以下のコマンドで調査します。

mysql

mysql> SELECT USER FROM mysql.user;

既にユーザーが存在している場合は、ユーザーを削除してからrake db:createを実行します。
もう一つの方法として、database.ymlのusernameにmysql.userに存在しないユーザー名を指定することで、対応できます。

{project_folder}/config/database.yml

staging:
  <<: *default
  username: db_staging ← mysql.userに存在しないユーザー名
  password: db_staging
  database: db_staging

個人的には、後者の対応方法をお勧めします。

まとめ

Railsのdb:createやdb:migrateは癖の強いコマンドです。
プロジェクトではドキュメントを残しておくことをお勧めします。

以上。

PICK UP オススメ書籍

運営サイト(railsで作成しています)

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...