【发布时间】:2013-12-10 22:51:30
【问题描述】:
我希望将我的代码中的localhost 更改为适用于使用我正在创建的应用程序的用户的IP。有人可以帮我输入什么吗?我尝试只输入我的公共 IP,但它返回了 Unable to connect to any of the specified MySQL hosts.
任何关于做什么的帮助都会很棒。此外,如果我需要在端口方面做任何事情来实现这一点,请包括在内,最好附上说明。
代码:
else
{
var constring = "datasource=localhost;port=3306;username=*****;password=*********";
using (var con = new MySqlConnection(constring))
{
con.Open();
var cmd0 = new MySqlCommand("select username from userinfo.users where username=@username");
cmd0.CommandType = CommandType.Text;
cmd0.Connection = con; // assign to connection
cmd0.Parameters.AddWithValue("@username", RUsernameTextBox.Text);
bool userNameIsFree;
using (var reader = cmd0.ExecuteReader())
{
userNameIsFree = !reader.HasRows;
}
if (!userNameIsFree)
CMessageBox("Error", "Username is already taken.");
else
}
}
【问题讨论】:
-
如果您想从您自己的路由器后面连接到您自己的 IP,您必须使用外部 DNS 进行网络连接,还要确保您的防火墙没有阻止端口 3306。跨度>
-
@Silvermind 嗯,我的措辞可能不正确,如果我没有正确地做,我很抱歉。我想要的是,当应用程序在网络中某个随机人的机器上运行时,我的应用程序能够连接到我的 MySQL 数据库。
-
最简单的方法是使用您的机器名称,如果它位于 LAN 或 VPN 内部。否则你可能没有正确设置防火墙或 mysql。
-
@Silvermind 我现在感觉很糟糕,我不知道你在说什么 :( 我想我知道我的机器名称,但我不知道 LAN 或 VPN 是什么。老实说,我以为我只是遗漏了几个字母或没有打开的东西。我以为您可以使用您的公共 IP 连接到该 IP 上托管的 mysql 数据库。
-
我认为这是非常离题的。这是一个非常具体的情况,一切都是未知的。我们现在不讨论网络是如何构建的,公共和私有 ips 如何,如果是服务器或更多,路由器操作系统是否阻塞任何端口,是否将它们重定向到正确的机器,如果 mysql 服务器正在侦听是否到标准公共端口(3306),以及其他一些东西。它是您所要求的完整教程!
标签: c# mysql winforms localhost