MySQL5.7では__sudoを使用しないとrootユーザーでログインできません__。(これで最初かなりハマりました)
外部公開するサーバーとかでは適切な設定なのですが、vagrantとかで開発環境で利用するには不便です。
そこでsudo無しでもログインできるようにする方法を紹介します。(ubuntu18を前提に記述しています)
インストール直後にする操作
mysql_secure_installationの実行
インストール直後にmysql_secure_installationを実行します。(これしないとパスワード設定できないので)
sudo mysql_secure_installation
VALIDATE PASSWORD PLUGINの無効化
MySQL5.7では簡易なパスワードを設定できなくする__VALIDATE PASSWORD PLUGIN__というものがあるのですが、これも開発環境では面倒なのでOFFにします。
mysql_secure_installationを実行すると下記のように聞かれますのでyとかYes以外の適当な文字を入力してEnterを押します。(下記ではNoを入力してます)
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: No
パスワードの設定
次に聞かれるのがパスワードです。
ここで設定したパスワードがrootユーザーのパスワードになるので覚えておいてください。
Please set the password for root here.
New password:
もう一回入力しろと言われるのでもう一回同じパスワードを入力します。
Re-enter new password:
これ以降の質問は__y__を入力してEnter押していけばとりあえずは大丈夫です。
sudo以外でもrootログインできるようにする
ここからついにrootログインできるように設定していきます。
MySQLにログイン
まずはsudoでログインします
sudo mysql -uroot -p
上記コマンドを入力するとパスワードを求められるので、__パスワードの設定__で設定したパスワードを入力します。
MySQLでの操作
MySQLにログインできたら下記コマンドを実行します。
最後の方の__password__の部分は__パスワードの設定__で設定したパスワードを入力します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
次に設定を反映するコマンドを実行します。
FLUSH PRIVILEGES;
これで完了です。
後は
quite;
でログアウトして
mysql -uroot -p
でsudoなしで設定したパスワードでログインできれば成功です。