名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

(Mac)MySQL5.7のrootユーザーパスワードをリセットする

Qiitaに書こうと思ったが無数に類似した記事が出てきたので、自分のはてなブログに書く程度に収めておくこととする。(なぜハッカソンで急いで探しているときには発見ができないのか。これがわからない)

下記、Qiitaように書いたため若干丁寧になっているが自分用のメモとして公開しておく。


MySQL5.7系限定かもしれない。ハッカソン中にMySQLへのパスワード忘れて、リセットしようとして… 5.5系の記事を踏んでまんまとひっかかりました。これは私のローカルの環境の問題ですが、実運用とかではまず忘れるということ自体やばいので避けましょう。。。

ちなみにhomebrewで入れたものなので、もしそれ以外の方法で入れている場合は見に行く設定パスが違う可能性が高いです。 which mysql.server 等で探してください。

手順概要

  • mysql.server 停止
  • --skip-grant-tables 付きでリスタート
  • 別のterminalでMySQLに入る
  • パスワードをアップデートする(今回は適当に password にリセットする。本当はちゃんとしたパスワードにしておくべきだが…。)
  • mysql.server をリスタート

ざっくりいうとこの手順です。

MySQL5.7 の場合は、 mysql.userのauthentication_string がパスワードになっています。このパスワードはハッシュ化されているので、普通に書き換えると失敗します。

実行手順

mysql.server 停止

mysql.server stop

--skip-grant-tables 付きでリスタート

mysql.server stop

別のterminalでMySQLに入る

terminalを起動するか別のタブに移動して

mysql -u root

パスワードをアップデートする

update mysql.user set authentication_string = PASSWORD('password') where user = 'root';

確認はこれで。ユーザーパスワードにハッシュが入ってたら成功。のはず。

select host, user, authentication_string from mysql.user;

設定し終わったら念の為MySQLから出る。

exit

mysql.server をリスタート

mysql.server restart

これで mysql -u root -pmysqlにログインしようとした際、 password でログインできるようになる。

ハマった感想

業務ではMySQLガンガン使っているものの、パスワード設定とか根本的なものをやったことはあまりなかったので良い勉強になった。が、ハッカソン中にこれをやってしまうとメンバーへの影響が大きいので… 環境構築は事前にしておこうね!