用VB6无法连接到远程MySQL(10060)

时间:2012-09-10 10:37:58

标签: mysql vb6 remote-access

我从GKG.net获得了一个托管计划,我有一个VB6连接字符串,可以远程访问MySQL数据库。我遵循了有关如何远程访问MySQL服务器的所有说明和教程。一切都很好,直到我收到错误说:

  

[MySQL] [ODBC 3.51驱动程序]无法连接到'xxx.xxx.xxx.xxx'上的MySQL服务器(10060)

我在网上搜索了几个小时的解决方案,但仍然没有任何意义。我仔细检查了我的连接..我可以ping到我的静态IP,但无法到达MySQL服务器。

从CPanel我可以使用phpMyAdmin访问我的数据库。我测试了我的数据库,它没有任何问题。一切似乎都是对的。除了我仍然收到VB6的错误信息

我的连接字符串:

Dim conn As ADODB.Connection
Dim constr As String
Private Sub OpenServer()
    Set conn = New ADODB.Connection
    constr = "Driver={MySQL ODBC 3.51 Driver};" & _
             "PORT=" & db_port & ";" & _
             "SERVER=" & db_server & ";" & _
             "DATABASE=" & db_name & ";" & _
             "UID=" & db_user & ";" & _
             "PWD=" & db_pass & ";" & _
             "OPTION=3;" & _
             "STMT=;"
    conn.Open constr
End Sub

那我怎么能解决这个该死的连接问题呢?和 造成这种情况的几率是多少?

5 个答案:

答案 0 :(得分:5)

访问其数据库服务器的主机很少允许从其托管环境外部远程访问数据库(我从未见过它)。

如果您自己设置MySql数据库(在专用或虚拟服务器计划上),那么您应该能够将其设置为接受远程主机。在这种情况下,您需要修改my.con文件以允许远程主机(您也可以通过MySql管理工具执行此操作),并且您需要授予您尝试使用远程IP访问权限的登录:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

您之前关于SQLyog的评论是一个非常好的主意。我可以保证该产品。这是一个很棒的工具。 MySql(Workbench - http://www.mysql.com/downloads/workbench/)中的免费管理工具也很不错,也允许您测试远程访问。

答案 1 :(得分:4)

检查此解决方案,以便在收到错误10060时远程连接

http://forums.mysql.com/read.php?34,49742,239961

http://www.bigresource.com/VB-Remote-MySQL-Server-h6Z8Cbaszz.html#

MySQL设置为非常容易处理远程连接。但是,您必须设置MySQL以允许您的用户进入。另一件事是确保端口3306在主机上打开。如果不是,则无法连接到MySQL。最简单的方法是......

telnet myhost 3306

如果你得到像...那样的东西 , 3.23.54-log▬I_&安培;:309i☻

然后端口3306打开,MySQL正在监听。

接下来,确保您的用户标识设置为允许访问MySQL服务器。您可以使用mysql客户端软件或mysqlcc软件执行此操作。

希望这有帮助

答案 2 :(得分:0)

我有这个问题。我可以从localhost连接,但不能从客户端计算机连接。我关闭了Windows防火墙(Windows 8)。但是,没有快乐。然后我在防火墙高级设置中创建了一个新规则,BINGO就可以了。新规则只允许我的专用网络上的端口3306上的传入连接。

答案 3 :(得分:0)

VB6的另一种方法。我在所有应用程序中都使用它,并且已经使用了多年。

  

Dim StoreDB As ADODB.Connection

     

On Error Resume Next

     

设置StoreDB =新ADODB.Connection

     

StoreDB.Open“Driver = {MySQL ODBC 3.51 Driver}; Server = 000.000.000.000; Port = 3306; Database = yourDBName; User = Someusername; Password = Somepassword; OPTION = 8;”

     
    

如果Err.Number = 0那么

         
      

[VB6代码执行]

             

否则

             

myErrorString = Err.Description

    
         

结束如果

  
     

StoreDB.Close

     

设置StoreDB = Nothing

如上所述,确保端口为3306.我有一台使用3307的主机。我发现您的代码没有问题。您可能需要对主机进行排序。

答案 4 :(得分:-1)

将mysqlid.exe添加到Windows防火墙设置中以远程访问您的服务器