我试图在ubuntu上列出mysql数据库中的所有表。但我一直都在犯这个错误;
mysql> use mysql;
Database changed
mysql> show tables;
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist我检查了mysql版本:
mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)因此,它似乎是mysql的最后一个版本。
如何纠正此错误?
请帮帮忙
发布于 2020-06-01 09:26:42
如果数据库中有任何视图/触发器(在您的例子中是mysql),而定义器(换句话说,是用户)是视图的定义者,但用户本身却不存在,则会发生此错误。mysql的新安装应该有这个用户。
mysql> select user,host from mysql.user where user='mysql.infoschema';
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
+------------------+-----------+
1 row in set (0.00 sec)具有以下权限:
mysql> show grants for 'mysql.infoschema'@'localhost';
+-------------------------------------------------------+
| Grants for mysql.infoschema@localhost |
+-------------------------------------------------------+
| GRANT SELECT ON *.* TO `mysql.infoschema`@`localhost` |
+-------------------------------------------------------+
1 row in set (0.00 sec)由于某些原因,用户在用户列表中丢失/删除,这也是为什么当您列出表时,它还会检查其中的视图,并抱怨缺少定义器。
解决方案:
只需创建具有上述权限的用户,就可以停止显示错误。
创建用户:
mysql> CREATE USER 'mysql.infoschema'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)授予权限:
mysql> GRANT SELECT ON *.* TO `mysql.infoschema`@`localhost`;
Query OK, 0 rows affected, 1 warning (0.00 sec)发布于 2021-02-10 03:48:15
DROP USER 'mysql.infoschema'@'localhost';解决方案的其余部分就像以前的答案一样。
mysql> CREATE USER 'mysql.infoschema'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT SELECT ON *.* TO `mysql.infoschema`@`localhost`;发布于 2021-10-25 13:58:11
我将我的用户表从另一个mysql服务器转移到一个新的安装中,并遇到了这个错误。因此,如果您没有mysql.infoschema用户,可以尝试:
sudo systemctl stop mysql
sudo mysqld --upgrade=FORCE这是为我准备的。
https://stackoverflow.com/questions/62127983
复制相似问题