下面我的MySQL连接代码是'捕捉'此错误:"无法连接到任何指定的MySQL主机。"
我的数据库位于我的linux网站上,并且我使用%启用了远程访问,因此任何人都可以访问数据库。
我的代码是.NET C#,我有一个winform。
string server = "http://www.mywebite.net";
string database = "mywebsite_app";
string uid = "admin";
string password = "Password";
string connectionString;
connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
MySqlConnection dbConn;
try
{
dbConn = new MySqlConnection(connectionString);
dbConn.Open();
if (dbConn.State.ToString() != "Open")
{
this.Text = "could not open database connection";
}
else
{
this.Text = "database connection opened";
}
}
catch (Exception ex) // catch on general exceptions, not specific
{
this.Text = ex.Message;
}
感谢您的帮助......
答案 0 :(得分:0)
如果你的mysql数据库是在远程托管上,那么你通常会运气不好尝试远程连接到该数据库。 托管服务提供商通常会阻止远程mysql访问。
尝试使用ssh-tunneling。 下载腻子 http://www.chiark.greenend.org.uk/~sgtatham/putty/
打开命令行,从安装目录
执行puttyputty username@remote_mysqlhost -L 3306:localhost:3306
或者你可以使用gui,用你的mysql遥控器填充地址,但是还没有打开连接。
转到ssh隧道,添加新的转发端口3306,目的地为localhost:3306。
为什么目标是localhost,这是因为目标是ssh会话看到的。因为您已经在ssh会话中连接到远程服务器,因此,mysql主机是本地的。
这也可能是dmz的设置。 您可以使用putty通过dmz网络中的任何计算机创建一个dmz网关。但网关背后的计算机,不会公开暴露在互联网上。
不要忘记按下添加按钮以确保将配置添加到隧道列表中。
打开连接并使用您的密码(ssh用户和密码,通常与网站主机控制面板用户和密码相同
现在,您可以通过localhost连接到mysql,而不是连接到远程mysql。它将通过putty隧道传输到你的远程mysql。
首先尝试使用mysql管理工具进行连接。测试连接是否成功。
从用户视图看,ssh隧道的工作方式与vpn几乎相同。 但没有在远程主机上设置vpn服务器的麻烦。