MySQLは扱いやすいDBのため比較的小規模なシステムや勉強用のDBとしてVagrantやVMware上にCentOS等のOSを立てて使われるケースが多くあると思います。
しかし、rootであまりログインしていなかったりするとパスワードを忘れてしまう事もしばしば。。。。。。
そのため、今回はrootパスワードの初期化方法を紹介します。
前提
- OS:CentOS 7.4
- MySQL:8.0.11
MySQLの停止
MySQLが起動している場合、MySQLを停止します。
以下はroot権限で実施してください。
# サービスが起動しているかの確認
systemctl status mysqld
サービスが停止している場合は、「Active: inactive (dead)・・・」と表示されますが、「Active: active (running) ・・・」と表示される場合はサービスが起動しているため次のコマンドで停止します。
systemctl stop mysqld
safe modeでの起動
パスワード入力なしでログインできるsafeモードでMySQLのサービスを起動します。
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
systemctl start mysqld
MySQLへのログイン
MySQLへログインします。パスワードは不要です。
mysql -u root
権限のリロード
一度flushを行います。
FLUSH PRIVILEGES;
パスワードの再設定
以下のコマンドでパスワードを再設定します。
MyNewPassには変更後のパスワードを入力してください。
再設定したら一旦抜けます。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
exit;
通常モードでの起動
通常モードでサービスを上げ直します。
systemctl stop mysqld
systemctl set-environment MYSQLD_OPTS=""
systemctl start mysqld
その後、変更したパスワードでログインができるようになっているはずです。
##参考リンク
B.5.3.2 How to Reset the Root Password:
https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html
以上です。