linux上的mysql数据库恢复

记录一次误删库后的惨痛经历!!!

由于备份人员没有按正常备份方式备份,而是直接将mysql数据库下的data文件夹整个拷贝下来的,所以恢复起来稍微有些复杂。但好在必要的文件都在,还是可以恢复的。

linux上的mysql数据库恢复_第1张图片

 其中标红的文件夹是所需要恢复的数据库文件夹,ibdata1是必要文件(自行百度这个文件是做什么的),只要有这两个文件就可以恢复数据库数据,其中数据库文件和ibdata1必须要是对应时间的,相差太大会无法识别。安装的mysql版本也可能必须要和之前的mysql相同版本(我使用的是相同版本)。

 一、重新安装好对应版本的mysql数据库,安装完将数据库停掉

service mysql stop

查看下mysql进程,确定相关进程全部杀死了,还有进程的就用kill命令干掉

ps -ef|grep mysql

二、将要备份的数据库和ibdata1文件上传到linux系统中(我直接放在/root目录下了),接着拷贝到新安装的数据库的data目录下(我这边mysql数据库装在/opt/db目录下)

cd /opt/db
cp -r /root/kpi /data

kpi目录已经复制过来,因为是用root账户复制的,所以这里将文件所有者变更为mysql

chown -R mysql:mysql data/kpi/

接着复制上传的ibdata1文件到数据库data目录下,提示是否覆盖,输入y

cp /root/ibdata1 data/

三、再次启动mysql,并使用账号进入数据库

service mysql start
/opt/db/mysql/bin/mysql -uroot -p

进入kpi数据库并查看其中对应表的内容,发现内容以恢复,并且可以进行读写操作了

use kpi;
select * from user;

至此数据文件恢复数据完成。

补:此时用远程连接或本地项目连接会连不上数据库,需要去mysql数据库表下修改内容

#查看mysql表
use mysql;
#查看允许的user和其对应的host
select user,host from user;
#将其更新为任意host地址下的root账号都可以登录
update user set host = '%' where user = 'root';
#再次查看其是否改变
select user,host from user;
#最后更新一下
flush privileges;

修改好以后远程连接或者本地项目就能连上数据库了,但是此时本地用xhsell再连接数据库会出现以下报错

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解决这个问题的方法就是再加上linux服务器对应的地址(*号代表你要连接的linux服务器地址)

/opt/db/mysql/bin/mysql -uroot -p -h*.*.*.*;

你可能感兴趣的:(linux,数据库,linux,mysql)