pah*_*nin 22 mysql shared-hosting
我一直在使用这个免费托管网站进行开发和测试.
我无法使用UPDATEMySQL命令更改数据库值,即使允许用户使用来自cPanel的所有命令.
然后,我已经使用默认用户对其进行了测试,但仍然无法正常工作.但是,它在我的系统上工作正常.
MySQL的错误是
UPDATE command denied to user 'test'@'localhost' for table 'content'
其他命令工作正常.
为什么会这样?它怎么能被阻止?或者任何解决方案?
我非常确定用户有权使用该UPDATE命令,因为我可以将phpMyAdmin与同一用户一起使用并修改MySQL字段.
我不明白为什么来自PHP的某些MySQL命令被拒绝给予所有特权并且可以通过phpMyAdmin完成所有操作的用户.鉴于该脚本,phpMyAdmin和SQL主机位于同一服务器上.
pah*_*nin 33
对于那些试图回答这个问题的人来说,这是我真诚的感谢.我找到了问题和解决方案.
我的SQL查询是这样的
UPDATE `dblayer`.`test` SET `title` = 'hello a' WHERE `test`.`id` =1;
Run Code Online (Sandbox Code Playgroud)
我从phpmyadmin得到它,它在我的系统上完美运行.但是,当我在服务器上工作时,它不起作用,它说命令被拒绝可能是因为
`dblayer`.`test`
Run Code Online (Sandbox Code Playgroud)
我试图全局选择表(或类似的东西,我不确定),但如果我的SQL查询是
UPDATE `test` SET `title` = 'hello a' WHERE `test`.`id` =1;
Run Code Online (Sandbox Code Playgroud)
它也适用于我的服务器.
正如其他所有人所说,这是权限问题。我确定您可能已经检查过,但以防万一。登录到phpmyadmin后,运行以下命令:
SELECT USER();
Run Code Online (Sandbox Code Playgroud)
如上面所有注释所示,这应该吐出'test'@'localhost'
然后跑
SHOW GRANTS FOR 'test'@'localhost'
Run Code Online (Sandbox Code Playgroud)
那应该给您该用户的所有特权。获得结果时,选择“选项”,“全文本”,然后单击“转到”以获取全文本。
确保输出中的权限具有以下内容:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `your_database`.* TO 'test'@'localhost'
Run Code Online (Sandbox Code Playgroud)
在某些托管设置上,您可能无法获得GRANT ALL,但只要您拥有INSERT,UPDATE,DELETE,您肯定就可以更新数据
小智 5
您的用户没有正确的权限.您需要授予它访问UPDATE命令的权限,如下所示:
GRANT UPDATE ON database.* TO test@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)
如果您使用图形工具来管理数据库 - 例如PHPMyAdmin或SQLYog等 - 您应该能够使用这些工具来启用这些权限.