解决 MySQL 错误 1356 (HY000)

当你遇到 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 错误时,通常是由于 MariaDB 或 MySQL 版本更新导致的视图引用问题。

示例

UPDATE mysql.user SET Host='%' WHERE User='root';

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

解决方案

更新 MariaDB 的 mysql.global_priv 表

在 MariaDB 10.4 及以上版本中,mysql.user 表已被替换为视图,实际数据存储在 mysql.global_priv 表中。

步骤:

  • 更新 mysql.global_priv 表:

UPDATE mysql.global_priv SET Host='%' WHERE User='root';

  • 刷新权限:

FLUSH PRIVILEGES;

使用 ALTER USER 命令重置密码

对于 MariaDB 10.4.4 及以上版本,可以使用 ALTER USER 命令来重置用户密码。

示例:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

使用 SET PASSWORD FOR 命令重置密码

对于 MariaDB 10.4.4 以下版本,可以使用 SET PASSWORD FOR 命令来重置用户密码。

示例:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');

相关推荐
无敌最俊朗@19 分钟前
Qt面试题day01
java·数据库·面试
q***498620 分钟前
MySQL数据的增删改查(一)
android·javascript·mysql
ivanfor6662 小时前
多租户架构的三级权限体系:设计逻辑与精准控制实现
java·开发语言·数据库
TDengine (老段)3 小时前
TDengine IDMP 重塑智慧水务运营(内附 Step by Step 步骤)
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
LSL666_6 小时前
1 概述及简单登录(不涉及数据库)
数据库·servlet
q***06479 小时前
MySQL的UPDATE(更新数据)详解
数据库·mysql
8***B9 小时前
MySQL性能
数据库·mysql
q***72199 小时前
oracle使用PLSQL导出表数据
数据库·oracle
数据库生产实战9 小时前
Oracle DG备库日志切换解析,Private strand flush not complete如何理解?(基础知识)
数据库·oracle
百***75749 小时前
从 SQL 语句到数据库操作
数据库·sql·oracle