[MySQL8.x] ルートパスワード・セキュア設定の変更

MySQL8をインストールしたあと、ルートのパスワード変更と、パスワードポリシーの変更を行います。
MySQL8は厳格なパスワードポリシーとなっており、短いパスワードや簡単なパスワードが利用できなくなっています。あまり厳しすぎるポリシーは運用上実用的とは言えないので、自分の求めるポリシーに変更したほうが使いやすいですね。
MySQLの初期パスワードを確認
初期パスワードはmysqlのログの中に記載されています。
ログの中には色々なデーターが含まれていて見難いので、 「grep password」でパスワードの含まれる行だけを表示します。
1 |
# grep password /var/log/mysqld.log |
このようにパスワードが表示されます。
1 |
2020-03-10T10:33:39.477523Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iEfk>A)<w4S0 |
最後の「iEfk>A)<w4S0」がパスワードになります。
これでMySQLにログインしてみます。
MySQLが立ちあがっていない場合は
1 |
# systemctl start mysqld |
でMySQLを起動します。
MySQLにログイン
1 2 |
# mysql -u root -p Enter password: |
パスワードを聞かれるので先程のパスワードを入力します。
ログインできたらルートのパスワードを変更してみます。
1 2 3 |
alter user root@localhost identified with mysql_native_password by '任意のパスワード'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements |
ある程度の長さのパスワードを入力しないとポリシー違反と言われます。
まずは英語大文字小文字、数字、記号を組み合わせた長めのパスワードを設定します。
ここでパスワードを変更しておかないとポリシーの変更ができません。
新しく設定したルートパスワードでMySQLにログインします。
デフォルトのポリシーを表示
1 |
show variables like 'validate_password%'; |
1 2 3 4 5 6 7 8 9 10 11 12 |
+--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | 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.01 sec) |
これを見ながらポリシーを変えます。
「 validate_password.policy」をLowに変更します。
1 2 |
set global validate_password.policy=LOW; Query OK, 0 rows affected (0.00 sec) |
これで変更されました。確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
show variables like 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | LOW | | validate_password.special_char_count | 1 | +--------------------------------------+-------+ 7 rows in set (0.00 sec) |
任意のパスワードを再度設定します。
1 |
alter user root@localhost identified with mysql_native_password by '任意のパスワード'; |
設定を永続的に
セキュアポリシーはMySQLを再起動すると元に戻ってしまうので、永続的に反映させるようにします。
ターミナルからmy.confを開きます。
1 |
# vi /etc/my.cnf |
mysqldの項目に下記を加筆します。
1 2 |
[mysqld] validate_password.policy=LOW |
これで再起動すればOKです。
1 |
systemctl restart mysqld |
関連記事
- [CentOS] CentOS6.x KagoyaVPSの設定
- [MySQL]8.x phpMyAdminでGrant文が使えない
- [CentOS 7x] MySQLをCentOS7にインストールする方法
- [CakePHP] MySQLデータを表示するときの文字化け対処方法
- [CakePHP] MacのMAMP環境にインストールする方法