MYSQL ОШИБКА 2049 (HY000): Используется соединение по старому (до 4.1.1) протоколу проверки подлинности (используется опция клиента «secure_auth»)


9

Когда я попытался восстановить весь дамп базы данных, который находится в версии 5.0 до версии 5.6, он был восстановлен, и после этого, когда я попытался восстановить соединение, получаю следующую ошибку

ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled)..

Я попытался добавить следующие строки в My.ini и перезапустил службу, но проблема сохраняется до.

skip-grant-tables Следующая ссылка говорит об ошибке в MYSQL.

https://github.com/santisaez/powerstack/blob/master/packages/mysql/mysql-powerstack-secure_auth.patch

У кого-нибудь есть какие-либо исправления для этого решения?

Ответы:


6

Это не ошибка, если у вас есть учетные записи пользователей с паролями, которые использовали древний старый алгоритм хеширования. Если вы прочитали отчет об ошибке, указанный в размещенной вами ссылке:

http://bugs.mysql.com/bug.php?id=69027

[1 мая 15:24] Тодд Фармер

Обходной путь (на самом деле «решение») состоит в том, чтобы изменить пароль для затронутого пользователя на хэш после 4.1. Это действительно рекомендуемая рекомендация, независимо от того, что хеширование пароля и процесс авторизации до 4.1 имеют заметные ограничения безопасности (обсуждается в документации по адресу http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html. ).

Восстановление версии 5.0 mysqlсхемы на сервере 5.6 - плохая идея, во всяком случае, потому что 5.6 имеет дополнительные столбцы в некоторых таблицах и некоторые совершенно новые таблицы, которые могут отсутствовать или отсутствовать сейчас, в зависимости от того, как вы настроили mysqldump, когда вы создал файл дампа. Возможно, вы вызвали другие проблемы, которые вы можете не увидеть сразу.

Кроме того, я не видел skip-grant-tablesупомянутых в статье ... но если вы правильно примените эту опцию к серверу, вся аутентификация будет обойдена, и вы сможете войти и сбросить пароли.


8

В командной строке используйте что-то вроде следующего, если у вас нет выбора ...

mysql -uTheUseerNAme -pThePassword DbName -h HostName --skip-secure-auth

Надеюсь, это кому-то поможет, так как это была моя проблема с подключением из Linux


это не работает для меня. Я все еще получаю сообщение об ошибке.
фанчина

6

Если вы используете MySQL Workbench, вам нужно проверить эту опцию:

введите описание изображения здесь


Хотя это работает для подключения к базе данных, проблема невозможности импорта / экспорта будет сохраняться. Я протестировал и подтвердил это, так как в настоящее время я ищу способ разрешить импорт / экспорт данных со старым протоколом аутентификации.
Рук

Спасибо! Это сработало для меня, когда я пытаюсь подключиться с помощью Workbench.
Huynh Vinh Phat

Я нашел эту опцию в верстаке версии 6.0.7, но не в последней версии.
Миан Асбат Ахмад

1

Это действительно означает комментарий к предыдущему ответу, но он слишком велик, чтобы вписаться в комментарий StackExchange.

Я тоже страдал от этой проблемы. Поэтому я создал нового пользователя с хэшем в новом стиле, и теперь без проблем использую этого нового пользователя. Вот что я сделал:

    [172.16.2.222:mysql Thu Nov  7 16:16:25 2013]> use mysql;
    Database changed
    [172.16.2.222:mysql Thu Nov  7 16:22:23 2013]> describe user;
    describe user;
    +-----------------------+-----------------------------------+------+-----+---------+-------+
    | Field                 | Type                              | Null | Key | Default | Extra |
    +-----------------------+-----------------------------------+------+-----+---------+-------+
    | Host                  | char(60)                          | NO   | PRI |         |       |
    | User                  | char(16)                          | NO   | PRI |         |       |
    | Password              | char(41)                          | NO   |     |         |       |

Я был рад видеть, что наш столбец Password уже достаточно широк, чтобы содержать хэши нового стиля. (Если бы он был менее 41 символа в ширину, у меня не хватило бы смелости расширить его :-)

    [172.16.2.222:mysql Thu Nov  7 16:13:10 2013]> show variables like '%pass%';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | old_passwords   | ON    |
    | report_password |       |
    +-----------------+-------+
    2 rows in set (0.06 sec)

old_passwordsсущество ONявно проблема, поэтому я временно изменил его:

    [172.16.2.222:mysql Thu Nov  7 16:13:59 2013]> set session old_passwords = 'OFF';
    Query OK, 0 rows affected (0.05 sec)

    [172.16.2.222:mysql Thu Nov  7 16:14:12 2013]> show variables like '%pass%';
    show variables like '%pass%';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | old_passwords   | OFF   |
    | report_password |       |
    +-----------------+-------+
    2 rows in set (0.06 sec)

Затем я создал нового пользователя:

    [172.16.2.222:mysql Thu Nov  7 16:14:16 2013]> create user 'erich' IDENTIFIED BY 'SEKRIT PASSWORD';

... и взглянул на новый хеш:

    [172.16.2.222:mysql Thu Nov  7 16:14:26 2013]> select * from user order by User;
    +-----------+--------------+-------------------------------------------+--------
    | Host      | User         | Password                                  | Select_
    +-----------+--------------+-------------------------------------------+--------
    | localhost | someguy      | 3d9505dd323e53f1                          | Y      
    | %         | someotherguy | 79b3df3b004bb855                          | Y      
    | %         | erich        | *D2589EF6B59146801234567897BB190123456789 | N      
    | %         | anotheroldguy| 60577e0d77b9212b                          | Y      

Обратите внимание, что мой хэш больше, чем другие!

Просто чтобы привести себя в порядок, я old_passwordsвозвращаюсь к OFF. Вероятно, это было бессмысленно, поскольку я не могу понять, почему кто-то захочет создавать новых пользователей, используя старые пароли, но кто знает.

Во всяком случае: это решило это для меня.


Решает ли это вопрос ОП? Если нет, возможно, это должен быть собственный вопрос и ответ.
Макс Вернон

@MaxVernon Я полагаю, что это зависит от ФП, чтобы решить, разрешит ли это. Это сработало для меня.
offby1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.