MySQL はインストールしたらとりあえず、 mysql_secure_installation を実行して初期設定を行うとおもうのですが、MySQL 5.7 でこれをやろうとしたらうまく行かなかったので原因と対応方法についてメモ。
冒頭でも書いたように、MySQL は mysql_secure_installation という安全に使うための初期設定をするためのコマンドがあります。
これを実行すると、いろいろ設定ができるわけなのですが、その際一番初めに、現在の MySQL の root のパスワードの入力を求められます。
これまでは初期パスワードの設定はなかったので、何も入れずに Enter でOKだったのでそのように進めてみたところ、
1 2 3 4 |
$ sudo mysql_secure_installation Securing the MySQL server deployment. Enter password for user root: Error: Access denied for user 'root'@'localhost' (using password: NO) |
と怒られてしまい先に進めません。
どうも MySQL 5.7 ではインストール時に自動的にランダムなパスワードが設定されるんだそうです。初期パスワードが空じゃなくなったってことですね。
じゃあ、その初期パスワードはなんなんだよ、という話なのですが、これを確認するにはmysqld のログをみればばっちり書かれています。CentOS の場合、 /var/log/mysqld.log です。
仮パスワードは
[Note] A temporary password is generated for root@localhost: *******
みたいなふうに書かれてますので、以下のようにすれば簡単に見つけられます。
1 2 |
sudo cat /var/log/mysqld.log |grep "temporary password" 2016-09-30T01:18:10.869825Z 1 [Note] A temporary password is generated for root@localhost: &yyKLinh_4HH |
ということで、このパスワードを控えておいてから改めて mysql_secure_installation を行えばOKなんですが、こっちも若干変更があって VALIDATE PASSWORD という機能が増え、弱いパスワードは受け付けなくなりました。
受け付けるパスワードの強度レベルは LOW, MEDIUM, STRONG の3段階から選べるようなのですが、MEDIUMでも結構きついんでパスワードを考えるときは注意が必要です。
つか、調べた時は最初に実行した際に強度を選べるっぽいこと書いてあったのに、問答無用で MEDIUM になっててパスワード全然通らなくて焦りました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIUM | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ 7 rows in set (0.04 sec) |
もとから強いパスワードを使うようにしてる人や開発環境では不要かもしれませんが、慣れておくためにも有効化しておいてもいいかもしれませんね。
ちなみにほんとにいらないなら、この機能はプラグインで提供されてるんで、プラグイン自体を削除するって手もあるみたいです。
1 |
mysql> uninstall plugin validate_password; |
あとは多分同じかな。テストDB削除とか匿名ユーザー削除とかリモートからのルートログイン禁止とか。
コメントする