我不是网络开发人员,之前我还没有使用过MySQL。我需要在线数据库只是为了一个简单的任务,现在并不重要。所以,我想将我的VB.NET应用程序连接到mySQL。
我正在使用免费托管https://host-ed.net/,这使我只能创建一个MySQL数据库,这对我来说已经足够了。他们为我提供了cPanel,我在其中创建了名为" db_clients "的mySql数据库。之后,我创建了2个用户,一个用于我的客户" db_client"一个给我(所有者)" db_owner"。
db_client 只保留特权" SELECT"
db_owner 有权使用数据库
基本上,我将给我的客户端的应用程序只查询在线数据库并检查一列是否包含true或false。因此,从客户端应用程序我想用Uid=db_client
连接到mySQL数据库。
我已经下载并导入了.NET的MySQL连接器。我现在遇到的麻烦是远程连接到实际的数据库。即使使用" localhost"我也无法访问数据库。
我使用phpMyAdmin(工具)来自定义数据库。您能告诉我,我应该如何,在哪里以及应该搜索什么来为连接字符串中的参数Server
找到正确的值。
我已经找到的是:在phpMyAdmin网站上,我去了home->选择标签" Variables" - >输入"主机名"在搜索栏中,它返回 f5.host-ed.me 。 在那之后,我打开了CMD并且只是ping了那个主机并得到了一个IP。接下来我该怎么办?
这是我目前的VB.NET代码:
Imports MySql.Data.MySqlClient
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conn As New MySqlConnection
Dim myConString As String
myConString = "Server=46.105.118.169; Port=3306; Database=db_clients; Uid=db_client; Pwd=somepass; Charset=latin1;"
Try
conn.ConnectionString = myConString
conn.Open()
Debug.Print("conn successfully opened")
conn.Close()
Catch ex As MySqlException
Select Case ex.Number
Case 0
MessageBox.Show("cannot connect to server. Contact admin!")
Case 1045
MessageBox.Show("Invalid username/password!")
End Select
MessageBox.Show(ex.Message)
End Try
End Sub
End Class
这是我按下按钮时得到的结果:
错误:1042 SQLSTATE:08S01(ER_BAD_HOST_ERROR)
消息:无法获取您的地址的主机名
我是否需要授予对特定IP的访问权限才能访问我的数据库? 如果答案是肯定的,那么还有办法吗?我不想手动将IP添加到白名单中。
答案 0 :(得分:2)
您是否尝试从本地PC连接到远程数据库?大多数托管计划都不允许这样做。通常,要访问远程数据库,您必须在服务器端编写一个应用程序来管理实际的数据库访问,并将请求(例如,REST-API)发送到该中间件,然后该中间件与您的数据库通信。在服务器端,您的数据库可以直接从localhost访问,如主机手册中所述。