当尝试对表执行删除操作时,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 权限才能执行。