暂无图片
mariadb权限 ERROR 1356 (HY000)
我来答
分享
侯志恒
2022-11-11
mariadb权限 ERROR 1356 (HY000)

想更新一个用户的host为'%',但是提示报错

update user set host='%' where user='uat_ms_dic';

ERROR 1356 (HY000): View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them


我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
shunwahⓂ️

根据SQL响应异常来看,第一反应应该是表/字段/方法异常或者是权限异常,但是检查了用户权限与数据库结构后,排除了这两个问题

细看之下,发现了这个提示:of view lack rights to use them,这里面提到了view也就是视图,是不是说明,mysql.user不是一张表?MariaDB官方资料,mysql.user从10.4版本开始,不再是一张表而是一个视图
并且提供了一个新表mysql.global_priv来替代mysql.user,而且提供了一个新的命令:ALERT USER,所以,解决方案就来了!

解决方案:

  1. 编辑mysql.global_priv表:
UPDATE mysql.global_priv SET Host='%' WHERE User='root';
  1. 别忘了刷新一下权限:
flush privileges;
暂无图片 评论
暂无图片 有用 1
暂无图片
侯志恒
题主
2022-11-11
谢谢,刚找到了 mariadb 可以这样修改: rename user 'root'@'localhost' to 'root'@'%';
virvle
2022-11-11
严少安
2022-11-14
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