Столбец ПАРОЛЬ MySQL (): переход на MongoDB - PullRequest
1 голос
/ 10 января 2012

Я хочу перенести таблицу пользовательских данных на мою новую великолепную установку MongoDB. Возникают проблемы, когда я не могу понять, как обрабатывать столбец паролей. Я использую функцию MySQL PASSWORD () для хранения паролей. Когда это было сконструировано, я не видел причин, по которым когда-либо понадобилось бы менять шифрование, поэтому я не видел никакого вреда при использовании функции PASSWORD (). Но теперь я не могу передать пароли как есть, потому что (насколько я знаю) я не могу использовать PASSWORD () таким же образом в MongoDB, чтобы проверить действительность пароля.

Есть идеи?

1 Ответ

3 голосов
/ 10 января 2012

У вас есть несколько вариантов:

Вариант 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 в автономный режим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...