#
ドキュメント

Document

自分のための備忘録です。

MysQL 8系

パスワード ポリシー

SHOW VARIABLES LIKE 'validate_password%';
+-------------------------------------------------+-------+
| Variable_name                                   | Value |
+-------------------------------------------------+-------+
| validate_password.changed_characters_percentage | 0     |
| 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     |
+-------------------------------------------------+-------+

ref. https://qiita.com/keisukeYamagishi/items/d897e5c52fe9fd8d9273

ルートパスワード設定

// パスワードを再設定
mysql > USE mysql;
mysql > ALTER USER 'root'@'localhost' identified BY 'password';

プラグイン認証方式変更

これは、MySQL8.0から認証プラグインがこれまでの mysql_native_password より強力な caching_sha2_password になり、それにLaravelなどがまだ対応していない場合に起るエラーです。ユーザのパスワード暗号化方式を古いもの(mysql_native_password)に変えれば、これまで通り接続できます。

https://tech.bita.jp/article/32

ユーザーのパスワード認証方式を変更

  1. 全体の認証方式を変更(/usr/local/etc/my.cnf)を修正
  2. 個別ユーザーの認証方式を変更
全体の認証方式を変更(/usr/local/etc/my.cnf)を修正

/usr/local/etc/my.cnfに以下追加。

[mysqld]
default_authentication_plugin=mysql_native_password

認証方式が変わっていることを確認

mysql> show variables like 'default_authentication_plugin';
 
<出力結果>
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | mysql_native_password |
+-------------------------------+-----------------------+
個別ユーザーの認証方式を変更

ユーザー個別に認証方式を変更。

mysql > ALTER USER 'example'@'localhost' identified WITH mysql_native_password BY 'password';

全体のパスワード認証方式を変更しても既存ユーザーの認証方式は変わらなかったので、ユーザーごとに認証方式を変更。