在往navicat的数据库导入一个sql文件时出现1449The user specified as a definer('root'@'%') does not exist的错误,百度发现很多文章都说要执行sql语句:
grant all privileges on *.* to monitor@"%" identified by ".";
运行后发现并无作用,于是查找解决办法,为什么这条语句没有生效,发现mysql8中已经不支持grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option这种写法,应该使用下面这条语句:
grant all privileges on *.* to 'root'@'%' ;
执行后发现又有点小问题,You are not allowed to create a user with GRANT,于是搜索这条语句,然后发现mysql8.0无法给用户授权或提示,而8.0以前的版本可以,8.0之后必须先创建用户,再给授权,命令如下:
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
之后我们再授权:
grant all privileges on *.* to 'root'@'