欢迎您来到腾讯云!积分商城

腾讯云腾讯云论坛

 找回密码
 立即注册
忘了密码?

扫一扫,访问微社区

快捷导航
搜索
查看: 1209|回复: 0

[经验分享] 数据导入失败--Access denied; you need(at least one of) the SUPER privil...

[复制链接]

6

主题

0

好友

600

积分

程序猿[LV2]

Rank: 2Rank: 2

云币
2040
威望
600
发表于 2018-1-15 03:59:18 |显示全部楼层 |未分类
问题:
使用.sql文件向腾讯云 cdb for mysql  5.6 5.7版本实例导入数据时报错
ERROR 1227 (42000) at line 67: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

原因 :
导入的数据中存在存储过程,函数,事件,触发器之类的内容,它们的definer和用户当前连在实例上导入的用户不一致
而腾讯云5.6 5.7版本的mysql是没有super权限的

解决方案:
1.使用与definer用户相同的用户执行导入

2.把这些内容的definer调整和当前连接用户一致,或删除掉definer
在 Linux 平台下,可以尝试使用下面的语句去除:
sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/ ' bak.sql > bak_rev.sql

3.先删掉这些函数,事件,触发器之类的内容,导入完数据后在cdb上重建

复现:
用视图测试下,存储过程等类似
1.测试环境
QQ截图20180115023542.png

2.导出备份,还原备份,出现报错
QQ截图20180115024346.png

3.看下备份文件
QQ截图20180115033934.png

4.show create view abc_view; 可以看到这里有个definer用户,该用户正是之前登录数据库实例时使用的用户ypbm,再看下之前导入报错的截图(第2步的截图),导入时用的用户是louis,即开头所说的它的definer和用户(ypbm)当前连在实例上导入的用户(louis)不一致
QQ截图20180115034211.png

5.解决
1)使用与definer用户相同的用户执行导入,即ypbm用户导入
QQ截图20180115035105.png

2)把这些内容的definer调整和当前连接用户一致
QQ截图20180115031245.png

由于definer改成了louis,再使用ypbm的话就失败了


您需要登录后才可以回帖 登录 | 立即注册
您需要登录后才可以发帖 QQ登录

联系我们|腾讯云平台|积分商城|腾讯云官方论坛    

GMT+8, 2018-10-18 23:05 , Processed in 1.183952 second(s), 32 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部