mysql忘记root密码(linux和windows均适用)

本文详细介绍了如何在Windows和Linux环境下通过临时禁用权限表来重置MySQL的root密码,包括定位配置文件、修改配置、重启服务及更新密码的具体步骤。

亲自测试并执行过的,确定是可以进行操作的。

不管是你在windows还是linux下,都是可以的,我测试的linux是redhat enterprise server 6.4的,windows是win7 的。

****

步骤如下:

1.找到mysql的配置文件:在win7中的名字叫做:my.ini,位置在:C:\ProgramData\MySQL\MySQL Server 5.6,如图:


linux的配置文件位置可以参考:/usr/share/mysql/my-medium.cnf文件(如果更改这个不起作用的话,可以参考更改 /etc/my.cnf,也是同样的位置),如图:

2.适用文本编辑器打开配置文件,找到[mysqld],然后在他下面新添加一行,写上:-skip-grant-tables,如图:


3.添加后并保存,修改完毕。

4.重新启动mysql服务。

5.重新登录mysql,mysql -u root -p,回车后即可进入mysql>模式。

6.如果还需要更改更产生新的root密码的话,可以继续按照下面的操作。

7.在mysql>模式下,执行:use mysql;  回车后即切换到mysql数据库。

8.执行如下命令更改mysql的root账户密码:update user set password=password('123456') where user='root' and host='localhost';  (注意:123456就是将要生效的新的root账户密码,你可以按照你的需要改成你想要的!)

9.命令执行后显示:query ok,即表示命令执行成功,然后执行flush privileges,然后重启mysql服务即可(linux下一定要重启mysql服务),这时的root密码就被成功更改为123456了。

10.在使用mysql -u root -p 回车输入密码123456就进入mysql>模式了。

