問題描述:
Navicat連接遠程服務器Mysql報錯:
ERROR 2013 (HY000): Lost connection to MySQL server during query
過程:
Navicat新建連接輸入參數,連接測試輸出成功!
但在連接時報錯:
問題排查:
猜測是不是Navicat問題,所以嘗試使用cmd終端連接:
MySql連接遠程服務器命令
mysql -h[ip地址] -u[用戶名] -p[密碼]
發現終端下連接后報同樣的錯誤。
解決:
Navicat通過ssh連接mysql
1、Navicat連接,現在【常規】面板中填寫mysql服務參數ip、port、mysql用戶名/密碼
2、切換到【SSH】面板中填寫服務器參數ip、port、服務器用戶名/密碼
總結:
通過建立SSH隧道連接MySQL,解決網絡隔離無法直接訪問數據庫的問題。
本文使用的是直接使用Navicat通過ssh連接,還有一種方法是通過xshell端口轉發到Navicat形式感興趣的可以研究一下。
知識點延展:
SSH是什么?
SSH 安全外殼協議(Secure Shell Protocol / SSH)為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平台。
簡單的說,SSH是一種網絡協議,主要用於客戶端與遠程主機的安全鏈接和交互。
安全鏈接的過程是:
1.遠程主機端收到客戶端的登陸請求時先發送自己的公鑰給客戶端
2.客戶端用拿到的公鑰加密用戶名和密碼,然后發送給遠程主機
3.遠程主機用自己的密鑰解密收到的用戶名和密碼,然后校驗用戶名和密碼是否正確,如果正確則登陸成功。