掌柜
MySQL8通过data目录恢复数据
02/18
本文最后更新于2023年07月07日,已超过515天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
问题背景
环境:Windows server ,MySQL8.0.17
情况:MySQL备份只有data数据目录。系统上MySQL服务已经被删除了。
需求:安装相同版本MySQL,恢复数据。
解决方案
安装、初始化相同版本MySQL 8.0.17,略过。下载安装即可。
注意:修改MySQL配置的时候,不要用记事本。因为记事本会修改文件的编码,导致服务无法启动。
初始化好新安装的MySQL后,将服务停止。然后,在备份的data目录下面:找到下面6个文件,以及需要恢复的数据库目录,拷贝覆盖到新安装的MySQL data目录下。
ibdata1,ib_logfile0,ib_logfile1,ib_buffer_pool,auto.cnf,mysql.ibd
然后,启动MySQL服务:net start mysql
发现,使用原来的密码无法进入mysql。那就跳过密码启动服务。
# 经测试,将skip-grant-tables 添加到 my.ini [mysqld] 下。启动服务,也无法免密进入mysql。
# 尝试进入 mysql bin 目录,使用命令直接跳过密码启动,这样可以免密进入数据库:
mysqld --console --skip-grant-tables --shared-memory
# 进入mysql后,将密码设置空:
mysql> use mysql;
mysql> update user set authentication_string='' where user='root'
mysql> exit
# ctrl+c 中断、停止:mysqld --console --skip-grant-tables --shared-memory 启动的服务。
net start mysql
# 启动服务后,输入下面命令,回车即可进入数据库:
mysql -u root -p
进入数据库后,发现数据回来了。