解决 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');