ドットインストールで学習中に
「あれっ?あれっ?」
となって
「あ、そうなんだ」
となったことの
#備忘録
環境
vagrant + centos7 + MySQL8.0.17
対しドットインストールが
MySQL5.6.36
そもそも学習教材に環境合わせろよ
という話でもあるんですが、
これからを見据えて新しい方触っておく
&
差分を見つけながら学習できる
ということで最新verを入れてます。
これからもこの姿勢は変えないつもりではいます。
ユーザー作成&権限付与が同時にできなくなってる。
5.7までは
$ create myapp_user@localhost identified by 'password';
$ grant all on myapp.* to myapp_user@localhost;
というユーザー作成とユーザーに対する権限付与が
$ grant all on myapp.* to myapp_user@localhost identified by 'password';
って感じで一本化できていました。
つまりgrant 権限 on DB名.* to ユーザー identified by 'パスワード'
ただ8からは
$ grant all on myapp.* to myapp_user@localhost identified by 'password'
ERROR 1064 (42000) at line 12: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'password'' at line 1
みたいなerrorがでます。
ただこれも優しくて
「構文ちゃう、新しいバージョンのマニュアル確認せえ」
ってわざわざ言ってくれるありがたさ。
ちなみに
これでも、まだダメなとこあります。
パスワード検証コンポーネント
password = 'password'はダメ
ver8.~ではデフォルトで従来の
パスワード検証プラグインから
パスワード検証コンポーネントに変更されていて
(プラグインも一応まだ使えるが、公式でそのうち無くすからね、移行手順はこうだよみたいな記述もあり)
ver8のコンポーネントではデフォルトで
MEDIUMポリシーが適用されていて
条件は
・数字は1つ以上
・小文字は1つ以上
・大文字は1つ以上
・特殊文字を加える
・長さは合計8文字以上
っていうことなので
password
これは全然満たしてないので使えません。
3段階(LOW,MEDIUM,STRONG)があり
LOWだと条件が
・長さが8文字以上
のみなのでpasswordが使えます。また、その長さも一応変えられるみたい。
STRONGだと
MEDIUM条件に加えて
・長さ4文字以上のパスワードの部分文字列が辞書ファイル内の単語と一致してたらダメ
っていうのも加わります。
また、プラグインからコンポーネントに変更されたタイミングで
varidate_password.check_user_nameっていうシステム変数も追加されているようで
・パスワードと名前同じはあかんやろ
っていうようなチェックもデフォルトで入ってます。
結論
ちゃんとしたパスワード入れたら問題ない
末筆
他、打ち当たり次第追記する所存。
そしてこの記事を書くにあたり
MySQL5.6, 5.7, 8.0のリファレンスマニュアルを読み比べました。
読み比べてみると変更点も浮き彫りになるし
なんだかまだ自分がプログラミングを始めていない段階での世界情勢を分かった気になれて良かったと思います。オススメ。
ver8.0
https://dev.mysql.com/doc/refman/8.0/en/validate-password.html
ver5.6
https://dev.mysql.com/doc/refman/5.6/en/validate-password.html
また今少しずつPythonを勉強しているんですが
2系と3系の変更点の記事をよく見かけます。
そういう記事だけじゃなくて
公式の読み比べ
っていうことをちゃんとしていこうと、台風前の穏やかな気候と共に考える。