首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误1449 (HY000):指定为定义者的用户('mysql.infoschema'@'localhost')不存在

问错误1449 (HY000):指定为定义者的用户('mysql.infoschema'@'localhost')不存在
EN

Stack Overflow用户
提问于 2020-06-01 08:08:06
回答 5查看 26.3K关注 0票数 15

我试图在ubuntu上列出mysql数据库中的所有表。但我一直都在犯这个错误;

代码语言:javascript
复制
mysql> use mysql;
Database changed
mysql> show tables;
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

我检查了mysql版本:

代码语言:javascript
复制
mysql  Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)

因此,它似乎是mysql的最后一个版本。

如何纠正此错误?

请帮帮忙

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-06-01 09:26:42

如果数据库中有任何视图/触发器(在您的例子中是mysql),而定义器(换句话说,是用户)是视图的定义者,但用户本身却不存在,则会发生此错误。mysql的新安装应该有这个用户。

代码语言:javascript
复制
mysql> select user,host from mysql.user where user='mysql.infoschema';
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
+------------------+-----------+
1 row in set (0.00 sec)

具有以下权限:

代码语言:javascript
复制
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)

由于某些原因,用户在用户列表中丢失/删除,这也是为什么当您列出表时,它还会检查其中的视图,并抱怨缺少定义器。

解决方案:

只需创建具有上述权限的用户,就可以停止显示错误。

创建用户:

代码语言:javascript
复制
mysql> CREATE USER 'mysql.infoschema'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

授予权限:

代码语言:javascript
复制
mysql> GRANT SELECT ON *.* TO `mysql.infoschema`@`localhost`;
Query OK, 0 rows affected, 1 warning (0.00 sec)
票数 3
EN

Stack Overflow用户

发布于 2021-02-10 03:48:15

  1. 删除有问题的用户
代码语言:javascript
复制
DROP USER 'mysql.infoschema'@'localhost';

解决方案的其余部分就像以前的答案一样。

  1. 再次创建用户
  2. 授予it权限
代码语言:javascript
复制
mysql> CREATE USER 'mysql.infoschema'@'localhost' IDENTIFIED BY 'password';

mysql> GRANT SELECT ON *.* TO `mysql.infoschema`@`localhost`;
票数 27
EN

Stack Overflow用户

发布于 2021-10-25 13:58:11

我将我的用户表从另一个mysql服务器转移到一个新的安装中,并遇到了这个错误。因此,如果您没有mysql.infoschema用户,可以尝试:

代码语言:javascript
复制
sudo systemctl stop mysql

sudo mysqld --upgrade=FORCE

这是为我准备的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62127983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档