2013-07-15 236 views
3

我在做一個小型的聊天程序。我想用c#從mysql數據庫中獲取數據。 但我不斷收到錯誤。c#:連接到php Mysql數據庫

An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll 

Additional information: Unable to connect to any of the specified MySQL hosts. 

我嘗試這樣做:

string MyConString = "SERVER=localhost;" + 
        "DATABASE=databse;" + 
        "UID=root;" + 
        "PASSWORD=passowrd"; 
MySqlConnection connection = new MySqlConnection(MyConString); 

和它的工作。但是,當我嘗試連接到一個比本地主機我得到一個錯誤,和想法,我可以嘗試

感謝

其他一個MySQL DATABSE
+1

錯誤信息說什麼?遠程數據庫是否配置爲遠程訪問?你的應用程序是否有權與互聯網交談? – Chris

+0

這是我得到的錯誤:MySql.Data.dll中發生類型爲'MySql.Data.MySqlClient.MySqlException'的未處理的異常 其他信息:無法連接到任何指定的MySQL主機。 – user2578273

+0

服務器是否可從您的計算機訪問?您是否嘗試通過例如一個命令行MySQL客戶端? – Chris

回答

0

試試這個

//create a MySQL connection with a query string 
MySqlConnection connection = new MySqlConnection("server=localhost;database=cs;uid=root;password=abcdaaa"); 

//open the connection 
connection.Open(); 

//close the connection 
connection.Close(); 
0

你應該檢查遠程連接被允許到您的服務器。 Here你可以找到一些關於這方面的細節。

然後,您應該檢查您在連接字符串中使用的用戶是否具有從localhost以外的訪問權限。引用自this回答:

是您試圖連接的用戶允許從您的主機連接 ?有關此更多信息,請參閱 http://dev.mysql.com/doc/refman/5.1/en/create-user.htmlhttp://dev.mysql.com/doc/refman/5.1/en/account-names.html, 的MySQL文檔。具體帳戶名稱的語法是'user_name'@'host_name'。如果 您希望能夠通過任何計算機連接到給定的帳戶,則 帳戶名稱將遵循像'user_name'@'%'這樣的語法,其中% 是與任何主機名匹配的通配符。

如果以上都不行,最後應該檢查是否沒有阻止訪問數據庫的防火牆規則。有關here的更多詳細信息,但首先要嘗試的是telnet數據庫服務器上的3306端口(即如果您的數據庫正在使用默認端口)。

PS:我剛剛發現您使用root用戶帳戶連接到數據庫。默認情況下,root只能從本地主機登錄(source):

在Windows上,創建的root帳戶只允許來自本地主機的連接。可以通過指定主機 名稱localhost或IP地址127.0.0.1來進行連接。如果用戶選擇 在安裝過程中啓用遠程計算機的根訪問選項,則 Windows安裝程序將創建另一個根帳戶,該帳戶允許來自任何主機的 連接。

在Unix上,每個root帳戶都允許來自本地主機的連接。可以通過指定主機名localhost,IP地址127.0.0.1或實際的主機名或IP地址來建立連接。

所以你應該開始你的調查與用戶的訪問級別。如果root被限制在本地主機上,那麼保留它就是個好主意(出於安全原因),並創建一個新的用戶,通過它從應用程序遠程訪問數據庫(更多詳細信息,請參閱here)。