我在C#中,需要遠程連接到一臺Linux服務器,以便連接到一個Amazon RDS數據庫的可執行文件。C#編程遠程連接到Linux服務器連接到Amazon RDS數據庫
在Windows服務器上可執行的生活。由於權限,只有Linux服務器才能連接到RDS數據庫。由於C#可執行文件需要來自數據庫的信息,因此我發現自己需要先連接到Linux服務器,然後再從那裏連接到數據庫。
// include files
using MySql.Data;
using MySql.Data.MySqlClient;
using Renci.SshNet;
//...
using (var client = new SshClient("server.amazonaws.com", "serverUser", privateKeyFile))
{
client.Connect();
MySqlConnection databaseConnection = null;
string connString = "Server=dbServer.rds.amazonaws.com; database=database " +
"UID=databaseUser password=databasePassword";
databaseConnection = new MySqlConnection(connString);
databaseConnection.Open();
string queryString = "SELECT * FROM tbl_table;"; // errors here
// ..... }
我分配,上面寫着查詢字符串時,得到一個錯誤「MySql.Data.MySqlClient.MySqlException:‘無法連接任何指定的MySQL主機’」
我使用SSH.Net形成連接到Linux服務器。我正在使用MySQL Connector來連接和檢索數據庫中的信息。
如果有什麼錯我的代碼,我會非常感激它被指出,但我敢肯定,我錯過了一些必要的步驟,以便正確地連接到數據庫。我注意到其他問題提出類似的問題,但他們要麼沒有使用RDS DB,要麼不需要通過C#進行SSH登錄。
編輯:自從發佈這個,我執行此代碼的服務器已被授予訪問RDS數據庫。我目前沒有時間嘗試發佈解決方案。我可以說的是,在獲得訪問權限後,只有使用MySql連接器才能順利運行。
你究竟想做什麼。打開一個ssh會話到一臺機器,然後試圖從Windows機器打開一個sql連接沒有做任何事情。您可以使用ssh會話執行sql命令行操作。或者你需要在linux系統上有一個服務器,你可以與之交談以轉發請求。 – pm100
對不起,我知道這是一個很大的混亂。 C#可執行文件需要來自數據庫的信息,因爲它使用SqlDataReader對象來獲取某些方法的行信息。我不反對在Linux上有一個服務,但是我沒有看到自己能夠使用這些對象。我繼承了這個項目並且時間有限,所以我不想嘗試改變使用該對象的所有任務與使用其他任務。 會使用SSH會話來執行SQL命令行動作仍然允許我這樣做嗎?我不確定你的意思。 – r19996
這是糟糕的設計。您應該在Linux機器上創建一個暴露API的Web應用程序,然後從Windows機器使用該API訪問數據庫。你正在爲自己解決各種安全問題。 – Icemanind