[英]Cannot connect to my linux server MySQL DB
我下面的MySQL連接代碼正在“捕獲”此錯誤:“無法連接到任何指定的MySQL主機。”
我的數據庫位於我的Linux網站上,並且我已使用%啟用了遠程訪問,因此任何人都可以訪問該數據庫。
我的代碼是.NET C#,我有一個winform。
string server = "http://www.mywebite.net";
string database = "mywebsite_app";
string uid = "admin";
string password = "Password";
string connectionString;
connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
MySqlConnection dbConn;
try
{
dbConn = new MySqlConnection(connectionString);
dbConn.Open();
if (dbConn.State.ToString() != "Open")
{
this.Text = "could not open database connection";
}
else
{
this.Text = "database connection opened";
}
}
catch (Exception ex) // catch on general exceptions, not specific
{
this.Text = ex.Message;
}
謝謝你的幫助...
如果您的mysql數據庫位於遠程主機上,那么通常您會很不幸運地嘗試遠程連接到該數據庫。 托管提供商通常會阻止遠程mysql訪問。
嘗試使用ssh-tunneling。 下載膩子http://www.chiark.greenend.org.uk/~sgtatham/putty/
打開命令行,然后從安裝目錄執行膩子
putty username@remote_mysqlhost -L 3306:localhost:3306
或者您可以使用gui,用mysql遠程地址填充地址,但不要打開連接。
轉到ssh隧道,添加新的轉發端口3306,並將目標作為localhost:3306。
關於為什么目的地是localhost的原因,是因為目的地是ssh會話看到的內容。 因為您已經在ssh會話中連接到遠程服務器,所以mysql主機是本地的。
這也可能是dmz的設置。 您可以使用膩子創建dmz網關,以使其通過dmz網絡中的任何計算機。 但是網關后面的計算機不會公開暴露於互聯網。
不要忘記點擊添加按鈕,以確保將配置添加到隧道列表。
打開連接並使用您的密碼(ssh用戶和密碼,通常與虛擬主機控制面板的用戶和密碼相同)
現在,您可以通過本地主機連接到mysql,而不是連接到遠程mysql。 它會通過膩子通過隧道傳輸到遠程mysql。
嘗試首先使用mysql管理工具進行連接。 測試連接是否成功。
從用戶角度來看,ssh隧道的工作方式與vpn幾乎相同。 但無需在遠程主機上設置VPN服務器的麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.