Как установить хешированный пароль для пользователя базы данных MySQL - PullRequest
0 голосов
/ 13 февраля 2020

Мой начальник хотел бы, чтобы я написал сценарий для запуска наших разработчиков, который бы создавал нового пользователя БД в их сборках для разработчиков. Он не хочет, чтобы у меня был действительный пароль в коде; только га sh. У меня есть хэшированный пароль, но когда я пытаюсь создать пользователя с этим хэшированным паролем; он просто снова хеширует хешированный пароль.

CREATE USER 'test_user1'@'localhost' IDENTIFIED BY 'password'; показывает, что хешированный пароль "* 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19"

Но если я попытаюсь ... CREATE USER 'test_user2'@'localhost' IDENTIFIED BY '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19';

" пароль "на самом деле не мой пароль для test_user2.

Я также попробовал следующее UPDATE, но" пароль "все еще не работает для test-user2:

UPDATE `mysql`.`user` SET `authentication_string` = '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' WHERE (`Host` = 'localhost') and (`User` = 'test_user2');

Как я могу предотвратить хэширование введенного мной значения, поскольку я уже знаю хэшированное значение?

Я также выполнил GRANT SELECT для обоих пользователей в моем тестировании.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2020

Ключ должен использовать IDENTIFIED WITH mysql_native_password AS 'hash'. Рассмотрим, например, следующее:

CREATE USER 'jeffrey'@'localhost'
  IDENTIFIED WITH mysql_native_password AS 'hash-goes-here';

Соответствующая выдержка из документации:

ИДЕНТИФИЦИРОВАНО С auth_plugin AS 'auth_string'

Устанавливает для плагина аутентификации учетной записи значение auth_plugin и сохраняет значение «auth_string» как есть в строке учетной записи mysql .user. Если плагину требуется хэшированная строка, предполагается, что строка уже хэширована в формате, который требует плагин.

0 голосов
/ 13 февраля 2020

Я думаю (возможно, здесь неправильно, не уверен), что на самом деле не имеет значения, сколько раз хешируется sh, он все равно представляет один и тот же пароль. Таким образом, вы можете выполнить ту же проверку ha sh на своем входе и на выходе MySQL ha sh.

...