将 ASP.NET MVC 应用程序重新连接到移动的 MySQL 数据库时发出问题

Issue reconnecting ASP.NET MVC app to moved MySQL database

我在 Azure 中维护一个旧的遗留 ASP.NET MVC3 网络应用程序 运行。该应用程序连接到一个 MySQL 本地服务器(版本 5.1.44),该服务器即将因年老而死亡......因此 dba 正在准备迁移到较新的服务器并准备了一个测试实例数据库。所以您会认为只需要更改连接字符串,对吗?

嗯,看来没那么容易。重要的是要知道;通过 Entity Framework(版本 4.4.0.0)访问数据库。我正在为 MySQL 使用 MySql.Data ADO.Net 驱动程序的版本 6.9.9.0。 MySQL.Data.Entity 的相同版本。当时选择了 'database first' 方法,这让我在其他方面感到痛苦(我正在努力先用代码重写数据层,但还远未准备好)。

这是我连接到新服务器时得到的结果 (运行 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 通过 non-standard 端口使数据库可用,结果证明这不是一个好主意。没有深入研究,所以我不确定这是否真的是双方的防火墙问题。