#c# #mysql #.net #azure
#c# #mysql #.net #azure
Вопрос:
У меня проблема с подключением MySQL к серверу Azure MySQL из моего приложения .net framework.
Ошибка
MySql.Data.MySqlClient.MySqlException
HResult=0x80004005
Message=Authentication to host 'myserver-mysql.mysql.database.azure.com' for user 'username@myserver-mysql' using method 'mysql_native_password' failed with message: The connection string may not be right. Please visit portal for references.
Source=MySql.Data
StackTrace:
at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.AuthenticationFailed(Exception ex)
at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.ReadPacket()
at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.Authenticate(Boolean reset)
at MySql.Data.MySqlClient.NativeDriver.Authenticate(String authMethod, Boolean reset)
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at EfTest.Program.Main(String[] args) in ...
Inner Exception 1:
MySqlException: The connection string may not be right. Please visit portal for references.
Консольное приложение для воспроизведения проблемы
static void Main(string[] args)
{
var server = "myserver-mysql.mysql.database.azure.com";
var database = "e10bf91fc2a8e281d06fecf752e2a592";
var user = "username@myserver-mysql";
var password = "mypassword";
var port = "3306";
var sslM = "preferred";
var connectionString = String.Format("server={0};port={1};user id={2}; password={3}; database={4}; SslMode={5}", server, port, user, password, database, sslM);
using (var connection = new MySqlConnection(connectionString))
{
connection.Open();
connection.Ping();
}
Console.ReadKey();
}
Упаковка
<packages>
<package id="Google.Protobuf" version="3.5.1" targetFramework="net472" />
<package id="MySql.Data" version="8.0.15" targetFramework="net472" />
</packages>
Я также попробовал точно такую же строку подключения с портала Azure
$"Server=myserver-mysq.mysql.database.azure.com; Port=3306; Database={database}; Uid=username@myserver-mysq; Pwd={password}; SslMode=Preferred;";
но никаких шансов.
Кто-нибудь может указать мне, чего мне не хватает?
Ответ №1:
Попробуйте этот формат строки подключения:
var connectionString = String.Format("Server={0};Port={1};Uid={2};Pwd={3};Database={4};SslMode={5}", server, port, user, password, database, sslM);
Комментарии:
1. спасибо, но это тоже не помогает. Мне удалось заставить его работать, заменив MySQL. Пакет данных с MySqlConnector от Брэдли Грейнджера. К сожалению, у последнего нет пакета EF, поэтому я либо нахожу исправление для этого, либо создаю свой собственный
2. @xakz Я не уверен, что Oracle — это MySQL. Данные совместимы с базой данных Azure для MySQL. Если вы можете использовать EF. Ядро, затем nuget.org/packages/Pomelo . EntityFrameworkCore. MySQL должен работать на вас. В противном случае «классической» реализации EF, построенной поверх MySqlConnector, не существует, извините.