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)
Обращаем внимание на *
в начале строки.
Готово.