MySQL8通过data目录恢复数据
问题背景
环境: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
进入数据库后,发现数据回来了。