mysql忘记密码了怎么办

同事告诉我,服务器长时间不用,上面不知道有啥东西,让我看看。

我先上去sudo netstat -tulpn查看一下有哪些端口再用。

发现我可以认识3306。说明服务器上以前用过MySQL数据库。

检查一下数据库启动状态:sudo systemctl stop mysqld

 发现执行不了,换个方式试试。

sudo service mysqld status

发现stop ,说明mysql不启动的。

用sudo service mysqld start启动。

启动之后,我主要是想看看mysql库有什么内容,但是我不知道数据库的密码。

继续尝试:

sudo mysqld_safe --skip-grant-tables &

跳过密码检查,使用无密码登录

mysql -u root

执行对应的密码重置命令

USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;

报错了,说unknown column 'authentication_string' in field list... ...

select version();  查看一下数据库版本,发现是5.1.73

原来是 MySQL 5.1.73 版本的问题,authentication_string 列确实不存在,因为该列是 MySQL 5.7+ 才引入的,在 MySQL 5.1 中,密码存储在 user 表的 Password 字段中。以下是适用于 MySQL 5.1.73 的重置 root 密码完整语句:

USE mysql;
UPDATE user SET Password=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;

到这里我修改了root的密码。

EXIT;

sudo service mysqld stop

sudo service mysqld start

重启一下mysql。

mysql -u root -p

使用新密码就可以登录上去了。

然后show databases;查看有哪些数据库。

use 显示出来的数据库;

show tables;

select * from 显示出来的数据表;

检查了很多表,都是空表;

我记得之前还用过好用的语句,直接把每个表有多少行数据查出来的,但是实际工作到此我就可以交差了。

有喜欢研究的小伙伴可以评论区里讨论。

最后提示:5.1.73 是非常古老的版本(2013 年已停止维护),存在安全漏洞,建议升级到 MySQL 5.7 或 8.0。

之后我还会发布项目实战良心干货,希望可以和网友一起讨论交流,也想留个关注。感谢每一位读者朋友。

                                                                                                                                                                              2025_7_3

### 如何重置 MySQL root 用户密码 #### 方法一:通过 `UPDATE` 命令重置密码忘记 MySQL 的 root 密码时,可以通过以下 SQL 语句来更新 root 账户的认证字符串: ```sql mysql -u root UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES; quit ``` 上述命令中的 `'new_password'` 需要被替换成新的期望密码[^1]。 #### 方法二:使用 `ALTER USER` 修改身份验证方式 另一种更推荐的方法是利用 `ALTER USER` 来更改 root 用户的身份验证插件以及其对应的密码。这可以确保兼容性和安全性: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword'; FLUSH PRIVILEGES; ``` 完成操作后同样需要刷新权限表以使变更生效,并且记得用 `EXIT;` 或者 `quit` 退出 MySQL 客户端[^2]。 #### 关键步骤说明 为了保证这些SQL指令能够成功执行,在此之前应当先让 MySQL 服务处于一种特殊的安全模式——即跳过授权表(`--skip-grant-tables`)启动;而在所有的修改完成后,则需正常重启 MySQL 服务以便应用最新的安全设置变化[^3]。 #### 提醒事项 - 执行以上任一步骤前,请务必确认已经停止了现有的 MySQL 实例。 - 对于生产环境中使用的数据库实例,建议提前做好数据备份工作以防意外情况发生。 - 更改后的密码应该妥善保管,并考虑同步至其他依赖该数据库的应用程序配置文件里去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值