Я поддерживаю старое наследие веб-приложения ASP.NET MVC3, работающего в Azure. Приложение подключается к серверу MySQL on-prem (версия 5.1.44), который скоро умрет от старости... Поэтому dba готовит переход на новый сервер и подготовил тестовый экземпляр базы данных. Таким образом, вы думаете, что только строка подключения должна быть изменена, не так ли?
Ну, похоже, это не так просто. Важно знать; к базе данных обращаются через Entity Framework (версия 4.4.0.0). Я использую версию 6.9.9.0 драйвера MySql.Data ADO.Net для MySQL. Такая же версия для MySQL.Data.Entity. Тогда был выбран подход "база данных", который дал мне боль на других фронтах (я сначала работаю над переписыванием слоя данных с кодом, но это далеко не готово).
И это то, что я получаю при подключении к новому серверу (работает MySQL 5.7.20).
[MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.]
MySql.Data.MySqlClient.NativeDriver.Open() +1228
MySql.Data.MySqlClient.Driver.Open() +22
MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings) +218
MySql.Data.MySqlClient.MySqlPool.GetPooledConnection() +287
MySql.Data.MySqlClient.MySqlPool.TryToGetDriver() +93
MySql.Data.MySqlClient.MySqlPool.GetConnection() +65
MySql.Data.MySqlClient.MySqlConnection.Open() +566
System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +41
[EntityException: The underlying provider failed on Open.]
System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +207
System.Data.EntityClient.EntityConnection.Open() +104
System.Data.Objects.ObjectContext.EnsureConnection() +75
System.Data.Objects.ObjectQuery'1.GetResults(Nullable'1 forMergeOption) +41
Поэтому я предполагаю, что мои зависимости приложений несовместимы с новым MySQL-сервером, но у меня мало информации. Итак, во-первых, мне нужно знать, действительно ли это так. Потому что, когда я подключаюсь к новому серверу из Visual Studio, соединение не прерывается.
Надеюсь на некоторое понимание...
Таким образом, это была пробная версия и ошибка, но проблема была решена путем возврата к порту MySQL по умолчанию (3306)
Первоначально dba сделала базу данных доступной через нестандартный порт, который оказался не такой уж большой идеей. Не смотрел в нее глубже, поэтому я не уверен, что это была проблема брандмауэра с обеих сторон.