MySQL 报错1449:The user specified as a definer (’mysql.infoschema‘@’localhost‘) does not exist

Posted 救赎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 报错1449:The user specified as a definer (’mysql.infoschema‘@’localhost‘) does not exist相关的知识,希望对你有一定的参考价值。

mysql 1449错误


目录


解释与前言

这个报错的意思是MySQL的自身权限给删了或者说你自己的权限你没了,不过不用担心,这篇博客帮你解决

前言:看到这四个东西没,我本以为是没有任何用的,然后我就删了,删完之后还能连着数据库继续用,继续编辑.sql语句,然后等再次打开用的时候发现没办法连接了,提示1449错误,如果你也是因为数据库里面有重要的东西,不敢轻易的卸载重装的请往后看。


博主试过的方法

比如

1. grant all privileges on *.* to root@"%" identified by "password";
-- 添加权限用户 来解决1449错误
2.  flush privileges;

我这还是出现了1064错误(大概就是说我的版本不认这个程序),如下:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by "password"' at line 1

因为我的MySQL版本为8,我又试着这样依次输入

create user 'root'@'%' identified by 'password';

grant all privileges on *.* to 'root'@'%';

等我敲完之后,他都成功了并且提示OK了

Query OK, 0 rows affected (0.00 sec)

我本以为我的问题解决了,但是后来我才知道 0 rows affected (0.00 sec 这个玩意是无效的意思,所以他还是没有权限


博主的解决办法(Navicat)

然后我突然想到一个办法,具体的解决办法的思路如下:

  1. 既然删了,那就再补充回来呗。
  2. 创建四个与原先一样的不就OK了。
  3. 首先在navicate中操作,创建与那文件一样的名字
  4. 然后赋给所有权限就OK了

具体操作步骤如下:

1.新建用户

2.点击服务权限(将所有权限全部打对勾)

3.然后点击常规(将用户名与主机补全)

用户名如下:
mysql.infoschema
mysql.session
mysql.sys
root


4. 点击保存即可

博主的解决办法(cmd)

如果创建完用户之后Navicat可以赋权限的话还是尽量用Navicat,如果用命令行赋值的话可能要麻烦一些

create user '//这里是你需要创建的用户的名字'@'localhost' identified by '//单引号里是你mysql的密码';

用创建 mysql.infoschema 举例:

create user 'mysql.infoschema'@'localhost' identified by '123456';
create user 'mysql.session'@'localhost' identified by '123456';
create user 'mysql.sys'@'localhost' identified by '123456';

前言:给用户赋权限,这里要啰嗦一下,有几种情况,博主试的前两种方法都报1064错误,提示语法有错误,所以一种不行就试另一种,具体为什么不行。。。我也不知道,另外如果前三种有效的话还是用前三种,做后一种的话会缺少一个权限,但是不知道是哪个权限,最后都操作完,如果还是没有,用

FLUSH PRIVILEGES;

去刷新!!

格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by “用户密码”;

这里权限可以用 all 来代替表示全部权限,还可以用 *.* 来代表数据库名.表名

grant all privileges on 数据库名.表名.* to 'mysql.infoschema'@localhost identified by '密码';
grant all privileges on *.* to 'mysql.infoschema'@localhost identified by '密码';
grant grant option on *.* to 'mysql.infoschema'@'localhost';
//分开敲(复制)
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'mysql.infoschema'@'localhost';
grant all on *.* to 'mysql.infoschema'@'localhost';

最后还是没有的话记得刷新

FLUSH PRIVILEGES;

如果还是不行,请看评论区各位兄弟的解决办法,最后如果还是不行,对不起,博主个人能力有限,请兄弟再多查阅一番,如果问题解决了。请一定回来指点一下博主或者与博主分享你解决的过程,让博主 “开阔眼界” ,我真的非常感谢

返回目录


推荐BGM: deja vu

Mysql启报错报The server quit without updating PID file

mysql 安装时候安装后启动不成功报错:

Starting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/26765574162f.pid).

技术分享图片


查看报错日志:

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

技术分享图片


解决办法:


1.编辑配置文件:

vim /etc/my.cnf
basedir = /usr/local/mysql
datadir = /data/mysql
socket = /tmp/mysql.sock
log-error = /data/mysql/error.log
pid-file = /data/mysql/mysql.pid
user = mysql
tmpdir = /tmp

2.重新初始化mysql:

./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql --pid-file=/data/mysql/mysql.pid --tmpdir=/tmp

然后再启动就会成功了:

技术分享图片


以上是关于MySQL 报错1449:The user specified as a definer (’mysql.infoschema‘@’localhost‘) does not exist的主要内容,如果未能解决你的问题,请参考以下文章

打开视图 :1449 - the user specified as a definer ('root'@'%')does not exist

mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法

1449-The user specified as a difiner(‘aa‘@‘%‘) does not exist

1449-The user specified as a difiner(‘aa‘@‘%‘) does not exist

MySQL [Err]1449 : The user specified as a definer ('root'@'%') does not exist

mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法