Linux下mysql密码忘记修改办法,解决mysql登陆1045错误

本文提供了一种解决Linux环境下MySQL密码遗忘的方法,通过安全模式重置密码,并更新权限,适用于1045错误提示的情况。

Linux下mysql密码忘记修改办法,解决mysql登陆1045错误

服务器在登陆phpmyadmin的时候提示1045错误,然后进入ssh后登陆数据库仍是1045错误。提示如下:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

首先我想到的是进入安全模式进行密码重置,虽没有成功, 但我还是附上方法:

1、停用mysql服务:

/etc/rc.d/init.d/mysqld stop
或者是
service mysqld stop

2、输入命令:

mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

根据环境不同可能会不成功,提示你要进入mysql安装目录进行,那就找到安装目录.
命令格式如下:

/webserver/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

3、登入数据库:

mysql -u root mysql

没有密码直接进入mysql
4、进入mysql

use mysql;

结果如下:
Database changed
5、更改root密码:

UPDATE user SET Password = password ( '新密码' ) WHERE User = 'root';

结果如下:
Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0
刷新数据库

FLUSH PRIVILEGES;

本帖最后由 苇子 于 2015-10-23 16:48 编辑

今天一个朋友的服务器在登陆phpmyadmin的时候提示1045错误,然后进入ssh后登陆数据库仍是1045错误。网上找了各种办法都不成功。
提示如下:
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
复制代码
首先我想到的是进入安全模式进行密码重置,虽没有成功, 但我还是附上方法:
1、停用mysql服务:
/etc/rc.d/init.d/mysqld stop
或者是
service mysqld stop
复制代码
2、输入命令:
mysqld_safe –user=mysql –skip-grant-tables –skip-networking &
复制代码
根据环境不同可能会不成功,提示你要进入mysql安装目录进行
那就找到安装目录,我这示例目录是 /webserver/mysql 这个常见于阿里服务器的一键安装包。
命令格式如下:

/webserver/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

3、登入数据库:

mysql -u root mysql

没有密码直接进入mysql
4、进入mysql

use mysql;

结果如下:

Database changed

5、更改root密码:

UPDATE user SET Password = password ( '新密码' ) WHERE User = 'root';

结果如下:

Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0

刷新数据库

FLUSH PRIVILEGES;

结果如下:

Query OK, 0 rows affected (0.00 sec)

千万不要忘记在mysql中操作的每条命令后面都要有“;”的。
最后退出,重启mysql.

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在修改的过程中任何人都可以登陆mysql修改用户密码的。
我的办法是停止了apache或是nginx服务。
2.编辑 my.cnf文件

vi /etc/my.cnf


我们在[mysqld]的启动选项里面加入 skip-grant-tables 其实就是跳过授权表。
原文件里面有个 skip-external-locking 我在前面加了# 将它注释掉了!并在前面增加 skip-grant-tables
好了,退出并保存
3.重新启动mysqld
4.登录并修改MySQL的root密码

mysql

进入mysql

use mysql;

更改root密码:

UPDATE user SET Password = password ( '新密码' ) WHERE User = 'root';

刷新数据库
5.将MySQL的登录设置修改回来

<think>好的,我现在需要帮助用户解决如何在Linux系统中重置MySQL的root密码的问题。首先,我要回忆一下自己之前学过的相关知识,同时结合用户提供的引用内容,确保步骤正确。 用户的问题很明确,就是要找回或者重置MySQL密码。根据引用内容,不同的方法可能适用于不同版本的MySQL,比如5.7及以上版本和其他版本。我需要先整理出一个通用的步骤,然后指出版本差异。 首先,停止MySQL服务是必须的,用户可能需要使用systemctl或者service命令,这取决于系统是使用systemd还是SysVinit。然后,以跳过权限检查的方式启动MySQL,这通常通过添加--skip-grant-tables选项来实现。这里需要注意,用户可能需要修改配置文件,比如/etc/my.cnf或/etc/mysql/my.cnf,并在[mysqld]部分添加skip-grant-tables。 接下来,用户需要以root身份登录MySQL,这时候可能不需要密码。但根据引用中的不同方法,有的需要先刷新权限,有的则直接更新密码。比如引用3提到要先执行flush privileges,而引用4则是直接更新user表。 对于MySQL 5.7及以上版本,authentication_string字段是用来存储密码的,所以需要使用UPDATE语句来修改这个字段。而旧版本可能使用的是password字段,但根据引用2和4,似乎都是使用authentication_string,这可能意味着用户提供的引用中有一些混淆,需要确认正确的字段名。 在修改密码后,需要刷新权限,然后退出MySQL,并移除之前添加的skip-grant-tables选项,最后重启MySQL服务。这部分步骤在各个引用中都比较一致。 需要注意的是,不同版本的MySQL可能在修改密码的命令上有所不同。例如,引用3提到使用ALTER USER语句,而引用2和4使用UPDATE语句。这可能取决于是否在安全模式下,或者MySQL的版本是否支持ALTER USER在跳过权限检查时使用。 另外,用户可能会在修改密码后遇到密码策略的问题,比如密码太简单无法设置,这时可能需要临时调整密码策略,或者在修改密码后再次调整。 在整理步骤时,需要确保逻辑清晰,每一步都有明确的命令和说明,同时提醒用户注意版本差异和可能遇到的问题,比如配置文件的位置、服务管理命令的不同等。 最后,生成相关问题时要考虑用户可能进一步的问题,比如如何修改密码策略、处理修改密码后的错误,或者不同环境下的操作差异,比如Docker中的MySQL。这样可以帮助用户更全面地解决问题,或者引导他们解决后续可能遇到的困难。</think>### Linux系统MySQL密码重置完整步骤 根据多个引用资料[^1][^2][^3][^4]整理,MySQL密码重置流程如下: **一、停止MySQL服务** ```bash sudo systemctl stop mysqld # systemd系统 # 或 sudo service mysqld stop # SysVinit系统 ``` **二、安全模式启动** 1. 编辑配置文件 ```bash sudo vi /etc/my.cnf # 或/etc/mysql/my.cnf ``` 2. 在[mysqld]段添加 ```ini skip-grant-tables ``` **三、重置密码流程** ```bash sudo systemctl start mysqld # 重启服务 mysql -u root # 无密码登录 ``` ```sql -- 刷新权限(必须步骤)[^3] FLUSH PRIVILEGES; -- 密码修改(5.7+版本) ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; -- 或使用传统方法(所有版本)[^4] UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root'; ``` **四、恢复配置** 1. 删除配置文件的skip-grant-tables 2. 重启服务 ```bash sudo systemctl restart mysqld ``` **版本差异注意:** - 5.7.6+版本必须使用`ALTER USER`语句[^3] - 旧版本可用`SET PASSWORD`命令 - 若使用`UPDATE`方式修改后,必须执行`FLUSH PRIVILEGES`[^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值