MySQL5.7以降では初期パスワードが自動で生成される様になっており、以前のようにパスワードなしでMySQLに接続することができません。
初期パスワードのありかを解明するのに変に時間を使ってしまったので共有しておきます。
確認した環境(MySQLがインストールされているサーバー)
- CentOS7
- Apache 2.4
- MySQL 5.7
初期パスワードはログから探す
MySQLの初期パスワードは初回起動時に自動的に生成されます。
しかし、サーバーの中を探しても「これがMySQLのパスワードですよ」というようなあからさまなファイルは存在していません。
では、どこにあるのか?
じつは、MySQLのログに残っています。
MySQLを実行するmysqldというプログラムはlogを残すようになっており、そのlogの中に初期パスワードも混ざっています。
mysqldのログファイルの場所
/var/log/mysqld.log
このファイルをviコマンドやlessコマンドで確認すると以下の様なログがあるはずです。
[Note] A temporary password is generated for root@localhost: EaGapdplN0*m
上記の場合、':'以降の「EaGapdplN0*m」というランダムな文字列が初期パスワードです。
このパスワードを使ってMySQLにrootユーザーとしてログインすることができます!
余談ですが、ログは1行だけでなくたくさん出力されるので、「temporary paswword」などで検索するとすぐに見つかります。
初期パスワードはすぐに変更しておく
無事に初期パスワードでログインできたらパスワードを変更しておきましょう。
変更しないでおくと毎回「ヴァーダブダブ...」などと言いながら初期パスワードを探さなくてはいけません笑
mysqlにログインしたら、以下のコマンドでパスワードを再設定しましょう!
mysql> set password for root@localhost=password('ここに新しいパスワード');