mysql5.7を試してみました
と言っても遅いんですが。。
mysql5.7を入れてみようと思ったのでやったこと
コマンドも含む
きっかけは新しいもの好きとjson型を扱えるようになったということで試してみたかったためです
さてmysql5.7のインストール自体はyumでインストールするとしてサービスを起動
ここまではいつもと変わらず
以前にドキュメントを読んでいて変更点で気になっていたのがパスワードの有効期限が設定されたようで360日で設定され期間が過ぎるとログインできなくなるということ
【mysql5.7.4】よりパスワードの有効期限が設定されたようでパスワードを変更しようと思いましたが
【mysql5.7.11】よりデフォルトが無期限で変更されていました
今回導入したのは5.7.11以上のもの
でもrootのパスワードがログに書かれたままなのは嫌なので変更します
rootのパスワードが設定されていますので確認
/var/log/mysqld.log の中に
A temporary password is generated for root@localhost: ***********
**の部分は実際はパスワードが書かれています
ログインしてまずはrootのパスワードを変更します
set password for `root`@`localhost`=password('新たなパスワード');
FLUSH PRIVILEGES;
ちなみにですが本当にデフォルトで無期限になったのかちゃんと確認していきたいと思います
パスワード関連の設定を確認
SHOW VARIABLES LIKE '%password%';
mysql> SHOW VARIABLES LIKE '%password%';
結果(省略あり)
+---------------------------------------+--------------+
| Variable_name | Value |
+---------------------------------------+--------------+
| default_password_lifetime | 0 |
| validate_password_length | 8 |
| validate_password_policy | MEDIUM |
+---------------------------------------+--------------+
default_password_lifetime=0
つまり無期限になっていました
個人的に変更を促すのは正しいですが強制はちょっと。。。
その辺のポリシーは利用者側の問題だと思うので。。。
そんなことを思ったりしました
その後にWEBアプリケーション用のユーザーを作成しようと思います
とりあえずgrantオプションを除いた権限で一つユーザーを作成
のちにアプリケーション作成時に更新や参照など適切なユーザーを作ることにします
grant all on *.* to `application`@`localhost` identified by 'pass';
これだとエラーが出ます
なんのエラーかというと
パスワードが短いという点と数値と英大文字と英小文字さらに記号が入っていなければならないというデフォルト設定になっているのでエラーが出ています
validate_password_length = 8
これが8文字以上の制限
validate_password_policy = MEDIUM
これが英数大文字小文字と記号にしてねのポリシー
8文字くらいはあってもいいのでとりあえずは英数でパスワードを作りたいのでポリシーを変えることにします
set global validate_password_policy = LOW
再起動で戻ってもデフォルトに脆弱にはならないのでsetで変更にしました
grant all on *.* to `app_user`@`localhost` identified by 'password';
ちなみに私は構築するときにDBはグローバルIPからのポートは開けないのでパスワードの強度というよりもパスワードの管理が重要だと思っています
DBサーバへ接続できるホストやこれに接続できる社員管理をしっかりして且つDBに接続していい社員を限定すること(ここでパスワードの管理)により責任と発見を明確にできること
これが直接の操作では何か起きないための大事なことだと思っています
コメント
コメントを投稿