【问题标题】:Connect to remote MySQL database using VB.NET 2010使用 VB.NET 2010 连接到远程 MySQL 数据库
【发布时间】:2020-05-14 17:41:35
【问题描述】:

我的连接字符串如下。

conn.ConnectionString = "Server=192.248.***.***; Port=3036; User id=admin; password=***; Database=abc; Connect Timeout=60;"

但它返回错误“连接到数据库时出错:无法连接到任何指定的 MySQL 主机。”

但我可以使用 PHPMyAdmin 登录。

//192.248.***.***/phpmyadmin

我也可以使用以下方式登录本地 MySQL 数据库:

    conn.ConnectionString = "server=" & "localhost" & ";" & "user id=" & "admin" & ";" & "password=" & "" & ";" & "database=abc"

这段代码有什么问题。我想连接到远程数据库,因为这是系统的要求。请帮忙。

更新: 在即时窗口中显示:

    PassbookPrinter.vshost.exe Error: 0 : Unable to connect to any of the specified MySQL hosts.
A first chance exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll

【问题讨论】:

  • 发布您的完整堆栈跟踪错误
  • 也许你的端口有错字......默认端口是 3306 而不是 3036。除非你改变它。

标签: mysql vb.net


【解决方案1】:

尝试在 mysql 的 .ini 配置上将端口更改为 3307 然后在mysql的.ini配置上绑定地址=服务器的ip或主机名

