MySQL 要求用户提供 SUPER 权限来执行删除操作

MySQL 要求用户提供 SUPER 权限来执行删除操作

当尝试对表执行删除操作时,mysql 报告以下错误:

错误代码 1227:访问被拒绝;您需要 SUPER 权限才能执行此操作。

但是,我的用户对模式中的所有表都具有此权限:

授予myschema.* 的所有权限至 'my_admin'@'%'

为什么它要求我提供超级权限才能进行删除?

答案1

您确定您没有以某些权限较低的用户身份登录吗?您获得的是登录时所用用户的权限,而不是所有可以登录的用户的权限。

如果[email protected]权限少于,myadmin@%并且您从 10.11.12.13 登录,那么您将获得前者的权限。

\s从 mysql 客户端查看您是哪个“当前用户”,然后查看该SHOW GRANTS FOR用户。

我认为,FLUSH PRIVILEGES执行后您确实做了什么。GRANT

答案2

我遇到了同样的问题。这是由于安装不完整造成的。我无法从命令行以 root 权限运行 mysql,因为我没有设置 root 密码。所以我重新安装了 mysql(不需要)- 哦,是的,首先使用 mysqldump 备份了我的表:mysqldump --all-databases > huge_dump.dump(这没有要求我输入密码)这是关键 - 运行 mysql_secure_installation 脚本:

mysql_secure_installation

Bla Bla Bla - - - 输入当前 root 密码(输入无);由于您尚未设置 root 密码,请按 ENTER

设置 root 密码?[Y/n] y <--- 说是!!新密码:kick_me_hard 重新输入新密码:kick_me_hard 密码更新成功!正在重新加载权限表...。。。成功!

现在您可以使用 phpMyAdmin 或命令行登录:

mysql -u root -p

输入密码:kick_me_hard 输入‘help;’或‘\h’获取帮助 bla bla bla

mysql>

自从你修好了它,现在你就是周围最酷的人了。除非你是周围唯一的人——那么你仍然是周围最酷的人!

答案3

查看表格mysql.*。可能已在该表上设置了一些权限,从而删除了您的访问权限。我知道 MySQL 的权限通常不是这样工作的,但值得一看。

此外,表的文件本身是否具有正确的文件系统权限?如果 MySQL 无法写入它,则可能会使权限子系统混淆,无法判断哪里出了问题。

答案4

另一种可能性是:也许有一个针对该表的触发器(例如删除事件)。如果您删除该表上的行,它将发出触发器,但触发器需要 SUPER 权限才能执行。

相关内容