无法使用SSH隧道调用远程MySQL数据库

时间:2017-03-01 09:24:56

标签: mysql ssh-tunnel

我有两个系统,其中一个系统具有MySQL数据库(IP地址为192.168.0.149-以centos运行),另一个系统具有Web应用程序(IP地址192.168.0.55-在Windows中运行)。我正在远程调用Web应用程序中的数据库。我想用ssh连接数据库,所以我用putty来做这件事。

首先我运行putty并启动从端口3535到192.168.0.149:3306的端口转发。

我从我的应用程序中调用这个

orm.RegisterDataBase("default", "mysql", "john:john1@tcp(127.0.0.1:3535)/employee?
charset=utf8&parseTime=True")

我在主机MySQL数据库中创建一个像这样的用户

mysql>create user john
mysql>GRANT CREATE,DELETE,SELECT,UPDATE ON employee.* TO 'rahul'@'192.168.0.55' IDENTIFIED 
BY 'john1'

现在我运行我的Web应用程序。当我运行它时,我收到以下错误

 [ORM]2017/03/01 16:18:57 register db Ping `default`, Error 1045: Access denied for user 
'john'@'192.168.0.149' (using password: YES)
  

工作场景

如果我不使用SSH并直接从应用程序调用数据库,则此用户访问员工数据库没有问题。

   orm.RegisterDataBase("default", "mysql", "john:john1@tcp(192.168.0.149:3306)/employee?
    charset=utf8&parseTime=True")
  1. 如果我更改这样的权限条件,那么它适用于基于ssh的远程数据库连接

    sql>GRANT CREATE,DELETE,UPDATE,SELECT ON employee.* TO 'john'@'%' IDENTIFIED BY 'john1'
    
  2. 但我不想这样做,因为它会接受来自本地网络的所有系统的连接。我想只允许访问192.168.0.55。

1 个答案:

答案 0 :(得分:0)

您的凭据不匹配。

您已授予对'rahul'@'192.168.0.55'的访问权限,但您正在'john'@'192.168.0.149'进行连接。

尝试授予对实际连接的用户的访问权限:

GRANT CREATE,DELETE,SELECT,UPDATE ON employee.* TO 'john'@'192.168.0.149' IDENTIFIED BY 'john1'