В MySQL имеется функция PASSWORD()
для получения хеша из строки с паролем, котоаря используется самим MySQL для проверки авторизации.
При добавлении пользователя с использованием этой функции и при передачи пароля открытым текстом – возникает ошибка:
[simterm]
MariaDB [(none)]> CREATE USER 'ruser'@'%' IDENTIFIED BY PASSWORD 'password'; ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
[/simterm]
Вариант первый – не использовать PASSWORD()
, и передать пароль открытым:
[simterm]
MariaDB [(none)]> GRANT USAGE ON *.* TO 'ruser'@'%' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.00 sec)
[/simterm]
Проверяем:
[simterm]
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)
[/simterm]
Вариант второй – таки сначала получить хеш пароля, вызвав PASSWORD()
напрямую:
[simterm]
MariaDB [(none)]> SELECT PASSWORD('password'); +-------------------------------------------+ | PASSWORD('password') | +-------------------------------------------+ | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | +-------------------------------------------+ 1 row in set (0.24 sec)
[/simterm]
И затем использовать его при добавлении пользователя:
[simterm]
MariaDB [(none)]> GRANT USAGE ON *.* TO 'ruser'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'; Query OK, 0 rows affected (0.00 sec)
[/simterm]
Обращаем внимание на *
в начале строки.
Готово.