Linux中mysql密码重置

本文介绍如何解决MySQL登录错误ERROR1045,包括找回初始密码和重置忘记的密码两种情况,适用于刚安装MySQL或忘记密码的用户。

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

主要是为了解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

 

该错误发生于密码输入错误时,所以需要对密码进行重置。

第一种情况:你刚刚安装mysql,没有修改过初始/动态密码。

这种情况下mysql会自动生成一个动态密码,你找到该动态密码,修改为你自己的密码就行了

找原始密码:

有些有readme文档的,里面就有:

否则就进入mysql的日志文件

vim /var/log/mysqld.log (每个人可能不一样,你们自己找)

找到下面这句话,密码在后面   

A temporary password is generated for root@localhost: 

注;如果找不到动态密码就看第二种情况

然后修改密码:

mysqladmin -u root -h 127.0.0.1 -p password

 

第二种情况,你找不到动态密码或者改过密码又忘了

1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:

vim /etc/my.cnf(注:windows下修改的是my.ini)

在文档内搜索mysqld定位到[mysqld]文本段:
/mysqld(在vim编辑状态下直接输入该命令可搜索文本内容)

在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示:

 

保存文档并退出:

:wq

2.然后我们需要重启MySQL:

/etc/init.d/mysql restart(或者/etc/init.d/mysqld restart)

有些用户可能不一样,自己查一下自己的重启mysql的命令

3.重启之后输入mysql即可进入mysql。

4.接下来就是用sql来修改root的密码

mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";

(现在版本更新,password字段不能被识别,取而代之的是authentication_string,语句应更改为:

update user set authentication_string=password("你的新密码") where user="root" ;)
mysql> flush privileges;(刷新)
mysql> quit

到这里root账户就已经重置成新的密码了。

5.编辑my.cnf,去掉刚才添加的内容,然后重启MySQL。大功告成!

注:如果找不到找不到my.cnf或者my.ini文件

Linux:

windows:去安装目录下找my.ini

### 在 Linux 系统下重置 MySQL Root 密码的方法 在 Linux 环境中,可以通过以下方式安全有效地重置 MySQL 的 `root` 用户密码: #### 方法一:通过跳过权限表来重置密码 如果忘记了 MySQL 的 `root` 密码,可以临时禁用授权表以允许无密码登录并重新设置密码。 1. 停止正在运行的 MySQL 服务: ```bash sudo systemctl stop mysql ``` 2. 使用 `--skip-grant-tables` 参数启动 MySQL 服务,这会绕过权限验证: ```bash sudo mysqld_safe --skip-grant-tables & ``` 3. 登录到 MySQL 控制台,无需输入密码: ```bash mysql -u root ``` 4. 切换至 `mysql` 数据库,并更新 `root` 用户的密码。对于 MySQL 版本 **5.7 及更高版本**,应修改 `authentication_string` 字段;而对于更早版本,则需修改 `password` 字段[^1]。 ```sql USE mysql; UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES; ``` 5. 关闭当前 MySQL 实例并正常重启服务: ```bash exit sudo killall mysqld sudo systemctl start mysql ``` #### 方法二:利用 Docker 容器环境下的操作(适用于基于容器部署的情况) 当 MySQL 部署于 Docker 中时,可按照如下流程处理[^3]: 1. 进入目标 MySQL 容器内部终端: ```bash docker exec -it <container_name> bash ``` 2. 执行上述相同的操作步骤,即停止服务、启用 `--skip-grant-tables` 并完成密码变更后再恢复正常模式。 需要注意的是,在某些较新的 MySQL 版本 (如8.0及以上),由于官方修复了一个潜在的安全漏洞,单纯依赖配置文件中的 `skip-grant-tables` 设置可能无法生效[^4]。因此建议直接采用命令行参数形式指定该选项而非编辑 my.cnf 或其他初始化脚本。 ```python print("以上方法均能帮助您成功找回丢失的Root账户控制权.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值