SSH+MySQL

一、数据库设置

创建用户,设置用户的host为localhost(如果是docker启动的mysql,host需要设置为宿主机的IP)

mysql> grant all privileges on *.* to 'cj'@'81.68.79.183' identified by 'cj';

别忘了刷新设置到内存使其生效

flush privileges;


二、服务器设置

实现的功能为从跳板节点跳转到mysql节点
跳板节点为192.168.101.179
mysql节点为192.168.101.174

2.1 配置免密登陆

ssh-keygen -t rsa

将公钥发送到本机

ssh-copy-id localhost

将私钥发送到需要登陆到本服务器的服务器上

rsync -av id_rsa user@ip:~/.ssh

修改密钥的权限

chmod 600 id_rsa

修改配置文件/etc/ssh/sshd_config中的允许密钥登陆的一条配置

PubkeyAuthentication yes 

重启sshd服务

systemctl restart sshd

2.2 启动ssh隧道

在跳板节点192.168.101.179上执行命令如下,启动隧道

ssh -CPNf -L 0.0.0.0:3307:192.168.101.174:3306 [email protected]

参数解释:

  • C: 使用压缩功能,是可选的,加快速度。
  • P: 用一个非特权端口进行出去的连接。
  • f: SSH完成认证并建立port forwarding后转入后台运行。
  • N: 不执行远程命令。该参数在只打开转发端口时很有用(V2版本SSH支持)
  • L: 创建本地连接。

在跳板节点192.168.101.179上查看进程

[hxr@cos-bigdata-hadoop-01 ~]$ netstat -nap | grep 3307
tcp        0      0 127.0.0.1:3307          0.0.0.0:*               LISTEN      21822/ssh           
tcp6       0      0 ::1:3307                :::*                    LISTEN      21822/ssh

[hxr@cos-bigdata-hadoop-01 ~]$ netstat -nap | grep 192.168.101.174
tcp        0      0 192.168.101.179:44102   192.168.101.174:22      ESTABLISHED 21822/ssh

在mysql节点192.168.101.174上查看进程

[root@cos-bigdata-mysql ~]# netstat -nap | grep 192.168.101.179
tcp        0      0 192.168.101.174:22      192.168.101.179:44102   ESTABLISHED 25435/sshd: root@pt


三、连接数据库

3.1 Navicat客户端连接

流程是先登录到ssh配置的服务器上,然后执行登陆MySQL的命令。所以单纯的希望通过Navicat的ssh通道进行连接,其实不需要创建ssh通道,只需要找一台可以访问mysql节点的跳板机即可,ssh上配置该跳板机的登陆方式,常规中配置数据库的连接方式。

现在我们配置了ssh通道,那么就通过该通道来代理 mysql节点 来实现数据库的访问。

①首先设置ssh连接,连接到服务器


image.png

②设置mysql连接


image.png

点击测试连接,跳出连接成功;如果不使用ssh连接,直接使用mysql连接,则连接失败。

如果希望只能通过本机去连接MySQL,那么在执行启动ssh隧道命令时,将0.0.0.0更换为127.0.0.1或直接去掉(缺省就是127.0.0.1)。那么就必须要先ssh登陆到跳板机,才能被跳板机正向代理到mysql节点。

3.2 Mysql命令连接

mysql -h 192.168.101.179 -P 3307 -uroot -pabc123

3.3 JDBC连接

jdbc:mysql://192.168.101.179:3307/${DB}?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true

你可能感兴趣的:(SSH+MySQL)