服务器自动断电之后,mysql5.7无法启动
mysql无法启动的原因:大概率导致mysql数据库data目录下的ibdata1,ib_logfile1,ib_logfile0文件损坏
ib_logfile1,ib_logfile0损坏解决方法
-
备份数据库data文件夹,删除data文件夹中的所有数据
-
mysql/bin目录执行
mysqld --initialize
-
尝试启动服务
net start mysql;
-
若服务可以正常开启,则关闭服务,将备份的data文件夹替换当前当前的data文件夹(ib_logfile0,ib_logfile1两个文件不要复制进去)
-
重启服务即可
ibdata1损坏解决方法
弊端: 若数据数据量太大,导出sql需要花费大量的时间,我项目的数据量不大,sql文件只有三百多兆。
-
修改my.cnf文件,在my.cnf中的[mysqld]中添加:
-- 当设置innodb_force_recovery大于0后,可以对标进行select、create、drop操作,但insert、update或者delete这类操作是不允许的。 innodb_force_recovery = 6 -- 能让碎片回收得更及时而且不影响其他线程的操作; innodb_purge_threads = 1
-
启动服务将使用到的数据库导出sql文件
-
重新创建mysql
-
在mysql/bin目录执行
mysqld --initialize
-
启动mysql服务
net start mysql;
-
使用初始密码登录mysql
mysql -uroot -p
-
登录mysql后重新设置密码
set password=password('ykocs12#$');
-
修改密码
use mysql; UPDATE user SET authentication_string = PASSWORD('newpass') WHERE user = 'root';
-
修改远程访问权限
update user set host = '%' where user = 'root'; (使mysql root用户可以连接上任意的ip地址)
-
刷新权限
FLUSH PRIVILEGES;
-
-
重新新建库运行sql备份文件即可
-
执行备份文件出错的可能原因
导出的sql文件中 DEFAULT NULL 需要替换为 NULL DEFAULT NULL
以上均为自己配置之后做得记录,若有错误还请指正