MySQL5.6サーバーに接続時、ERROR 1045 (28000)が発生した際の対処方法

テクノロジー
スポンサーリンク

タイトル通りです。

MySQL5.6サーバーに接続時、ERROR 1045 (28000)が発生した際の対処方法をご紹介します。

エラー詳細

前提

  1. rootにパスワードを設定していたかどうか定かでない。
  2. 作業環境はAWS Cloud9。

エラーメッセージ

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

エラー発生時の実行コマンド

$ mysql -u root

解決方法

概要

  1. MySQLサーバーをユーザーの権限テーブルをスキップするオプションにてセーフモードで起動。
  2. rootでログイン出来るようにするため自身のパスワードを再設定。
  3. MySQLに接続し直し、権限テーブルを更新。

流れ

以降の1から順に記述してあるコマンドを実行していく想定です。

1. MySQLのpidファイル削除

# kill `cat /var/run/mysqld/mysqld.pid`

2. MySQLサーバーをセーフモードで起動

# mysqld_safe --skip-grant-tables &

権限テーブルを参照しないようにします。
これにより本来必要なはずの認証をスキップすることができ、アクセス出来ていなかったrootでアクセス出来るようになります。

3. rootのパスワードを任意のものに変更

# mysql -u root
mysql> UPDATE user SET Password=PASSWORD('root') WHERE User='root';
mysql> quit;

4. MySQLサーバー再起動

$ sudo service mysqld restart
# mysql -u root -p

MySQLサーバー接続時のrootパスワードは変更したものを指定します(上記例だと root )。

5. 権限テーブルを更新

mysql> update mysql.user set password=password('') where user='root' and host='localhost';
mysql> flush privileges;

エラー発生時に実行していたコマンド、 $ mysql -u root にてMySQLサーバーに接続出来るようにするためパスワードなしでログイン出来るように変更します。

最後に、権限の変更を反映させるため flush privileges を実行し手順完了となります。

お役にたちましたら幸いです。