<think>首先,用户的问题是:"我想找回或重置MySQLroot密码请问如何重置MySQLroot密码"。这是一个关于重置MySQLroot密码的查询。我有系统级指令:所有行内数学表达式用$...$,独立公式用$$...$$,但在这个上下文中,可能没有数学表达式,所以我可以忽略这个部分。使用中文回答,生成相关问题,并在引用的段落末尾添加引用标识。引用的内容来自提供的引用[1]、[2][3],这些是关于MySQL密码重置的指南。用户可见层的指令是:回答结构清晰,帮助用户逐步解决问题,保证回答真实可靠。所以,我需要构建一个清晰的、逐步的指南来重置MySQLroot密码。参考提供的引用:-引用[1]:提到使用UPDATE语句设置密码为空,但需要跳过权限检查(skip-grant-tables)。-引用[2]:详细描述了Windows下重置密码的步骤,包括停止服务、运行mysqld--skip-grant-tables,然后更新密码。-引用[3]:类似,但提到使用--init-file选项来执行SQL文件。这些引用是针对不同版本的MySQL(如5.68.4),所以我需要确保我的回答是通用的或指定版本。用户没有指定MySQL版本,所以我应该提供一个通用的方法,并提到可能的差异。关键步骤(从引用中总结):1.停止MySQL服务。2.启动MySQL跳过权限检查(使用--skip-grant-tables)。3.连接到MySQL(通常不需要密码)。4.更新root用户的密码。5.刷新权限。6.重启MySQL服务。在引用[2]中,提到在Windows下以管理员身份运行命令提示符。在引用[3]中,提到使用--init-file选项,这是一种替代方法。我应该优先推荐常见的方法,如引用[2]中的步骤。现在,构建回答:-开头:简要说明重置root密码的过程。-逐步指南:分步骤解释,确保清晰。-结尾:生成相关问题。在回答中引用的段落末尾添加引用标识,例如[^1]。这意味着当我引用或基于引用内容时,在句子末尾添加[^数字]。例如,如果我描述停止服务的步骤,基于引用[2],我可以说:"停止MySQL服务,可以通过命令netstopmysql或在服务管理器中停止[^2]。"生成相关问题:在最后添加相关问题部分。完整结构:1.**介绍**:解释为什么需要重置密码过程概述。2.**详细步骤**:分步指南。-停止服务。-启动MySQL跳过权限。-连接到MySQL。-更新密码。-刷新权限。-重启服务。3.**注意事项**:可能提到不同版本的差异或安全建议。4.**相关问题**:生成2-3个相关问题。使用中文回答。确保回答真实可靠:基于提供的引用常见知识。</think>### 如何重置MySQL root密码 重置MySQL root密码是一个常见需求,通常发生在忘记密码或需要恢复访问权限时。过程涉及停止MySQL服务、跳过权限检查、更新密码,然后恢复服务。以下是基于MySQL通用版本的详细步骤(适用Windows类Unix系统,但具体命令可能因操作系统MySQL版本略有差异)。操作前请确保以管理员或root权限执行命令,以避免权限问题[^2][^3]。 #### 逐步重置指南 1. **停止MySQL服务** 首先,停止正在运行的MySQL服务: - **在Windows上**:打开命令提示符(以管理员身份运行),输入命令: ```bash net stop mysql ``` 如果服务名不同(如 `mysql80`),请替换为实际服务名。也可以通过运行 `services.msc` 在服务管理器中手动停止[^2]。 - **在Linux/macOS上**:使用终端命令: ```bash sudo systemctl stop mysql # 或 sudo service mysql stop ``` 服务名可能因发行版而异(例如,`mysqld`)。 2. **启动MySQL跳过权限检查** 启动MySQL服务器,但跳过权限验证(`--skip-grant-tables`),以便无密码登录: - **在Windows上**:在命令提示符中切换到MySQL的bin目录(例如 `cd "C:\Program Files\MySQL\MySQL Server 8.4\bin"`),然后执行: ```bash mysqld --skip-grant-tables --shared-memory ``` 注意:命令执行后窗口会挂起,请保留此窗口打开[^2][^3]。 - **在Linux/macOS上**:在终端运行: ```bash sudo mysqld_safe --skip-grant-tables & ``` 或直接使用 `mysqld` 命令。 **关键提示**:如果遇到权限错误(如“Access denied”),请确保以管理员/root身份运行命令[^2]。 3. **连接到MySQL并更新密码** 打开一个新的命令窗口或终端,连接到MySQL(无需密码): ```bash mysql -u root ``` 成功登录后,在MySQL提示符下执行SQL命令更新密码。**注意MySQL版本差异**: - **对于MySQL 5.7及更早版本**:使用 `PASSWORD()` 函数: ```sql UPDATE mysql.user SET password = PASSWORD('你的新密码') WHERE user = 'root' AND host = 'localhost'; ``` - **对于MySQL 8.0及以上版本**:密码存储在 `authentication_string` 字段,且 `PASSWORD()` 函数已弃用,直接设置: ```sql UPDATE mysql.user SET authentication_string = '' WHERE user = 'root' AND host = 'localhost'; -- 设为空(可选) ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; -- 推荐使用此命令设置新密码 ``` 引用[1]中提到设置空密码的方法,但为安全起见,建议立即设置强密码[^1]。 完成后,刷新权限使更改生效: ```sql FLUSH PRIVILEGES; ``` 然后退出MySQL: ```sql EXIT; ``` 4. **重启MySQL服务** 返回第一个命令窗口,按 `Ctrl+C` 停止 `mysqld --skip-grant-tables` 进程。然后正常重启服务: - **Windows**: ```bash net start mysql ``` - **Linux/macOS**: ```bash sudo systemctl start mysql # 或 sudo service mysql start ``` 现在,使用新密码登录验证:`mysql -u root -p`。 #### 注意事项 - **安全建议**:重置后立即设置强密码,并避免在正式环境使用空密码[^1]。 - **版本兼容性**:MySQL 8.0+ 推荐使用 `ALTER USER` 命令,因为它更安全且兼容新认证插件[^3]。 - **替代方法**:如果上述步骤失败,可以使用 `--init-file` 选项(如引用[3]所述)创建一个SQL文件包含更新命令,然后启动时执行[^3]。 - **常见问题**:如果遇到“表不存在”错误,可能是MySQL数据目录损坏,需先修复数据库。 如果步骤执行中遇到问题,请提供操作系统MySQL版本,以便进一步协助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值