Как использовать MySQL Соединитель /NET с приложением C# - PullRequest
0 голосов
/ 11 февраля 2020

Я работаю над старым (er) приложением, которое подключено к сторонней базе данных MySQL; код содержит следующее:

MySqlConnection conn = new MySqlConnection(_oSconnection);
conn.Open();
DataSet ds = new DataSet();
MySqlDataAdapter adapter = new MySqlDataAdapter(sqlQuery, conn);
adapter.Fill(ds, "DataRecords");
conn.Close();

Где строка подключения имеет формат:

server=<ip>;port=3306;userid=<username>;password=<password>;database=myDB

Когда я запускаю это, приложение разрывается в строке conn.Open();, с следующая ошибка:

Authentication to host '<ip>' for user '<username>' using method 'mysql_native_password' failed with message: Access denied for user '<username>'@'<myIp>' (using password: YES)

При исследовании ошибки единственные ответы, которые я могу найти, похоже, предполагают, что ее следует исправить, изменив переключение базы данных на менее безопасные, более старые версии MySQL / Connector ( что кажется неправильным подходом) или предложение представляет собой некоторую комбинацию следующих строк, ни одна из которых не решает проблему.

SET SESSION old_passwords=0; 
SET SESSION old_passwords=FALSE; 
SET PASSWORD FOR <username> = OLD_PASSWORD('<password>');
SET PASSWORD FOR <username> = PASSWORD('<password>');

Мое приложение, работающее в Windows 10, находится в Visual Studio 2017 (Framework 4.6.1), с подключением MySQL / Connector версии 8.0.19 к базе данных, которая является 10.1.22-MariaDB

Буду признателен за совет о том, как заставить работать такое простое соединение / запрос, не возвращаясь к OLD установки.

1 Ответ

0 голосов
/ 12 февраля 2020

Решение для этого пришло с сочетанием двух предметов; во-первых, убедитесь, что установлен самый современный соединитель, что было сделано из NuGet со следующим

Install-Package MySqlConnector -Version 0.61.0

, а затем убедитесь, что разрешения в базе данных не используют подстановочные знаки. Мы установили @ '%' для доступа к базам данных% (все базы данных) и были изменены, чтобы ссылаться на каждый объект базы данных отдельно. На самом деле понятия не имею, почему он не принимает % баз данных , но после нескольких часов проб и ошибок это исправило это, и мы теперь подключаемся к базе данных, как и ожидалось, без отката безопасности (как предлагается в другом месте)

...