重装了windows server 操作系统之后,怎么使用之前的mysql数据?
- 工作小总结&小工具类
- 时间:2025-08-24 16:20
- 51人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
我没有重装windows操作系统时候mysql如下:
我的mysql路径:D:\project_environment\mysql-5.7.44-winx64。
my.ini配置如下:
[mysqld] # 这里设置3307端口 port=3307 # 设置mysql的安装目录 basedir=D:\project_environment\mysql-5.7.44-winx64 # 设置mysql数据库的数据的存放目录 datadir=E:\Mysql\data # 允许最大连接数 max_connections=1000 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password #忽略密码 #skip-grant-tables #解决分组问题 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3307 default-character-set=utf8mb4
我在重装系统之前把myql的数据都放在了:E:\Mysql
现在我重装系统了。D:\project_environment\mysql-5.7.44-winx64,这个文件夹还在,E:\Mysql 这个文件夹也还在。
我想要使用root用户,密码:kaigejava2025
现在重装系统了,我怎么配置mysql,才可以让mysql直接使用之前的数据信息?我的数据不能丢失啊
别担心,你的数据都安全地存放在 E:\Mysql\data
目录里,只要按照正确的步骤操作,完全可以恢复。重装系统只是丢失了 Windows 注册表中的 MySQL 服务信息和可能存在的系统环境变量。
请按照以下步骤操作,这将重新安装 MySQL 服务并指向你原有的数据目录。
完整恢复步骤
第一步:以管理员身份打开命令提示符 (CMD)
在 Windows 搜索框输入
cmd
。在“命令提示符”上右键,选择 以管理员身份运行。这一步至关重要。
第二步:清理旧的服务(如果存在)
在命令提示符中,输入以下命令来移除可能已残留的旧 MySQL 服务(假设服务名是 mysql
):
sc delete mysql
如果原来的服务名不是 mysql
,请将命令中的 mysql
替换成你的服务名。执行成功后,它会提示 [SC] DeleteService 成功
。
第三步:进入 MySQL 的 bin 目录
在命令提示符中,使用 cd
命令切换到你的 MySQL 的 bin
目录下:
cd /d D:\project_environment\mysql-5.7.44-winx64\bin
第四步:重新初始化并安装服务(关键步骤)
非常重要: 即使你有旧的数据,也需要执行这一步来生成初始的系统表结构(如 mysql
, performance_schema
, sys
等库),但绝对不能使用 --initialize
,因为它会生成一个新的随机 root 密码并可能破坏你的旧数据。
我们应该使用 --initialize-insecure
,它不会影响已有的数据文件,只是确保必要的系统表存在。
执行初始化命令:
mysqld --defaults-file="D:\project_environment\mysql-5.7.44-winx64\my.ini" --initialize-insecure --console
运行这个命令会非常快,因为它发现数据目录 (
E:\Mysql\data
) 已经存在,它只会检查并创建必要的系统文件(如果它们缺失的话),而不会触碰你自己的数据库数据。--defaults-file
: 指定你的my.ini
配置文件路径。必须放在第一个参数的位置。--initialize-insecure
: 初始化但不生成随机 root 密码,root 用户密码为空。这不会覆盖你已有的mysql.user
表。--console
: 将输出信息打印在控制台,方便查看。安装 MySQL 服务:
继续在bin
目录下,执行以下命令来安装 Windows 服务:
mysqld --install MySQL57 --defaults-file="D:\project_environment\mysql-5.7.44-winx64\my.ini"
如果成功,你会看到
Service successfully installed.
的提示。--install MySQL57
: 将服务安装到系统,并命名为MySQL57
(你可以自定义服务名,例如MySQL
或MySQL3307
)。--defaults-file
: 同样,指定你的配置文件路径。
第五步:启动服务并重置密码
启动 MySQL 服务:
net start MySQL57
(请将
MySQL57
替换为你上一步骤中指定的服务名)登录 MySQL(此时 root 密码为原来的密码):
mysql -u root -P 3307 -p
输入密码后,修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'kaigejava2022'; FLUSH PRIVILEGES;
如果你的 root
用户还允许其他主机访问(如 'root'@'%'
),你可能也需要修改它:
ALTER USER 'root'@'%' IDENTIFIED BY 'kaigejava2022'; FLUSH PRIVILEGES;
退出 MySQL:
exit;
第六步:测试新密码登录
现在使用你的新密码来测试登录,确认一切正常:
cmd
mysql -u root -P 3307 -p
输入密码 kaigejava2022
,你应该能成功登录并看到你的所有数据库。
总结
整个过程的核心是:
清理旧服务。
使用
--initialize-insecure
(而不是--initialize
)来避免覆盖现有数据。重新安装服务并指定正确的配置文件。
启动服务后,重设密码。
你的用户数据库(在 E:\Mysql\data
里)在整个过程中都没有被触碰,所以数据是绝对安全的。现在你的 MySQL 服务应该已经恢复如初了。
如果需要先设置忽略密码验证:
1.先停止mysql服务
net stop MySQL57
步骤二:使用skip-grant-tables模式启动
这种方式允许无密码登录,用于修复权限问题。
在my.ini中启用跳过权限表:
用记事本打开D:\project_environment\mysql-5.7.44-winx64\my.ini
文件
找到[mysqld]
部分,取消注释或添加一行:text
skip-grant-tables
保存文件。
重新启动MySQL服务:
cmd
net start MySQL57
步骤三:无密码登录并彻底修复root用户
现在可以无密码登录了:
cmd
mysql -u root -P 3307
在 MySQL 命令行中重置 root 密码:
成功登录后,你会看到 mysql>
提示符。执行以下命令来将 root 用户的密码设置为你想要的 kaige2025
:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'kaige2025'; FLUSH PRIVILEGES;
如果你的
root
用户还允许其他主机访问(如'root'@'%'
),你可能也需要修改它:ALTER USER 'root'@'%' IDENTIFIED BY 'kaige2025';
FLUSH PRIVILEGES;
退出 MySQL:
exit;
步骤四:恢复正常模式
编辑my.ini文件,注释掉或删除
skip-grant-tables
这一行:text
#skip-grant-tables
保存文件。
重启MySQL服务:
net stop MySQL57