Как выключить старые пароли в Mysql 4.1 - PullRequest
1 голос
/ 29 ноября 2009

Мне трудно перенести мою базу данных MySQL 4.1 со старых 16-байтовых хэшей паролей на новые 41-байтовые хэши. Проблема в том, что сервер mysqld автоматически запускается с помощью директивы old-passwords = on, которая ограничивает установку новых паролей длиной до 41 байта.

Мой вопрос: кто-нибудь знает, как я могу заставить mysqld работать без директивы old-passwords = on? Я пробовал my.ini, commmandline, устанавливая переменную локально, но ничего не получалось.

Большое спасибо! Philipp

1 Ответ

1 голос
/ 30 ноября 2009

Первое, что нужно проверить, это ширина поля user table Password в базе данных mysql. До 4.1 это было 16 символов в ширину. При обновлении до 4.1 ширина должна была быть изменена до 41 символа с помощью предоставленной утилиты mysql_upgrade. Если по какой-то причине этот шаг был пропущен, сервер по умолчанию использовал бы старые 16-байтовые хэши, что вы и описываете.

Есть записать этого в документации MySQL.

Если вы обнаружите, что ваша таблица нуждается в обновлении с char (16) до char (41), и у вас есть утилита mysql_update, запустите ее, чтобы завершить обновление. В качестве альтернативы (сделайте резервную копию, а затем можете) обновить вручную, используя:

ALTER TABLE user
MODIFY Password char(41) character set latin1 collate latin1_bin NOT NULL default ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...