为什么我无法连接到免费云mysql使用C#连接器从我的工作办公室PC机,而我可以连接到同一服务器使用mysql工具?
当我无法连接时,我得到的消息是"Connect Timeout过期“。
我也尝试在我的电脑在家里,我可以很好地连接使用完全相同的C#代码。Mysql工具也可以在家工作。
它可以是防火墙或其他安全措施在我的工作公司网络?为什么它不阻止mysql工具?
我还尝试使用本地主机mysql (在端口51255上使用mysqld )。我成功地使用mysql工具进行了连接,但获得了与c#代码相同的错误。
EDIT1 -包括代码
EDIT2 -本地主机尝试
private async Task<string> ConnectDB()
{
MySqlConnectionStringBuilder dbinfo = new MySqlConnectionStringBuilder
{
Server = "******",
Port = ****,
Database = "*****",
UserID = "*****",
Password = "*****",
};
using(MySqlConnection connection = new MySqlConnection(dbinfo.ConnectionString))
{
try
{
await connection.OpenAsync();
}
catch (MySqlException error)
{
message = error.Message;
}
if (connection.State == ConnectionState.Open)
{
message = "Success!";
}
}
return message;
}
发布于 2022-07-18 07:19:11
我们看到相同的C#代码在家里工作,但在办公室不起作用。因此,这不是代码;它必须与办公室的环境有关。但是你可以通过命令行工具在办公室连接,所以它也不是公司防火墙,这将很难区分两者之间的区别。
剩下的是在本地电脑上工作的东西。本地操作系统防火墙和防病毒软件都出现在我的脑海中,而在我看来,反病毒软件听起来更可疑。另一个选项是DNS,其中office的DNS服务正在以不同的方式解析数据库的主机名。但如果没有更多的信息,这只是猜测。我建议增加更多的日志;现在我们甚至不知道完整的错误消息。
另外要指出的是,直接向互联网公开数据库并不常见,而且被认为是非常糟糕的做法。此外,应用程序应该与数据库连接得很好。多年来,“人际关系良好”的定义已经发生了变化,但“公共互联网”并不算在内。通常,如果您在另一个位置承载数据库,那么在数据库前面将有一个web端点,该API的服务器可以位于与DB相同的位置,因此连接良好。
https://stackoverflow.com/questions/73021620
复制相似问题