背景
vagrantにmysqlをインストールしたのですが、rootのパスワードを空でインストールしてしまいました。
mysql -uroot -p
すると上記コマンドを打って、求められたパスワードを空にして実行しても
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
ぐぬぬ…。
環境
mysql:5.7.22
ubuntu:16.04.4
対処法①
パスワードを再設定する
auth_socket pluginは、MySQLクライアントを実行したlinuxユーザーを、MySQLのユーザーとして認証しようとするらしい
のでsudo mysql
で入れる
そこでmysqlに入った状態で下記を実施
mysql> use mysql
mysql> update user set authentication_string=PASSWORD("ここにパスワードを記述") where User='root';
mysql> flush privileges;
※ 以前はpasswordというカラムだったが5.7以降はauthentication_stringというカラム名になっている
対処法②
再インストールする
ただし単にアンインストール→インストールしても状況は変わりません。
なぜか。
パスワードが格納されているDBが残っているからです。
ので、削除して問題なければ消しちゃいましょう。
sudo rm -rf /var/lib/mysql/
消してインストールし直せばOKです
参考
Ubuntu16.04にaptでMySQL5.7を入れる時にrootを空パスワードにするとどうなるか
https://qiita.com/mwatanabe@github/items/7e9a40d31bc27ab9d901
MySQL 5.7.6でroot用パスワードが変わらなくて困った話
https://qiita.com/gatchan0807/items/7323a5d2dd365308cb94