我使用的是mysql数据库,workbench是Navicat。
首先了解一下 Navicat 如何连接到本地的 MySQL 数据库;不用解释大家都知道,本地服务器的IP地址为127.0.0.1(localhost),所以我们通过Navicat连接本地数据库时必填信息主要有:主机名为127.0.0.1(localhost)、端口(3306)、用户名为数据库用户名(root)以及数据库密码即可成功连接。
那我们现在想要连接远程服务器上的数据库是不是将“主机名或IP地址”改成远程服务器的IP呢?例如46.123.456.9(瞎编的,如有雷同,纯属巧合),我也希望这样子的,就好像springboot连接任意数据库时,只要填写ip、username以及password。但是不死心的你我都试过了,不行!!!
真正实现思路是按照如下两张图对"常规"和"SSH"进行配置:
即 Navicat 先通过 SSH 连接到远程服务器,然后再连接远程服务器上的数据库;那图二中填写的相关连接数据就是服务器IP、服务器用户名以及服务器登录密码;而对于图一中的用户名和密码好理解,就是远程数据库的用户名和密码,容易产生歧义的是“主机名或IP地址”,因为很合理的就认为是远程服务器的IP了;
我觉得这不能称为错误,因为这是 Navicat 连接远程数据库的实现逻辑问题,而不是我们的想法有问题;Navicat 的逻辑是:SSH 通道已建立,那 Navicat 的一切操作自然是建立在远程服务器上,那我再去“常规”中建立数据库连接,就是相对远程服务器的本地操作了,既然是本地的,就应该填写localhost(127.0.0.1)。
总结来说:
"常规"中的用户名和密码指的是数据库的用户名和密码,主机名或IP地址是127.0.0.1;
"SSH"中的用户名和密码指的是远程服务器的用户名和密码,主机名或IP地址是46.123.456.9。