MySQL导入含有触发器的sql脚本报错解决方案

报错码

ERROR 1419 (HY000): You do not have the SUPER Privilege and Binary Logging is Enabled

解决方案

1. Linux下执行sql脚本

我们一般在linux服务器上导入sql数据库文件可以这样做:
1.在sql文件所在目录打开终端(Terminal);
2.使用如下命令登录到sql:

mysql -u campus_sec_deal -p

回车后输入用户密码即可进入到mysql交互页面;
3.在终端中输入:source xxx.sql。比如我的sql文件为campus_linux.sql,则可以在终端中输入:

source campus_linux.sql

2. 可能的报错

4.当sql脚本中不同表之间设置有触发器,你也许会看到如下报错:

ERROR 1419 (HY000): You do not have the SUPER Privilege and Binary Logging is Enabled

报错原因

因为用户所使用的触发器可能会给实际生产环境中的数据库造成危害,比如企业中不同用户对数据库的权限不一样,如果直接调用触发器可能会造成严重的后果;或者该数据库遭受黑客攻击的时候会对数据造成危害。因此MySQL官方限制了非超级管理员对其功能的使用,并且官方也给了更安全的sql脚本编写模式,这里就不展开了。

解决方案

1.对于企业或重要的生产环境的数据库,推荐使用官方提供的建议,链接如下:

https://dev.mysql.com/doc/refman/8.0/en/stored-programs-logging.html

2.如果你只是为了测试用且不想折腾,推荐使用下面的解决方案:

1.使用终端(Terminal)(非sql交互页面)执行如下指令

whereis my.cnf

2.此时终端会查找并显示该文件所在路径,打开该文件,找到[mysqld],并在其下方加入如下的内容

log_bin_trust_function_creators = 1

3.保存即可,然后在终端(非sql交互页面)执行如下命令即可

service mysqld restart

至此,你已经可以成功导入含有触发器的sql脚本文件了。

不推荐的方法

网上还有另一种方式:
1.使用如下命令登录到sql:

mysql -u campus_sec_deal -p

回车后输入用户密码即可进入到mysql交互页面;
2.执行如下命令:

SET GLOBAL log_bin_trust_function_creators = 1;

注意:这种方式可能会抛出如下错误:

ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation

不推荐此方式,这种方式需要从CLI角度去解决,非常麻烦。


原创不易,一键三连呗~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InetGeek

小编写不动了,给小编加鸡腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值