转移所有权MySQL“就好了一个选项,允许抑制中的定义者语句创建视图,mysqldump生成的语句。这将有助于在数据库之间传输的数据结构不同的安全模型”。

TLDR;

使用mysqlpump与选择- - -跳过- - - - - -定义者而不是,mysqldump

这个故事

这是要求MySQL错误# 246802006年11月29日。这个特性请求得到大型社区的支持。即使我们不能看到的人投票支持这个请求,评论的数量是令人印象深刻。

请求很合理:,mysqldump被广泛使用在应用程序开发过程中,它是一种很常见的实践开发人员的机器之间迁移数据库结构和生产服务器。

想象这样一个情况,开发商Sveta创建一个数据库,并增加了几个对象定义者条款。我们将只使用一个这篇文章,但在现实中,她可以有很多。

一旦你创建一个视图的默认定义者的用户创建这个视图:

这导致问题当另一个用户试图将这种观点导入不同的服务器:

这是61年线的内容:

这是一个创建视图在导入操作失败。

不幸的是,,mysqldump还没有一个选项,允许迁移实在。

但自2015年8月和MySQL 5.7.8我们有一个解决方案,不幸的是,被忽视了,取而代之的是著名的工具,mysqldump

版本5.7.8之后创建它,有一个新的转储工具:mysqlpump的选项- - -跳过- - - - - -定义者并允许迁移数据库对象没有任何问题:

请注意,mysqlpump自动添加创建数据库到转储和完整路径数据库对象。如。创建算法=未定义的视图实在large_tables作为选择因此该方法不能用于迁移的观点,程序,或触发器定义不同数据库在同一台服务器上。

更多信息mysqlpump为什么你应该切换到这个工具,mysqldump读这篇文章,mysqlpump实用程序

雷竞技下载官网MySQL Percona分布是最完整的,稳定的,可伸缩的,和安全,开源MySQL解决方案,提供企业级的数据库环境最关键业务应用程序…和它的免费使用!

raybetapp2下载

订阅
通知的
客人

6评论
最古老的
最新的 大多数投票
内联反馈
查看所有评论
帖木儿Solodovnikov

从用户迁移到用户B呢?

什么是这样的警告:更新mysql。proc设置延迟= '用户B ',推迟=“用户”;
吗?

lefred

嗨Sveta,

谢谢你的博客,mysqldump关于这个问题。我回答与另一篇文章使用相同的例子但是mysqlpump MySQL外壳,必须首选。看到的:https://blogs.oracle.com/mysql/migrate——所有权——-你-存储- routines%2c视图和触发器- - mysql在- 2021

欢呼,

lefred

不为单一文件不是兼容并行加载…不过您可以创建一个单一的zip文件(或焦油,谢谢,…)包含所有

旧金山米格尔Biete巴农

MySQL壳绝对是更好,但有一件事我努力实现是如何转储所有例程的DDL,扣除我的表的DDL…excludeTables应该能够接受通配符或至少可以选择“所有”

缺乏mysqlpump skip-lock-tables选项容易和PXC在严格模式下,出于某种原因,即使不包括表我越来越改变表的索引,使用模式…