CentOS7下mysql忘记root密码的处理方法

本文详细介绍了在忘记MySQL root密码时,如何通过临时禁用权限表检查,绕过密码验证,然后登录数据库并重置root密码的具体步骤。包括修改my.cnf配置文件,重启MySQL服务,使用空密码登录,更新root用户密码,刷新权限,删除临时配置,再次重启服务等操作。

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

1.  vi /etc/my.cnf,在[mysqld]中添加

skip-grant-tables

例如:

[mysqld]
skip-grant-tables
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

2.  重启mysql

service mysql restart

3.  使用用户无密码登录

mysql -uroot -p (直接点击回车,密码为空)

4. 选择数据库

use mysql;

5. 修改root密码

update user set authentication_string=password('123456') where user='root';

6 .刷新权限

 flush privileges;

7 .退出

exit;

8 .删除第1部增加的配置信息

skip-grant-tables

9 .重启mysql

service mysql restart

 

参考地址:https://blog.youkuaiyun.com/huanghaifei922/article/details/54644818

### 如何在 CentOS 7 中重置 MySQL Root 密码 #### 停止 MySQL 服务 为了安全地重置密码,需先停止正在运行的 MySQL 或 MariaDB 服务。这可以通过 `systemctl` 工具来完成。 ```bash sudo systemctl stop mysqld.service ``` #### 启动 MySQL 跳过权限表 接着以跳过授权表的方式启动 MySQL 数据库服务器,这样可以绕过正常的认证过程: ```bash sudo mysqld_safe --skip-grant-tables & ``` 此命令会在后台启动 MySQL 实例并忽略访问控制设置[^1]。 #### 登录到 MySQL 控制台 此时可以直接连接至 MySQL 不需要提供任何凭证信息: ```bash mysql -u root ``` 一旦进入 MySQL 提示符下,则可继续下一步操作[^2]。 #### 修改 Root 用户密码 对于不同版本的 MySQL 可能存在差异化的指令集用于更新管理员账户的信息。针对较新的发行版如 MySQL 8.0 推荐采用如下 SQL 语句: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPasswordHere!'; FLUSH PRIVILEGES; ``` 上述代码片段将把本地主机上的 root 用户的新密码设为 "NewPasswordHere!" 并刷新权限缓存以便立即生效[^3]。 另一种方法涉及创建一个包含必要变更脚本的小型 .sql 文件,并通过特定参数让 MySQL 在重启时自动执行它。例如,在 `/tmp/` 下建立名为 `mysql_root_password.sql` 的文件,其内容应为: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'AnotherSecurePasswd!'; ``` 随后利用下面这条 shell 命令行组合实现无交互式的密码更改流程: ```bash cat >/tmp/mysql_root_password.sql <<EOL ALTER USER 'root'@'localhost' IDENTIFIED BY 'AnotherSecurePasswd!'; EOL sudo mysqld --user=mysql --init-file=/tmp/mysql_root_password.sql & rm /tmp/mysql_root_password.sql ``` 这种方法同样能够达到目的而且更加自动化一些[^4]。 #### 验证新密码有效性 最后一步是要确认刚刚所做的改动确实有效。为此只需再次尝试用新设定好的凭据去登陆即可: ```bash mysql -uroot -p ``` 当被提示输入密码的时候就键入刚才所定义的那个字符串看看能否顺利进入到数据库管理界面内。 #### 正常方式重新启动 MySQL 服务 完成了以上所有步骤之后记得要按照常规模式开启 MySQL 服务而不是之前那种特殊状态下的做法: ```bash sudo systemctl start mysqld.service ``` 并且建议检查一下 SELinux 是否处于宽容(permissive)而非强制(enforcing),因为后者可能会阻止某些操作正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值