Mysql忘记密码但是保存以前连接数据库连接的修改密码方法

本文介绍如何在MySQL中修改用户的登录密码,包括使用SQL命令更新"mysql"数据库表中的"user"表密码字段的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql 的用户数据放置在“mysql”数据库表的“user"数据表中

打开后看到


+-----------+------+------------------------------------------------+
| hos t      | user | password                                                          |
+-----------+------+------------------------------------------------+
| localhost | root | *D54C8CF5290EDFF3AE9923A0C1F5EA80097221B3   |
| %          | root | *A154C52565E9E7F94BFC08A1FE702624ED8EFFDA   |
+-----------+------+------------------------------------------------+

 

密码是被加密了的

现在只要将这个密码修改一下就行了

用下面的命令

select password('1234');
+------------------------------------------------+
| password('1234')                                             |
+------------------------------------------------+
| *A4B6157319038724E3560894F7F932C8886EBFCF |
+------------------------------------------------+

用得到的加密字符串替换原来

就可以使用"1234"密码来访问了

 

 

 

 

至于如果密码忘记了

并且以前的连接也丢失了

再修改密码的方法

我没有找到

网上的方法对我都不管用

我的mysql版本为5.1.35-community

没有mysqld-nt.exe这个程序

 

 

 

 

 

 

------------------
LSF(科学之爱永恒)论坛
http://www.lsf.cc
用想象力来阅读!!!

 
<think>好的,用户需要重置本地MySQL 5.7的root密码。首先,我得回忆一下MySQL 5.7密码重置步骤。记得在早期版本中,可能需要使用`mysqld_safe`来跳过权限验证,然后在5.7版本中,步骤应该类似,但有些细节可能有变化。 首先,用户需要停止MySQL服务。这一步在Windows和Linux下可能有所不同。比如,在Linux上可以用`systemctl stop mysql`,而Windows可能是通过服务管理器或者命令行的`net stop MySQL57`。这里可能需要分情况说明,但用户提到的是本地数据库,可能更倾向于Windows环境,不过还是应该覆盖两种系统的情况。 接下来,启动MySQL时跳过权限验证。通常是通过`mysqld --skip-grant-tables`来启动,这样用户就可以不用密码登录。但有时候可能需要先停止服务,确保没有其他实例在运行。如果用户遇到服务无法停止的问题,可能需要手动结束进程,或者检查是否有其他服务占用了端口。 然后,用户需要连接MySQL服务器。这时候应该使用`mysql -u root`命令,因为跳过了权限验证,不需要密码。这时候可能需要切换到`mysql`数据库,然后更新`user`表的`authentication_string`字段。记得在MySQL 5.7之后,密码字段改成了`authentication_string`,而不是之前的`password`。所以正确的SQL语句应该是`UPDATE user SET authentication_string=PASSWORD('newpassword') WHERE User='root';`。同时,不要忘记执行`FLUSH PRIVILEGES;`来刷新权限。 不过,根据用户提供的引用内容,引用[2]提到在5.7版本中使用`mysqladmin`可能不识别.mysql_secret文件的问题,这可能意味着某些情况下需要额外的步骤,比如执行`mysql_upgrade`来修复表结构,如引用[3]所述。如果在重置密码后遇到表不存在的问题,比如`performance_schema.session_variables`,这时候需要在安装目录下运行`mysql_upgrade -u root -p`,然后重启服务。这也需要提醒用户注意。 另外,用户可能需要处理MySQL的配置文件,比如在Linux下修改`/etc/my.cnf`或者在Windows下的`my.ini`文件,添加`skip-grant-tables`选项。不过,有些情况下可能不需要修改配置文件,而是直接在启动命令中加入参数。 还有,重置密码后,可能需要重新加载权限或者重启MySQL服务。这时候需要确保服务正常启动,并且新密码生效。如果用户遇到连接问题,可能需要检查是否还有其他安全设置,比如插件验证方式是否改变,例如`auth_socket`插件可能导致密码验证失败,需要修改插件类型为`mysql_native_password`。 最后,应该建议用户测试新密码是否有效,并创建子账号或进行其他安全设置,如引用[4]提到的创建子账号和权限分配。这可以作为额外的步骤提供给用户,以增强数据库的安全性。 总结步骤应该是:停止服务→跳过权限启动→连接并更新密码→处理可能的表问题→重启服务→验证新密码。需要确保每个步骤都清晰,并考虑到不同操作系统下的差异,以及可能出现的错误情况,如引用[3]中的表缺失问题,提供解决方案。</think>### 分步重置MySQL 5.7 root密码 #### 步骤1:停止MySQL服务 - **Windows**: ```bash net stop MySQL57 # 服务名可能因安装版本不同而异,如mysqlmysql57等 ``` - **Linux**: ```bash sudo systemctl stop mysql ``` #### 步骤2:跳过权限验证启动MySQL - **方法1(临时启动)**: ```bash mysqld --skip-grant-tables --shared-memory --console ``` > 此命令会在前台运行MySQL,跳过权限验证。保持此窗口开启,新开一个终端执行后续操作。 - **方法2(修改配置文件)**: 1. 找到MySQL配置文件`my.ini`(Windows)或`my.cnf`(Linux),通常在安装目录或`/etc/mysql`下。 2. 在`[mysqld]`段添加: ```ini skip-grant-tables ``` 3. 保存后重启服务: ```bash net start MySQL57 # Windows sudo systemctl restart mysql # Linux ``` #### 步骤3:连接MySQL并重置密码 1. **密码登录**: ```bash mysql -u root ``` 2. **更新密码**: ```sql USE mysql; UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES; EXIT; ``` > MySQL 5.7使用`authentication_string`字段存储密码,而非旧版的`password`字段[^1][^2]。 #### 步骤4:修复表结构(可选) 若重启后报错类似`Table 'performance_schema.session_variables' doesn't exist`: ```bash mysql_upgrade -u root -p ``` 输入新密码后等待修复完成,再重启服务[^3]。 #### 步骤5:恢复服务并验证 1. **停止跳过权限的MySQL进程**: - 若使用`方法1`启动,关闭对应终端窗口。 - 若修改了配置文件,需删除`skip-grant-tables`并重启服务。 2. **正常启动服务**: ```bash net start MySQL57 # Windows sudo systemctl start mysql # Linux ``` 3. **验证新密码**: ```bash mysql -u root -p ``` 输入新密码`new_password`,成功登录即说明重置成功。 #### 附:常见问题处理 - **密码修改后仍无法登录**: 检查是否启用`auth_socket`插件,需执行: ```sql UPDATE user SET plugin='mysql_native_password' WHERE User='root'; ``` - **忘记配置文件路径**: 运行`mysqld --verbose --help | findstr "my.cnf"`(Windows)或`mysqld --verbose --help | grep my.cnf`(Linux)查找。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值