我有两个系统,其中一个系统具有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")
如果我更改这样的权限条件,那么它适用于基于ssh的远程数据库连接
sql>GRANT CREATE,DELETE,UPDATE,SELECT ON employee.* TO 'john'@'%' IDENTIFIED BY 'john1'
但我不想这样做,因为它会接受来自本地网络的所有系统的连接。我想只允许访问192.168.0.55。
答案 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'