linux MariaDB
执行 update user set host = ‘%’ where user =‘root’; 报错。
ERROR 1356 (HY000): View ‘mysql.user’ references invalid table(s) or column(s) or function(s) or def
centOs7.6已经不支持MySQL,转为使用MariaDB作为数据库;
centOs8 已经停止维护过时了;
使用Navicat去连接MariaDB发现连接不上:
原因分析:
根据SQL响应异常来看,第一反应应该是表/字段/方法异常或者是权限异常,但是检查了用户权限与数据库结构后,排除了这两个问题
细看之下,发现了这个提示:of view lack rights to use them
,这里面提到了view
也就是视图,是不是说明,mysql.user不是一张表
MariaDB官方资料说,mysql.user从10.4版本开始,不再是一张表而是一个视图
并且提供了一个新表mysql.global_priv来替代mysql.user,而且提供了一个新的命令:ALERT USER!
解决方案:
- 编辑mysql.global_priv表:
UPDATE mysql.global_priv SET Host=‘%’ WHERE User=‘root’;
别忘了刷新一下权限:
flush privileges;