YOSHINO日記

プログラミングに関すること

Rails on Ubuntu: MySQLのアクセスエラーと戦う

MySQL5.7のrootパスワード再設定

rootのパスワードはランダムに設定されるようなので、こちらを参考に変更する。

Reset MySQL root password on Linux

パスワード無しにしたいのだけれど。。。

うっかり、mysql_secure_installationを利用した設定で、

MySQL5.7のvalidate_passwordとかいうクソ機能殺す - 動かざることバグの如し

片っ端から「y」でいくぞい!

とか張り切っていくとすごくはまる。

validate_passwordの設定されている可能性が高いです。

しかも、一度設定してしまうと、その後、mysql_secure_installationコマンドをつかっても、 聞かれなくなるという。。。

validate_passwordの設定を削除する。

パスワード無しで設定する!!

あとはこの記事に紹介されているような感じでいけると思います。

Railsでmysqlにパスワードなしでアクセスできるように変更する

sudo mysql -u root <= なんでsudo必要??

ユーザーを新しく作成して、権限を与えて、そのユーザーの設定をRailsの設定ファイルに書いてやるとうまくいくけど、 rootでやると依然としてうまく行きませんでした。

全てのユーザーに実行権限を与えているのに、`sudo mysql -u root`としなくては、rootではmysqlにログインできなかったので、 ここが原因かもとおもいつつ、ここあたりで結構はまりました。

mysql - ERROR 1698 (28000): Access denied for user 'root'@'localhost' - Stack Overflow

上記の記事に答えが書いてあって、

The reason is that recent Ubuntu installation (maybe others also), mysql is using by default the UNIX auth_socket plugin.

らしい。どうやら、Ubuntu特有の初期設定らしい。うーむ。 てなわけで、以下でうまく行くようになりました。

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;