パスワードポリシー設定での MySQL 5.7 と MySQL 8.x の違い

mysql.jpg

【MySQL 5.7】
mysql> SHOW VARIABLES LIKE 'validate_password%';

Variable_name Value

validate_password_check_user_name   
validate_password_dictionary_file   
validate_password_length            
validate_password_mixed_case_count  
validate_password_number_count      
validate_password_policy            
validate_password_special_char_count

ON

8
1
1
MEDIUM
1

【MySQL 8.x】
mysql> SHOW VARIABLES LIKE 'validate_password%';

Variable_name Value

validate_password.check_user_name  
validate_password.dictionary_file  
validate_password.length          
validate_password.mixed_case_count
validate_password.number_count    
validate_password.policy          
validate_password.special_char_count

ON

8
1
1
MEDIUM
1

この違いに気づかず、ハマりました。

たとえば
mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=LOW;
ってな具合。

これだと【MySQL 5.7】では有効でも、【MySQL 8.x】ではエラーになります。

【MySQL 8.x】ならば、正しくは
mysql> set global validate_password.length=4;
mysql> set global validate_password.policy=LOW;

Variable_name の表記が1ヵ所変更されています。


【追記】一概に、上記のとおりとはいえませんでした。
$ mysqld --version
/usr/libexec/mysqld  Ver 8.0.32 for Linux on x86_64 (Source distribution)
Source distribution では、上記のとおりでした。

けれども、MySQL Community Server - GPL の場合では、アンダーバーでつないでいて正解です。たとえば CentOS7 で運用するmysqld  Ver 8.0.35 (MySQL Community Server - GPL) では、そうなります。
mysqld --version
/usr/sbin/mysqld  Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)
MySQL Community Server - GPL では、ドッドじゃありませんでした。

ぼうっとしていると、チコちゃんではないけれど、MySQLに叱られてしまいます。なかなか気がつきませんでした。