2013-05-12 100 views
0

我正在連接到一個MySQL數據庫在C#中,只要我輸入服務器地址爲「本地主機」或它的IP,但一切正常,但如果我嘗試遠程IP它失敗:C#的Mysql連接只能在本地主機上工作

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."); 
} 

測試:

  • 沒有防火牆限制
  • 在不同的計算機同樣的錯誤
  • 已經嘗試過與不同的遠程數據庫,所有組的權限和訪問來自其他來源
+1

遠程主機是否允許非本地主機連接?出於安全原因,MySQL的默認配置可能不允許來自其他主機的連接。 – Fox32 2013-05-12 09:24:40

+0

感謝您的答覆,但我已經從多個實例訪問相同的數據庫(PHP,Android應用程序...),所以非本地主機連接被允許... – ascallonisi 2013-05-12 10:21:32

回答

0

如果你的MySQL服務器,然後,

  • 檢查你端口是否開放。 (大概3306)
  • 在my.ini文件更改綁定地址(來自127.0.0.1至0.0.0.0)
  • 仔細檢查您嘗試連接到服務器的用戶有必要的權限

如果它不是你的mysql服務器,那麼,

  • 詢問供應商他們是否支持遠程連接。
+0

謝謝,我試圖連接到另一臺機器上的MySQL服務器(相同的LAN )和遠程服務器,端口爲3306,兩者都已在使用中,因此可以訪問並且用戶具有所有必要的權限。非常奇怪...... – ascallonisi 2013-05-12 10:26:46

+0

你說得對第二點,我忘了編輯bind-address!我沒有想到,通過PHP腳本在json中返回所請求數據的每一個對db(android-app和web-app)的訪問都是通過它進行的,所以我沒有任何問題。非常感謝! – ascallonisi 2013-05-12 13:42:52

+0

歡迎來到:) – onurfoca 2013-05-13 13:10:29

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!"); 
      } 

希望這個作品!

+0

這個問題存在於其他地方,但是這種建立連接的方式比我的要更加細緻和優雅,所以我會開始使用它。謝謝你的提示! – ascallonisi 2013-05-12 13:47:26

+0

@ user2374511不客氣! :) – Obama 2013-05-12 13:49:21

0

也許您的MySQL服務器未配置爲偵聽您的任何IP接口。 也許這只是聽你的「本地主機:3306」

檢查它在你的MySQL服務器配置文件「綁定地址」。

+0

非常感謝,解決了我的問題。 – ascallonisi 2013-05-12 13:44:03

相關問題