问题描述:
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.远程主机用自己的密钥解密收到的用户名和密码,然后校验用户名和密码是否正确,如果正确则登陆成功。