phpMyAdmin用户无法删除视图,报#1227错误,如何授予正确权限?
解决删除MySQL视图时的SYSTEM_USER权限报错问题
自行解决步骤(利用WHM/CPanel权限)
- 先确认视图的定义者:在phpMyAdmin里执行
SHOW CREATE VIEW 你的视图名称;,查看结果里的DEFINER字段。如果这个字段显示的不是你当前使用的数据库用户(比如是root@localhost或其他陌生用户),那就是因为视图由高权限用户创建,当前用户无删除权限。 - 用WHM的root级phpMyAdmin操作:登录WHM,找到
SQL Services下的phpMyAdmin入口(这是root权限的,和你日常用的数据库用户phpMyAdmin不同),登录后找到对应数据库和视图,直接删除;或者修改视图定义者为你的数据库用户,执行语句:ALTER DEFINER='你的数据库用户名'@'localhost' VIEW 你的视图名 AS 原视图的SELECT语句;,之后用自己的用户就能正常删除了。 - 重新授予数据库用户权限:进入CPanel的
MySQL Databases,找到对应数据库用户,重新勾选ALL PRIVILEGES并保存,部分情况是权限同步延迟导致的问题,重新授予可解决。
需要主机商处理的调整项
如果上述方法无效,直接要求主机商做以下操作:
- 给你的数据库用户授予
SYSTEM_USER权限:MySQL 8.0及以后版本,删除非自身定义的视图需要该权限,主机商可执行GRANT SYSTEM_USER ON *.* TO '你的用户名'@'localhost';完成授权。 - 检查MySQL配置:确认是否有配置项限制了普通用户的视图操作权限,需调整
my.cnf里的相关参数,确保普通用户能删除自身有权限的数据库下的视图。 - 修复视图权限属性:若服务器迁移后视图权限继承出现异常,主机商需修复MySQL权限表中的相关条目,确保视图权限与当前数据库用户匹配。
内容的提问来源于stack exchange,提问作者Nightwolf
相关产品推荐
相关产品推荐

