0

我正在用 c# 连接到一个 mysql 数据库,只要我将服务器地址输入为“localhost”或其 ip,它就可以正常工作,但是如果我尝试使用远程 ip,它会失败:

Error: 0 : Unable to connect to any of the specified MySQL hosts.

这是代码:

server = Properties.Settings.Default.DBHost;
port = Properties.Settings.Default.DBPort;
database = Properties.Settings.Default.DBName ;
uid = Properties.Settings.Default.DBUser;
password = Properties.Settings.Default.DBPassword ;

string connectionString;
connectionString = "SERVER=" + server + ";" + "PORT=" + port + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
connection = new MySqlConnection(connectionString);

[...]

if (this.OpenConnection() == true){
    // exec db operations
}
else{
    MessageBox.Show("Database Connection Error.");
}

测试:

  • 没有防火墙限制
  • 不同电脑出现同样的错误
  • 已经尝试过使用不同的远程数据库,所有这些都具有设置权限并且可以从其他来源访问
4

3 回答 3

0

也许您的 MySQL 服务器未配置为侦听您的任何 IP 接口。也许它只是在听你的“localhost:3306”

在您的 MySQL 服务器配置文件“bind-address”中检查它。

于 2013-05-12T11:49:20.987 回答
0

如果它是你的mysql服务器,那么,

  • 检查您的端口是否打开。(可能是 3306)
  • 更改 my.ini 文件中的绑定地址(从 127.0.0.1 到 0.0.0.0)
  • 仔细检查您尝试连接到服务器的用户是否具有必要的权限

如果它不是你的mysql服务器那么,

  • 询问提供商他们是否支持远程连接。
于 2013-05-12T09:46:28.230 回答
0

首先你必须检查你的服务器是否支持远程MySQL database Connection然后

你可以试试这个MySQL Connection String Builder例子,我一直在工作..没有错误:

_connectionStr = new MySqlConnectionStringBuilder
            {
                Server = "127.0.0.1",
                Database = myDatabase,
                UserID = myUserName,
                Password = myPassword,
                ConnectionTimeout=60,
                Port = 3306,
                AllowZeroDateTime = true
            };
            _con = new MySqlConnection(_connectionStr.ConnectionString);

            try
            {
                _con.Open();
            }
            catch
            {
                MessageBox.Show("Error, help i can't get connected!");
            }

希望这有效!

于 2013-05-12T11:13:36.613 回答