在准备从一台服务器导出mysql 的存储过程到另外一台机器数据库的时候,发现一直报错
ERROR 1227 (42000) at line 25: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
网上一查原来是definer的问题,利用 mysqldump -R导出的存储过程包含以前库的数据库名,新库名不一样。
mysqldump dbName -R -d -t -uroot -p > procedure.sql
或者gzip
mysqldump dbName -R -d -t -uroot -p > gzip -9 | procedure.gz
这时需要修改definer为新的库名
利用vi命令全局替换
:1,$ s/oldDBName/newDBName/g
替换后,再利用mysql命令导入
mysql -h ip -u root -p < procedure.sql
若是gzip压缩后的文件
gunzip < procedure.gz | mysql -h ip -u root -p
遇到两次了,就记录下