C#连接到Docker Mysql容器

C#连接到Docker Mysql容器,mysql,docker,virtual-machine,Mysql,Docker,Virtual Machine,我有一个运行MySQL容器的Linux虚拟机。 VM对主机执行ping操作,主机对VM执行ping操作。 我正试图通过主机上的C#代码连接到DB,但它就是不起作用 这是我的连接字符串,使用实际IP而不是此处的文本: private const string connectionString = "SERVER=IP ADDRESS HERE;" + "PORT=3306;" + "DATABASE=

我有一个运行MySQL容器的Linux虚拟机。 VM对主机执行ping操作,主机对VM执行ping操作。 我正试图通过主机上的C#代码连接到DB,但它就是不起作用

这是我的连接字符串,使用实际IP而不是此处的文本:

private const string connectionString =
        "SERVER=IP ADDRESS HERE;" +
        "PORT=3306;" +
        "DATABASE=hasava_db;" +
        "UID=root;" +
        "PWD=pwd;" +
        "SslMode=None;";
下面是函数本身:

public void func()
    {
        MySqlConnection cnn;
        cnn = new MySqlConnection(connectionString);
        try
        {
            cnn.Open();
        }

        catch (Exception ex)
        {
            System.Windows.MessageBox.Show(ex.Message);
        }
    }

我收到错误消息。

那么,如果我理解正确,您在windows下工作,并且有一个linux虚拟机运行docker引擎,其中当前有一个mysql容器?如果这确实正确,则需要2个跃点(docker-->linux-->windows)才能连接。如果通过将端口绑定到linux本地主机来启动mysql docker容器,则可以尝试将其转发到windows。所以Docker3306到Linux3306。然后VM应该打开端口3306以便windows主机可以访问(如果您运行virtualbox,请在网络设置下检查端口转发)。问题是,在我的VBox程序上,端口转发选项变灰(2个NIC:第一个是主机,第二个是桥接的)。我的情况正好相反(linux作为主机,win10作为客户端)当我进入网络时,该选项仅在NAT网络设置下可用。但我敢打赌linux客户端端口被阻止,因此您无法连接。如果可以,您可以尝试关闭机器,看看您的选项是否可用。现在我可以将其更改为NAT NIC,但仍然无法连接…这可能是另一个问题。如果您使用的是Virtualbox,则非常困难。只需填写名称(如mysqlfwd)、主机端口(例如12345)和来宾端口(3306,您的mysql服务运行的位置)。这就足够了。请参见下图: