【问题标题】:Cannot call Remote MySQL database using SSH tunneling无法使用 SSH 隧道调用远程 MySQL 数据库
【发布时间】:2017-07-20 13:16:21
【问题描述】:

我有两个系统,其中一个系统具有 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'

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

 [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'
    

但我不想这样做,因为它会接受来自本地网络的所有系统的连接。我只想授予对 192.168.0.55 的访问权限。

【问题讨论】:

    标签: mysql ssh-tunnel


    【解决方案1】:

    您的凭据不匹配。

    您已授予对'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'
    

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 2018-11-06
      • 2015-12-02
      • 1970-01-01
      • 2020-11-20
      • 2012-08-08
      • 2019-07-15
      • 2021-04-05
      • 1970-01-01
      相关资源
      最近更新 更多