另一个IP的插入命令被拒绝

时间:2019-05-15 12:47:41

标签: java mysql hibernate proxy

Ya ALI
我正在代理服务器后面使用Selenium WebClient和WebDriver。
通过我的MySQL DB服务器上的休眠完成数据库事务。 我对以下错误感到困惑:

Caused by: java.sql.SQLSyntaxErrorException: INSERT command denied to user 'user'@'**another_IP**' for table 'myTable'

我对“ another_IP ”是我的代理IP这个事实完全感到困惑,但是我仅将代理用于Selenium而不是Hibernate连接!!!
换句话说,我的VPS服务器(不仅发送Web请求,还通过Hibernate在远程MySQL数据库服务器 DB_Server_IP 上进行数据库事务) ,具有 My_IP ,并且我正在通过具有IP another_IP 的代理将网络请求发送到网页,而不是数据库事务。现在,我的数据库服务器应该只从 My_IP 接收数据库事务请求,但从 another_IP 接收!

2 个答案:

答案 0 :(得分:0)

没有足够的信息来知道为什么'user'@'**another_IP**'试图在您的MySQL数据库上执行INSERT;也许您使用休眠的应用程序也位于代理之后。

无论如何,如果您想通过允许'user'@'**another_IP**'执行INSERT来解决此问题,则必须授予GRANT的权限。

为此,您只需要发出以下命令:

GRANT INSERT ON db.myTable TO 'user'@'%';

dbmyTableuser的值替换为相应的值。通配符%将在任何 IP地址上授予user所需的INSERT特权;因此,无论您的代理服务器切换到哪个IP地址,休眠都可以执行这些INSERT

请注意,如果您尝试从同一代理后面运行此命令,则可能会遇到类似的 privilege 相关问题,因此请确保从用户和主机运行该命令可以访问您的MySQL数据库。

希望这会有所帮助。

答案 1 :(得分:0)

在这种情况下,休眠与无关。

我认为您没有为该ip上的MySQL用户帐户赋予足够的特权。

执行以下SQL:GRANT SELECT, INSERT, DELETE ON db.* TO 'user'@'anotherip';

,然后尝试执行INSERT查询。

更新:

如果问题仍然存在,请使用该ip创建一个MySQL帐户:

执行以下SQL:CREATE USER 'user'@'anotherip' IDENTIFIED BY 'password';

,然后使用插入查询执行以上命令。