2

我的连接字符串如下。

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
4

5 回答 5

4

使用 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 地址的左侧,安全门打开得越多。如果出现新错误,请联系您的域提供商,域中可能存在其他一些安全问题。谢谢!

于 2015-06-04T14:22:17.780 回答
1

试试这个,它会工作的

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

于 2014-08-05T09:31:31.583 回答
0

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://tech Mind.net/blog/allow-remote-connections-for-mysql-on-windows.html

于 2012-12-10T09:37:28.713 回答
0

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

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

于 2012-12-10T10:13:32.290 回答
-1

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

于 2016-06-16T01:25:24.707 回答