pymysql.err.OperationalError: (1227, 'Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation')
UNSUPPORTED COMMAND: LOAD" [180cc370ef50][-1] [122de094-5108-a00b-f948-180cc370ef50
缘由:
原因是MySQL8版本中新增了一个system_user帐户类型,但是由于root用户没有SYSTEM_USER权限,所以出现问题,把权限加入后即可解决
解决办法:
对没有权限的用户授权,如对root授权
GRANT system_user ON . TO 'root';
解决方法
1、从 sqldump 文件中删除该DEFINER=..语句,或将用户值替换为CURRENT_USER.
2、腾讯云的MySQL 服务器不允许DEFINER其他用户使用语法(根据我的经验)。
您可以使用sed脚本将它们从文件中删除:
sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i oldfile.sql
除此之外
注释掉或删除这些行
SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 1;
SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';
您还可以通过使用 -f 选项加载转储文件的其余部分来忽略错误。
mysql -f <REPLACE_DB_NAME> -u <REPLACE_DB_USER> -h <DB_HOST_HERE> -p < dumpfile.sql
注:如果您将 mysqldump 管道传输到新数据库,解决方案 2 效果很好
如有问题及时沟通
方法一:打开本地文件:#查看是否开启加载本地文件 show variables like 'local_infile';
#开启全局本地文件设置 set global local_infile=on;
方法二:edit connection -点击advanced -others 输入:OPT_LOCAL_INFILE=1;
设置权限
CREATE DEFINER = root@localhost FUNCTION load_data
CREATE DEFINER = root@localhost FUNCTION local_infile
用户没有SYSTEM_USER权限
grant system_user on *.* to 'root';