MySQL(5.7.6以上)でrootの初期パスワードがわからない時の対処法

MySQLインストールしたはいいけど、なんかログインできない。

あれ、mysqlって打つだけでログイン出来たよな?

mysql


と思いつつ調べてみたら、MySQL5.7.6からは初期パスワードが発行されて No Passwordがデフォルトで無効になったみたい。

初期パスワードはログイン失敗するとログが吐かれてそこに書いてあるので、

cat /var/log/mysqld.log | grep 'password is generated';

すると、こんな感じでログが出てくる。

2017-01-01T00:00:0.644621Z 1 [Note] A temporary password is generated for root@localhost: t_1to,j5u8YX

最後の t_1to,j5u8YX がパスワードになるので、

mysql -u root -p

からパスワード入力してログインしましょう。

パスワード変更する

パスワード変更

SET PASSWORD = PASSWORD('変更したいパスワード');

ちなみにデフォルトだと半角英数字大小文字数字記号を少なくとも1つずつ含む8字以上の文字列じゃないと怒られて変更させてくれない。

これはデフォルトのパスワード長が8、ポリシーがMEDIUMになってるせいです。

変更する場合はこんな感じ。

SET GLOBAL validate_password_length=4;
SET GLOBAL validate_password_policy=LOW;adduser

ポリシーの詳細

ポリシーの詳細は以下。

  • LOW ポリシーは、パスワードの長さのみテストします。パスワードは少なくとも 8 文字の長さでなければなりません。
  • MEDIUM ポリシーは、パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む必要があるという条件を追加します。
  • STRONG ポリシーは、パスワードの 4 文字以上の部分文字列が、(辞書ファイルが指定された場合に) 辞書ファイル内の単語と一致してはならないという条件を追加します。

参考: dev.mysql.com