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

Автор: | 07/16/2018
 

В 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)

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

Готово.