У вас есть несколько вариантов:
Вариант 1: отложенная миграция.
Поддерживайте подключение серверов MySQL и MongoDB к сети. Когда пользователь пытается войти в систему, проверьте пароль к MongoDB. Если это не удается (т. Е. Пароль никогда не устанавливался), то проверьте его по MySQL. Если это удастся, то хешируйте пароль и сохраните его в документе MongoDB.
Недостатки: ваш сервер MySQL должен оставаться в сети вечно (или, по крайней мере, до тех пор, пока не перейдут все ваши пользователи).
Upsides: Вы можете легко заменить формат пароля MySQL своим собственным форматом (например, хэши bcrypt или еще много чего). Вам не нужно знать, как MySQL внутренне хэширует пароли.
Вариант 2. Выясните, как работает функция пароля MySQL (MySQL), и скопируйте ее на стороне клиента.
Согласно Имитация шифрования пароля MySql () с использованием .NET или MS SQL алгоритм MySQL версии 4.1 и выше, для PASSWORD()
, равен "*" + sha1(sha1("password"))
, больше или меньше. Если вы используете старую версию, вам нужно выяснить, что такое алгоритм хеширования, и использовать его вместо этого. Вы можете просто взять свой пароль, удвоить его с помощью SHA1, добавить звездочку и проверить, соответствует ли это значение тому, что находится в БД.
Недостатки: Точный алгоритм зависит от версии MySQL, которую вы используете, поэтому вам, возможно, придется немного покопаться в зависимости от вашей версии MySQL. Вы по-прежнему застряли с использованием формата пароля MySQL в ваших документах MongoDB (хотя вы могли бы выполнить отложенное обновление, выполнив процедуру, аналогичную описанной в варианте 1).
Перевернутые стороны: вы можете выполнить миграцию один раз, а затем перевести свой сервер MySQL в автономный режим.