今天安装了个测试环境,将数据库的数据导了过来,再导出的时候提示错误。
#mysqldump -uroot -p testdb > test.sql
mysqldump: Got error: 1449: The user specified as a definer (‘xxx’@'xxxxxx’) does not exist when using LOCK TABLES
xxx用户是在正式环境建立的用户,但是我是整个数据库备份的,用户和权限应该也会导入才对。查看user表也确实存在此用户。从网上看的资料解决备份是给这个用户增加权限。登入Mysql
mysql> grant all privileges on testdb.* to xxx@’xxxxxx’ identified by ’123456′;
再次导出,成功。
但是将导出的文件导入一个新的数据库,再导出的话还是会出现这个问题,总不能每次都要建立这个个没有用的用户吧。
最后的解决办法是编辑导出的备份文件,将xxx@xxxxxx都改成root@localhost,重新导入就没问题。