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 接收!
答案 0 :(得分:0)
没有足够的信息来知道为什么'user'@'**another_IP**'
试图在您的MySQL数据库上执行INSERT
;也许您使用休眠的应用程序也位于代理之后。
无论如何,如果您想通过允许'user'@'**another_IP**'
执行INSERT
来解决此问题,则必须授予GRANT
的权限。
为此,您只需要发出以下命令:
GRANT INSERT ON db.myTable TO 'user'@'%';
将db
,myTable
和user
的值替换为相应的值。通配符%
将在任何 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';
,然后使用插入查询执行以上命令。