Ssh

總新手有 SSH 隧道和遠端 MySQL 訪問問題

  • November 11, 2015

我不經常使用 linux 或需要通過 SSH 隧道連接到遠端 MySQL 數據庫,所以請原諒我的無知。我使用的是 Windows 7,需要連接到 Linux 伺服器上的遠端 MySQL 實例。

幾個月來,我一直在成功使用 HeidiSQL 客戶端應用程序。今天發生了兩件事:數據庫移動到新伺服器,我更新了 HeidiSQL,現在我無法登錄 MySQL 伺服器,當我嘗試從 Heidi 收到此消息時:

SQL Error (2003) in statement #0: Can't connect to MySQL server on 'localhost' (10061)

如果我使用 Putty,我可以連接到伺服器並通過命令行獲取 MySQL 訪問權限,包括從數據庫中獲取數據。我認為這意味著我的憑據和地址是正確的,但不明白為什麼將這些相同的詳細資訊放入 HeidiSQL 的 SSH 隧道資訊中不起作用。我還下載了 MySQL Workbench 並嘗試通過該客戶端建立連接並收到以下消息:

Cannot Connect to Database Server

Your connection attempt failed for user 'myusername' from your host to server at localhost:3306:
Lost connection to MySQL server at 'reading initial communication packet', system error: 0

Please:
1 Check that mysql is running on server localhost
2 Check that mysql is running on port 3306 (note: 3306 is the default, but this can be changed)
3 Check the myusername has rights to connect to localhost from your address (mysql rights define what clients can connect to the server and from which machines) 
4 Make sure you are both providing a password if needed and using the correct password for localhost connecting from the host address you're connecting from

通過Google搜尋,我發現它可能與 MySQL 綁定地址有關,但我是第三方分包商,無法訪問此框的 MySQL 設置,系統管理員向我保證我是個白痴和我需要弄清楚。這是完全可能的,但我不知道還能嘗試什麼。

編輯 1 - 我正在使用的客戶端設置

在 Heidi 和 MySQL Workbench 中,我使用以下內容:

SSH 主機 + 埠: theHostnameOfTheRemoteServer.com:22 {這是我可以使用 Putty 的同一主機}

SSH 使用者名: mySSHusername {我用於 Putty 連接的相同使用者名}

SSH 密碼: mySSHpassword {Putty 連接的相同密碼}

本地埠: 3307 {這是在 SSH 設置選項卡上,Heidi 預設為 3307,將其更改為 3306 會給我一個不同的錯誤:SQL 錯誤 (1045) in statement #0: Access denied for user ‘mySQLusername’@’localhost ‘(使用密碼:YES)"}

MySQL 主機: theHostnameOfTheRemoteServer.com {共識似乎是我應該在這裡使用’localhost’}

MySQL 使用者: mySQLusername {我可以使用 Putty 連接一次}

MySQL 密碼: mySQLpassword {與 Putty 一起使用一次}

埠: 3306

首先,確保bind-address=in/etc/my.conf[mysqld]的 設置為新的伺服器 IP 地址。

其次,您需要確保您的使用者仍然可以從您嘗試遠端連接的任何 IP 地址遠端連接到 MySQL。

從 MySQL 命令行執行以下查詢,其中“username”是您嘗試登錄的使用者名,“ipaddress”是您嘗試連接的 IP 地址。

SHOW GRANTS FOR 'username'@'ipaddress';

如果您沒有從上述查詢中獲得任何有效結果,那麼您需要在您嘗試遠端連接的 IP 地址上向您的使用者授予訪問權限。您可以通過執行如下查詢來執行此操作。

GRANT ALL PRIVILGES TO 'username'@'ipaddress' IDENTIFIED BY 'yourpassword';

此外,請確保您連接到/etc/my.cnf. 如果它沒有被port=in顯式設置my.cnf,那麼它使用預設埠3306。您還可以通過執行以下查詢在 MySQL 命令行中檢查 MySQL 正在執行的埠。

SHOW VARIABLES LIKE 'port';

您的 heidi mysql 客戶端正在嘗試連接到“localhost”,而不是遠端 mysq。

將 heidi 配置中的伺服器地址替換為您在 shell 中放入 putty 客戶端的 IP 地址或主機名。

系統管理員向我保證我是個白痴,需要自己弄清楚

1o1

引用自:https://serverfault.com/questions/551740