MySQL/MariaDB: ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

Thank you for reading this post, don't forget to subscribe!

В MySQL име­ет­ся функ­ция PASSWORD() для полу­че­ния хеша из стро­ки с паро­лем, кото­аря исполь­зу­ет­ся самим MySQL для про­вер­ки авторизации.

При добав­ле­нии поль­зо­ва­те­ля с исполь­зо­ва­ни­ем этой функ­ции и при пере­да­чи паро­ля откры­тым тек­стом — воз­ни­ка­ет ошибка:

MariaDB [(none)]> CREATE USER 'ruser'@'%' IDENTIFIED BY PASSWORD 'password';
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

 

Вари­ант пер­вый — не исполь­зо­вать PASSWORD(), и пере­дать пароль открытым:

MariaDB [(none)]> GRANT USAGE ON *.* TO 'ruser'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

 

Про­ве­ря­ем:

MariaDB [(none)]> SHOW GRANTS FOR 'ruser'@'%';
+------------------------------------------------------------------------------------------------------+
| Grants for ruser@% |
+------------------------------------------------------------------------------------------------------+
GRANT USAGE ON *.* TO 'ruser'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
+------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

 

Вари­ант вто­рой — таки сна­ча­ла полу­чить хеш паро­ля, вызвав PASSWORD()напря­мую:

MariaDB [(none)]> SELECT PASSWORD('password');
+-------------------------------------------+
PASSWORD('password')                      |
+-------------------------------------------+
| *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-------------------------------------------+
1 row in set (0.24 sec)

 

И затем исполь­зо­вать его при добав­ле­нии пользователя:

MariaDB [(none)]> GRANT USAGE ON *.* TO 'ruser'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19';
Query OK, 0 rows affected (0.00 sec)

 

Обра­ща­ем вни­ма­ние на * в нача­ле строки.

Гото­во.