Code前端首页关于Code前端联系我们

Mysql数据库恢复问题,数据库崩溃如何恢复

terry 2年前 (2023-09-30) 阅读数 45 #Mysql
文章标签 Mysql

本文内容列表:

  • 1.我复制了linux下的mysql文件夹,想将数据恢复到linux下的另一个mysql中。多个数据库文件,遇到错误 1146。
  • 2.如何恢复mysql数据库
  • 3.如何修复因断电导致的MYSQL数据库数据损坏
  • 4.如何恢复mysql数据库如何恢复数据

我复制了Linux下的mysql文件夹,想将数据恢复到Linux下的另一个mysql中。多个数据库文件,发生错误1146

MySQL在项目上恢复SQL备份时经常会遇到以下错误,通常发生在导入视图、函数、存储过程、事件等对象时。根本原因是用于导入的帐户没有SUPER权限,因此无法创建属于其他帐户的对象。错误 1227 (42000):访问被拒绝;此操作需要(至少一项)SUPER授权 常见场景: 1、恢复RDS时经常出现,因为RDS不提供SUPER授权; 2、开发库恢复项目现场的账号权限等。

加工方法:

1.批量修改原数据库中对象的所有者为导入的账户或者修改SQL SECURITY为Invoker; 2. 使用mysqldump导出备份,然后将SQL文件中的对象所有者替换为导入的帐户。

2。问题原因首先我们来看看为什么会出现这个错误。那么我们就需要讲一下MySQL中一个非常特殊的权限控制机制。会有视图、函数、存储过程、触发器等数据对象。 DEFINER 和 SQL SECURITY 属性如下:

--视图定义 CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW v_test

--函数定义 CREATE DEFINER=`root `@` %` 函数 `f_test()` 返回 varchar(100) SQL 安全定义器

--存储过程的定义 CREATE DEFINER=`root`@`%` PROCEDURE `p_test`() SQL SECURITY DEFINER

--触发器的定义 CREATE DEFINER=`root`@`%`触发器 t_test

-- 定义一个事件 CREATE DEFINER=`root`@`%` EVENT `e_test`

DEFINER:对象定义器,可以在创建对象时手动指定用户,如果不指定则默认为当前连接用户;

SQL SECURITY:指定用户 有权执行对象的用户有两种选择,一种是DEFINER,另一种是INVOKER。系统默认指定DEFINER; DEFINER:表示按照定义者的权限执行; INVOKER:表示按照调用者的权限执行。

如果导入账户具有SUPER权限,即使对象所有者账户不存在,也可以导入成功。但如果查询时SQL SECURITY对象为DEFINER,则会报错该账户不存在。 ERROR 1449 (HY000): User指定为定义者('root'@'%')不存在

覆盖的优点: 1. 可以避免恢复时DEFINER错误相关的问题; 2、根据输出信息了解备份是否正常执行,防止备份出现无法获取元数据锁进而卡住的情况。

如何恢复mysql数据库

Mysql数据库恢复方法:

第一种方法:

数据库恢复命令:

mysql -u root –password=root密码数据库名备份文件.sql:第二种方法第一步:登录具有管理员权限,进入后台管理界面,点击“数据库-数据恢复”。

第2步:在数据恢复设置中选择“从本地文件恢复”,然后使用右侧的“浏览”按钮找到之前保存的.sql文件。

第三步:点击“提交”按钮后,出现“卷数据已成功导入数据库,是否需要自动导入更多备份?”的问题,一般点击“确定”按钮即可继续。以下数据库文件将被完整导入到当前网页中。此时,系统将再次提示您输入管理员帐户。当您访问该网站地址时,您还会看到所有信息已恢复到备份数据库的内容中。

温馨提示:

无论使用哪种方法备份和恢复数据库,都需要注意的是,备份和恢复时使用的版本必须相同,甚至语言类型也必须一致,否则会出现字符乱码。

如何修复因断电导致的MYSQL数据库数据损坏

修复因断电导致的MYSQL数据库数据损坏

在使用MySQL数据库时,我们遇到过因断电导致的数据库损坏。大家都知道,断电或者非正常关机是MySQL数据库损坏的主要原因。最常见的错误原因,如何恢复MySQL数据库,是令大家头疼的问题。有什么方法可以帮助您恢复损坏的 MySQL 数据库吗?

当用户遇到MySQL数据库丢失以及断电造成的损坏时,如果用户可以进入MySQL软件但出现错误信息提示,用户可以通过“系统维护”-》压缩数据库数据库压缩修复”(有的软件在“系统设置”-“系统维护”-“数据库备份\恢复”),这种方法只适合少量数据库纠错,功能性不高。

网上有两种推荐的恢复MySQL数据库的方法,一种方法是使用MySQL命令的check

table和repair

table

(与PHP结合效果最好),另一种方法是使用多种数据检测和恢复工具myisamchk,MySQL提供的

isamchk(与PHP的最佳组合)。在很多用户看来,这两种方法相当复杂,不适合大多数用户。另外,这两种方法不能有效恢复MySQL数据库,可能会对数据库造成进一步的损坏,给大家造成不可挽回的损失。基于以上原因,这两种MySQL数据库恢复方法并不推荐给大家。

以下情况会导致数据库损坏:

1。严重损坏

2。中等伤害

3。部分表损坏或者部分表的部分记录损坏

如何恢复mysql 如何恢复数据库数据

简单情况:进入原来mysql安装路径下的data文件夹,找到相关库和ibdata1,复制过来,就可以恢复原来的数据了。

遇到困难的情况:

将另一台电脑上的MySQL数据库的mysql文件夹复制到本地电脑上,即可恢复本地电脑对数据的访问和操作。经过以下操作。

1、本地重新安装MySQL(安装目录D:\Program Files\MySQL\MySQL Server 5.0),直接将mysql文件夹复制到D:\Program Files\MySQL\MySQL Server 5.0\。结果失败:数据库连接错误。

2。卸载并重新安装MySQL,备份 D:\Program Files\MySQL\MySQL Server 5.0\ 下的数据,仅将 mysql\data 文件夹的全部内容复制到 D:\Program Files\MySQL\MySQL Server 5.0\data 下。结果失败:数据库连接错误。完全覆盖备份的数据。结果失败了,仍然无法连接数据库。

3。卸载并重新安装MySQL,将mysql\data文件夹中的cf1和最后一个文件夹(这两个是MySQL中的原始数据库)复制到D:\Program Files\MySQL\MySQL Server 5.0\data。连接成功,Navicate for MySQL 中显示了 cf1 和 Last 数据库,但无法访问,因为所有数据均为空。据我所知,数据中以数据库命名的文件存储数据库表结构,而不是元数据。接下来,将data文件夹中的ibdata1文件(大小3.4G,当然还有保存的元数据)复制到D:\Program Files\MySQL\MySQL Server 5.0\data,替换原来的ibdata1文件。重启电脑,打开Navicat for MySQL,连接成功,可以访问和控制数据。

至此操作终于成功了。如果你导出本机上的数据而不是直接复制mysql文件夹的话,恢复起来其实会更容易。但是在这台电脑上重新安装了系统,这意味着MySQL失败了。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门