mysql导入导出

查看mysql 权限:show grants for `bob`@`pc84.example.com`

 

在导入导出时候出以下问题:

ERROR 1356 (HY000) at line 2388: View 'nxsc.ts_product_attr_v' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

该问题是因为nxsc用户的权限不足造成的,查找后发现该用户没有nxsc数据库的访问权限,添加该权限后OK

 

 

ERROR 1305 (42000) at line 1980: FUNCTION nxsc.get_txn_source does not exist

该问题是由于该函数未导入造成的

 

使用mysqldump -u root -p -ntd -R --triggers=false nxsc>nxsc_trigger.sql

导出数据库触发器和函数部分

 

一定要用--triggers=false开关,否则会报错

 

ERROR 1235 (42000) at line 26: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

 

 

dump出来的数据导入到新服务器的时候,会出现一些存储过程与视图访问的异常,有一个原因是这些routines(view + proc + func)都指定了创建者,也就是definer,definer对该routine权限有特殊含义,所以,解决方法就是记得将mysql.user表也同步过来。当然,最好是重新grant而不是操作该表。

关于存储过程的权限管理,一种是SQL SECURITY INVOKER,一种是SQL SECURITY DEFINER,也就是一种是调用者权限,一种是定义者权限,如果使用第一种,那么执行的时候是以执行者本身的权限来操作存储过程中包含的表。如果是第二种,那么执行的时候,是以该存储过程的定义者权限来操作。

 

 

注意,如果想在导入世后减少definer错误,则存储过程和触发器可以这样做:

 

update proc set definer="root@localhost";

 

view则不行

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值