2013-02-26 112 views
6

我有一個C#應用程序可以訪問另一臺計算機上的MySQL服務器。我正在嘗試通過IP來做到這一點。這裏是我的連接字符串:如何使用C#連接到遠程MySQL服務器?

server = "192.168.10.221"; 
database = "restaurantdb"; 
uid = "root"; 
password = ""; 
string connectionString; 
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
mycon = new MySqlConnection(connectionString); 

現在的想法是,我將它連接至其上兩臺計算機都連接到互聯網或Wi-Fi連接。然後我將通過C#編碼的SQL字符串訪問數據庫。現在我也可以通過局域網連接它們,但我不知道如何。

我在我的代碼

{"Access denied for user 'root'@'Crave-PC.lan' (using password: NO)"} System.Exception {MySql.Data.MySqlClient.MySqlException} 

我如何通過網絡訪問服務器的任何想法得到這個例外?

+1

你確定你的密碼沒有錯?它確實連接,雖然你得到訪問被拒絕的錯誤,所以你的證書可能有問題,就像它說的那樣。也許root只能從localhost登錄。創建一個遠程訪問的用戶。 – AmazingDreams 2013-02-26 16:57:41

+0

如何創建一個遠程訪問的主機?我安裝了工作臺 – 2013-02-26 17:04:42

+0

我也有一個用戶名爲'root',沒有密碼 – 2013-02-26 17:05:06

回答

6

問題出在MySQL服務器端,root用戶沒有權限連接remotelly。 爲了讓root用戶permisions到remotelly只連接一個mysql命令行中輸入:

GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY 'rootPass'; 

只是改變「rootPass」對於當前的root密碼,如果根可是沒有密碼的MySQL不會讓你連接,所以你將有爲它定義一個。

單方面說明:作爲一種安全最佳實踐,您應該定義除root以外的其他用戶,以便從客戶端應用程序訪問您的mysql數據庫。

希望它能幫助,

+0

非常感謝!我非常感謝你! – 2013-02-26 17:29:16

+0

即時通訊使用xampp。我如何訪問該命令行,如果我使用phpmyadmin? – Kokombads 2017-11-14 17:05:35

0

一個除了這個線程:

在某些情況下,兩臺計算機連接到同一個網絡,上面定義的連接字符串可能仍然無法儘管的配置工作源計算機並從客戶計算機授予用戶特權。

在這種情況下,請考慮(使用計算機名稱作爲服務器名稱而不是IP地址)(在將源計算機進一步移動並採取更嚴重的措施(如修改Mysql配置文件等)之前)。

  • 第一,授予特權給用戶,如上所述,
  • 但 代替上面提出的連接字符串,嘗試以下 連接字符串:

所以,連接字符串將如下所示:

server = "pc-name-whateveritis"; 
database = "restaurantdb"; 
uid = "root"; 
password = ""; 
string connectionString; 
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
mycon = new MySqlConnection(connectionString); 

源計算機的名稱可能在很多情況下工作,源計算機的IP地址會返回錯誤。

祝你好運!

0

從根目錄更改爲不同的用戶名並設置密碼對於遠程訪問非常有效,因爲當您位於本地主機時,根目錄僅具有完全訪問權限。在使用IP地址的局域網上出現錯誤,請使用計算機名稱。

相關問題