记一次Mysql数据库Kill完之后启动不起来的解决方案

在Mysql运行的时候,有时候会stop不了,这时候我们就会想直接把他的进程kill掉。

但是,有时候kill完了之后,在去start它就会直接抛异常了。。。

ERROR! The server quit without updating PID file /usr/local/mysql/mysql5/data/VM_0_9_centos.pid

看到这个异常,别慌,我们先把Mysql下面自己的数据库的文件夹备份出来,以及mysql的系统库mysql里面的文件也备份出来,

还有data目录下的ibdata1、 ib_logfile0和ib_logfile1文件也要备份一下(这里是表结构以及数据的东西),

接着,我们把mysql的data目录(也就是存放数据库文件的目录)删掉,然后进行mysql的初始化

./mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql

初始化完了之后,再把权限给回去

cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld

这时候,我们启动mysql的话,就会发现,没有密码怎么进去哦。。。。

然后,我们来修改一下mysql的密码吧

编辑my.cnf允许空密码登录

[root@7Core ~]# vi /etc/my.cnf
#在[mysqld]下加入一行
skip-grant-tables=1

重新启动Mysql服务

[root@7Core ~]# systemctl restart mysqld.service

使用Root登录数据库、使用mysql数据库、修改root密码、退出数据库

[root@7Core ~]# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string = password('新密码'),password_last_changed=now() where user='root';
mysql> exit;

再次打开my.cnf,将skip-grant-tables=1删掉,保存退出

[root@7Core ~]# vi /etc/my.cnf
#删除skip-grant-tables=1

重启Mysql服务

[root@7Core ~]# systemctl restart mysqld.service

这时候我们就可以用账号密码登入了,但是第一次登入的时候,需要去修改一下密码,不然不会让你进行其他操作的

mysql -uroot -p
-- 输入密码登入
-- 然后修改密码
alter user 'root'@'localhost' identified by '新密码';

这时候远程登入数据库应该是会报1130错误的,我们需要修改一下host

use mysql;  
update user set host = '%' where user ='root';  

这时候就可以去恢复一下数据库的文件了

把你备份的data目录下面要恢复的数据库名对应的文件夹复制到新的datadir目录下面去,数据库的表就恢复了。、

但是这时候,存储过程和函数还是没有的,需要将备份的mysql系统数据库下面的名字叫proc的.frm和.MYD还有.MYI文件复制到datadir文件夹下面去,覆盖掉现有的文件,

此时,表结构和存储过程都已经恢复了,但是打开mysql的表还是会提示表不存在,这时候,我们在把之前备份的data文件夹里面的

ibdata1、 ib_logfile0和ib_logfile1文件复制替换到现有数据库中,

这样就恢复成功了。

如果以上内容对你有帮助,可以点个推荐哦,谢谢

 

 

 

 

 

转载于:https://www.cnblogs.com/luol/p/11545632.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值