【讨论】:

    【解决方案2】:

    使用 VB.Net 连接到远程 MySQL 数据库

    将 vb.net 连接到远程 MySql 数据库;无论您使用的是什么 VB.Net 版本,都只需执行以下步骤即可。

    1) 从 url (https://dev.mysql.com/downloads/connector/net/) 下载 Mysql Connector/Net

    2) 安装连接器;默认情况下,连接器将安装在我安装的版本的路径(C:\Program Files\MySQL\Connector Net 6.9.6)中。

    3) 打开 VB.Net IDE 并启动新项目。

    4) 添加“Mysql.Data.dll”作为对您项目的引用,您可以在路径中找到它 (C:\Program Files\MySQL\Connector Net 6.9.6\Assemblies\v4.5) ;

    5) 准备您的连接表格,如图所示;

    6) 创建名为“Database”的类,并编写如下代码。

    数据库类代码

    导入 MySql.Data.MySqlClient

    公共类数据库

    Private _connection As New MySqlConnection
    Private _errormessge As String
    Private _servername As String
    Private _databasename As String
    Private _userid As String
    Private _password As String
    
    Public WriteOnly Property ServerName() As String
        Set(ByVal value As String)
            _servername = value
        End Set
    End Property
    
    Public WriteOnly Property DatabaseName() As String
        Set(ByVal value As String)
            _databasename = value
        End Set
    End Property
    
    Public WriteOnly Property UserID() As String
        Set(ByVal value As String)
            _userid = value
        End Set
    End Property
    
    Public WriteOnly Property Password() As String
        Set(ByVal value As String)
            _password = value
        End Set
    End Property
    
    Public ReadOnly Property ErrorMessage() As String
        Get
            Return _errormessge
        End Get
    End Property
    
    Public Function Connection() As Boolean
        Try
            _connection.ConnectionString = "Server=" & _servername & ";Port=3306;Database=" & _databasename & ";User ID=" & _userid & ";Password=" & _password & ""
            _connection.Open()
            If _connection.State = ConnectionState.Open Then
                _connection.Close()
                Return True
            End If
        Catch ex As Exception
            _errormessge = ex.Message
            Return False
        End Try
    End Function
    

    结束类

    表单类代码

    公共类 Frm_Main Private Sub btn_connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 btn_connect.Click

    '对象声明和实例化

    将数据变暗为新数据库

        With data
            'Assing the object property values
            .ServerName = txt_server.Text
            .DatabaseName = txt_database.Text
            .UserID = txt_uid.Text
            .Password = txt_pwd.Text
    
            'Connection testing
            If .Connection Then
                MessageBox.Show("Database Conneted.")
            Else
                MessageBox.Show(.ErrorMessage)
            End If
        End With
    End Sub
    
    Private Sub btn_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_exit.Click
        Close()
    End Sub
    

    结束类

    7) 运行项目并尝试连接;如果连接成功,那么你的运气;如果连接不成功并出现以下错误消息,请不要继续阅读更多内容;

    8) 记下@之后错误消息中的 ip 地址(那是您的 ip)并将其添加到您的域 cpanel“远程 mysql 访问”下图说明了远程 mysql 访问的样子(它们可能相同)推迟颜色);不要忘记按“添加主机”按钮。对于使用静态 ip 的用户,此设置每天都可以使用。

    执行上述步骤后看到成功消息;

    但是,如果错误消息仍然存在,请尝试将密码文本留空,如果您的远程数据库中没有密码,请再次连接;如果错误再次出现,除非将 YES 更改为 NO,那么您必须检查您是否在 DHCP;

    9) 如果您在 DHCP 中,这意味着 IP 在每个新的 Internet 连接中都会发生变化。如果您使用调制解调器,可能您在 DHCP 中。如果您在动态 ips 中,请检查 ip 的 4 个块中发生了什么变化。如果第一次连接的第一个ip是197.250.3.201,下一个ip是197.250.60.70,下一个ip是197.250.80.24;您必须在您的 cpanel 访问主机中添加 197.250.% 才能使您的连接稳定。

    10) 注意:随着百分号(通配符)流向 IP 地址的左侧,安全门打开得越多。如果出现新错误,请联系您的域提供商,域中可能存在其他一些安全问题。谢谢!

    【讨论】:

    【解决方案3】:

    试试这个,它会起作用的

    con.ConnectionString ="Persist Security Info=False;datasource=site.com;port=3306;username=username;password=password;database=database name"
    

    你必须添加

    坚持安全

    在您的代码中。访问站点服务器的 mysql 数据库。转到 cpanel > Remote MySQL ,并添加您的 IP 地址

    看到这张图片>>> https://www.dropbox.com/s/ytsz57spanwdpkz/cpanel.PNG

    现在享受吧:p

    【讨论】:

      【解决方案4】:

      我以前也有同样的问题,我和它在不同的服务器上运行时一样。

      尝试从运行应用程序的服务器 ping 通,看看是否可以连接。这就是我发现并需要更改防火墙的方式。

      【讨论】:

        【解决方案5】:

        MySQL 的默认端口是 3306。如果您可以使用默认设置从 phpmyadmin 连接,这听起来像是一个错字,您应该:

        conn.ConnectionString = "Server=192.248.***.***; Port=3306; User id=admin; password=***; Database=abc; Connect Timeout=60;"
        

        另外,默认情况下禁用对 MySQL 服务器的远程访问。例如,如果您在 Debian Linux 发行版上运行 MySQL,您可能需要执行以下额外步骤以允许从另一台计算机进行访问:

        http://www.debianhelp.co.uk/remotemysql.htm

        对于 Windows 主机,以下内容可能很有用:

        http://techminded.net/blog/allow-remote-connections-for-mysql-on-windows.html

        【讨论】:

        • 也可以试试 Uid=admin; Pwd=*** - 我似乎记得 MySQL 连接器不允许 SQL/Server 允许的某些别名
        • 不。还是同样的错误。既然它是安全的,我有什么需要做的吗?
        • 还注意到phpadmin在另一台机器上,可能是机器上的防火墙问题和端口3306没有为远程连接打开?也许安装 MySQL Workbench,看看你是否可以远程连接以隔离问题。
        • 进一步评论,如果您无法从 MySQL Workbench 连接,那么我们需要知道 MySQL 运行的操作系统才能解决问题。即将更新我的答案。
        • 谢谢彼得,我尝试使用 MySQL WB。它说无法连接。它显示 192.248.***.*** (10060)。是10060端口吗?操作系统是Win 2000服务器。
        猜你喜欢
        • 1970-01-01
        • 2014-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-10-20
        • 1970-01-01
        • 2020-03-26
        • 2021-02-25
        相关资源
        最近更新 更多