Подтвердить что ты не робот

Аутентификация со старым паролем больше не поддерживается, используйте пароли типа 4.1

У меня есть мой сайт с hostgator, и я хочу получить доступ к базе данных mysql с помощью приложения Windows С#, но когда я попытался подключиться, получил это сообщение:

"Аутентификация со старым паролем больше не поддерживается, используйте стиль 4.1 пароль"

Я пробовал данное решение:

SET SESSION old_passwords=0;
SET PASSWORD FOR [email protected]=PASSWORD('your pw here');

первый запрос выполнен успешно, но при выполнении второго запроса получена ошибка "Доступ запрещен для пользователя @хоста". Я не понимаю, почему существует эта проблема. Я использую MySQL-connecter-net 6.6.5.

Я успешно подключаю свою базу данных с Workbench 5.2.47 MySql.

Может ли кто-нибудь помочь мне, что я могу сделать больше?


У меня есть контакт с моим сайтом хостинга, и они вносят изменения в файл my.cnf, чтобы использовать пароль стиля 4.1. и я могу подключиться к mysql

mysql -u <username> -p <password> -h <hostname>;

но когда я попытался подключиться к С# с помощью mySQL connecter net 6.6.5, я снова получил эту ошибку.

Я использую Visual Studio 2012 с соединителем MySQL 6.6.5 для Windows 8 64 бит. это код, который я использовал для подключения

using MySQL.Data.MySQLClient;

private void button1_Click(object sender, EventArgs e)
            {
                string connStr = String.Format("server={0};port={1};uid={2};password={3};database={4}",
                    txtserver.Text, txtPort.Text, txtUser.Text, txtPassword.Text, txtDatabase.Text);
                conn = new MySqlConnection(connStr);
                try
                {
                    conn.Open();
                    MessageBox.Show("Test Connection Succeded");
                }
                catch (MySqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

Я не могу понять, где проблема. Пожалуйста, помогите мне

4b9b3361

Ответ 1

У меня была та же проблема. В моем случае только что выполнила приведенную ниже команду, подключенную к моей базе данных с помощью инструмента Workbench:

SET SESSION old_passwords=0;
SET PASSWORD FOR my_user=PASSWORD('my_password');

После этого я мог подключиться с помощью MySql Connector 6.6.5 в коде С# с общей строкой соединения mysql:

"server=my_server_ip;user=my_user;database=my_db;port=3306;password=my_password;"

Ответ 2

Сегодня у меня была аналогичная проблема в моем приложении С#. Я попытался подключиться к серверу на hostgator.com(mysql) и подключиться к localhost. После прочтения многих сообщений и внесения многих изменений, следуя каждому шагу, но я не мог подключиться к моему хозяину mysql.

Решение в моем случае состояло в том, чтобы изменить библиотеку MySql Connector/NET с версии 6. * до версии 5. *. После изменения мое приложение успешно подключилось.

Хотя это может и не быть жизнеспособным решением для всех, это может сработать для некоторых.

Ответ 3

Сегодня я встретил эту проблему, но я исправил ее, как показано ниже:

SET old_passwords=FALSE;
SET PASSWORD = PASSWORD('new pwd here');

Ну, возможно, версия подключения к серверу ниже, чем клиент, поэтому вам нужно запустить это: "SET old_passwords = FALSE;" Удачи!

Ответ 4

Была та же проблема с использованием пакета MySqlClient для С#. Позвольте сломать его:

Нам нужна база данных, чтобы не использовать пароли старого стиля, поэтому мы выполняем

SET old_passwords = 0;

УВЕДОМЛЕНИЕ ключевое слово "СЕССИЯ" отсутствует. Это то, что разрешило работать только ваш первый запрос, "СЕССИЯ" подразумевает временный и любые сеансовые настройки теряются после окончания сеанса.

Далее нам нужно установить пароль пользователя @host для нового стиля пароля

УСТАНОВИТЬ ПАРОЛЬ ДЛЯ user @host = PASSWORD ('пароль');

Эти два должны позволить вашему MySqlClient

Ответ 5

Просто хотел добавить в @diangelisj ответ и сказать, что корень проблемы - это версия PhpMyAdmin, установленная на вашем сервере. Чтобы использовать последний класс данных Data Data Connector, у вас должен быть последний PhpMyAdmin (или возникают проблемы). В моем случае у меня есть PhpMyAdmin 4.0.10.7 и попытался использовать MySQL Data Connector 6.7.9, который дал ошибку.

Что я сделал:

Ответ 6

Я просто решил свою проблему так:

1) Подключитесь к db с помощью workbench mysql (выберите "Использовать старый авторизатор" и "отправить проход в открытом виде"

2) Используя Workbench, я запускал несколько раз (потому что он продолжал говорить "0 строк, затронутых" ): (также измените идентификатор пользователя и пароль на нужные материалы)

SET SESSION old_passwords=0; 
SET PASSWORD FOR userID=PASSWORD('password');

SET SESSION old_passwords=false; 
SET PASSWORD FOR userID=PASSWORD('password');

3) Теперь вернитесь в свое приложение и оно должно работать...

Вот как я это сделал. Я использую IX mysql, и они используют старый auth на своем сервере, поэтому вы должны что-то сделать на своем конце...

Ответ 7

Мне не удалось решить проблему, как другие, которые ответили, хотя я опробовал все, что было предложено. В итоге оказалось, что сервер, на котором стояла моя БД, не обновляет phpMyAdmin с версии 3.5.5 и в настоящее время используется везде версии 4.1.14, и это проблема. Решение состоит в том, чтобы обновить хост phpMyAdmin или ваш собственный mySQL до более ранней версии, чтобы продолжить работу с удаленной БД. Вам могут понадобиться эти знания, чтобы решить некоторые возникшие сомнения.:)

Ответ 8

Сегодня я нашел ту же проблему. Я загрузил Workbench. Существуют некоторые настройки для workbench для подключения базы данных, а именно: 1.Выберите вкладку SSL, выберите опцию "нет" в " Использовать SSL". 2. выберите вкладку расширенный, выберите в поле Использовать протокол аутентификации ole. после этого Workbench работает. и следуйте за сообщением tai1001 '. Это все, что я нашел все шаги, которые работают.

Ответ 9

Забудьте об использовании SET old_password = 0, поскольку, если сервер настроен на использование нового пароля, нет никаких оснований менять флаг на сервере, если ваше приложение больше не получает доступа. Изучите используемую соединительную сеть NET.

Коннектор 6.5.4 является правильным для использования old_password, версия rencent использует новый.

Лучшей практикой было бы избежать установки соединителя на машине, просто оставьте NET обработать DLL, если у вас уже есть это, или в любом случае попытайтесь найти MySQL.Data.DLL версии 6.5.4.0 (384 kbytes)