いろんなサイトを参考に試みたのですが、かなりハマり、最終的にいろんなサイトの情報の組み合わせで、rootパスワード変更に成功したのでメモです。
サーバ、mysqlの情報はこんな感じです。
mysql:ver8.0.11
サーバOS:Red Hat Enterprise Linux Server release 7.5
–skip-grant-tables オプションでログイン
ここは、ほとんどのサイトと同じです。mysqlを一度ストップし、通常とは違う方法でmysqlを起動させます。コマンドは環境によって少し違うかもしれません。
1 2 3 4 5 6 7 | $ sudo service mysqld stop $ sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" $ sudo service mysqld start $ mysql -u root |
一度rootパスワードを空にする
ここで、authentication_stringに直接新しいPWをセットしたかったのですが、何度やってもセットしたパスワードでログインすることができませんでした。
そこで一度、空「null」をセットし、mysqlを抜けます。
1 2 3 4 5 6 7 | mysql> use mysql; mysql> UPDATE mysql.user SET authentication_string=null WHERE User='root' mysql> FLUSH PRIVILEGES; mysql> exit |
–skip-grant-tables オプションを抜けてmysql再起動
再起動後、パスワードなしの状態でmysqlに入れるようになりました!
1 2 3 4 5 | $ sudo systemctl unset-environment MYSQLD_OPTS $ sudo service mysqld restart $ mysql -u root |
パスワードの設定
パスワードなしは危険なので、ここで改めてALTER USERを使いパスワードを設定します。
exit後、設定したPWを使ってログインできるようになりました。
1 2 3 | mysql> ALTER USER 'root'@'localhost' identified BY '新しいPW'; mysql> exit; |
つかれた….w
参考:http://www-creators.com/archives/5574