...想在另一台linux下的mysql上恢复数据,多个数据库文件,出现1146错误...

发布网友 发布时间:2022-04-24 02:47

我来回答

4个回答

热心网友 时间:2022-04-08 12:06

项目上 MySQL 还原 SQL 备份经常会碰到一个错误如下,且通常出现在导入视图、函数、存储过程、事件等对象时,其根本原因就是因为导入时所用账号并不具有SUPER 权限,所以无法创建其他账号的所属对象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常见场景:1. 还原 RDS 时经常出现,因为 RDS 不提供 SUPER 权限;2. 由开发库还原到项目现场,账号权限等有所不同。

处理方式:

1. 在原库中批量修改对象所有者为导入账号或修改 SQL SECURITY 为 Invoker;2. 使用 mysqlmp 导出备份,然后将 SQL 文件中的对象所有者替换为导入账号。
二、问题原因我们先来看下为啥会出现这个报错,那就得说下 MySQL 中一个很特别的权限控制机制,像视图、函数、存储过程、触发器等这些数据对象会存在一个 DEFINER 和一个 SQL SECURITY 的属性,如下所示:

热心网友 时间:2022-04-08 13:24

你应该想把它做成镜像在拷贝过去恢复数据,否则,可能会造成文件缺失,所以会出现错误。追问怎么制作镜像?我复制过来的表 类型的为innodb的要是直接复制MYSIAM的就可以直接认出来了!

热心网友 时间:2022-04-08 14:58

你是拷贝的(/var){可能在别的目录下}/lib/mysql里面的数据么,直接拷贝里面的数据库文件到新安装的mysql/var/lib/mysql下就可以了。
以上是正常操作,当然你可以直接诶mysqlmp把数据库文件备份数来,比较慢。
如出现错误:
1.检查mysql版本是否一样或版本比较低,支不支持你所备份里数据库的里面的各种功能(如存储方式到5.0才支持)
2.数据库文件是否破损,尝试repare table 对应表,如还不行退出 使用 mysqlcheck -r 数据库 表名 -uroot -ppass修复
3.还不行的话那就太特殊了。。

热心网友 时间:2022-04-08 16:50

我想知道你为什么不用mysql自带的mysqlmp呢?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com