Mysql的root密码忘了怎么办?

当在Linux上使用MySQL时忘记root密码,可以通过停止服务、设置跳过密码验证、启动服务、修改密码及恢复配置来解决。具体包括:停止mysql服务,编辑my.cnf添加skip-grant-tables,启动服务,无密码进入MySQL,使用`set password for 'root'@'localhost' = password('123456');`命令修改密码,最后去掉skip-grant-tables并重启服务。
  • 总体说明

对于学习Linux的人来说,使用Mysql时可能不会刻意地用Excel记录下自己设定的root密码,亦或是记下了但是却在输入的时候发生了冲突。

 当这种局面出现的时候,下面的方法也许可以给你提供一些参考。

操作步骤:

1、停止mysql服务

2、进行跳过密码验证的设置

3、启动mysql服务

3、跳过密码验证进入Mysql

4、修改root密码

5、收尾工作

  • 详细的操作说明

1、停止mysql服务

首先是停止mysql服务。

net stop mysql           #笔者这里用的是systemctl stop mysqld

2、进行跳过密码验证的设置

在/etc/my.cnf文件中,找到[mysqld]一行(如没有则请自行添加),在下面添加一行skip-grant-tables

vim /etc/my.cnf

3、启动mysql服务

net start mysql           #笔者这里用的是systemctl start mysqld

4、跳过密码验证进入Mysql

mysql -u root -p                      #要求你输入密码的时候,打个回车即可

5、修改root密码

MariaDB[(none)]> set password for 'root'@'localhost'=password('123456');
#注:有些博客中使用了
update mysql.user set password=password("123456") where User="root" and Host="localhost";
的命令,但是总会出现'Password' is not updatable'的错误。
#注2:如果出现
The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
的报错的话,请刷新一下权限再修改root密码。

刷新权限的命令:
​​​​​​​MariaDB [(none)]> flush privileges;

6、收尾工作

修改完毕后,停止mysql服务

net stop mysql

在/etc/my.cnf文件中,找到[mysqld]一行(如没有则请自行添加),在添加的skip-grant-tables前面加上#号将其无效化。

vim /etc/my.cnf

再次启动mysql服务

net start mysql

最后验证一下修改后的密码是否正确即可。

mysql -u root -p

要重置或找回忘记的 MySQL root 密码,可以通过跳过授权表的方式进行操作。以下是适用于不同场景的详细步骤: 在 Linux 系统中,首先需要停止 MySQL 服务。可以使用以下命令来完成: ```bash sudo systemctl stop mysqld ``` 接着,以安全模式启动 MySQL,使用 `--skip-grant-tables` 选项来跳过所有权限检查: ```bash sudo mysqld_safe --skip-grant-tables & ``` 由于跳过了权限表,可以直接登录 MySQL 而不需要密码: ```bash mysql -u root ``` 登录后,在 MySQL 命令行中执行以下 SQL 语句来修改 root 密码: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 请将 `'new_password'` 替换为你希望设置的新密码[^3]。完成密码修改后,退出 MySQL 并重启服务以使更改生效: ```bash exit; sudo systemctl restart mysqld ``` 对于 Windows 系统,进入 MySQL 安装的 bin 文件夹,并打开命令提示符窗口。如果 MySQL 服务正在运行,先停止它: ```cmd net stop mysql ``` 然后通过指定配置文件路径并启用跳过授权表的方式启动 MySQL: ```cmd mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory ``` 在另一个管理员权限的命令提示符窗口中,同样进入 MySQL 的 bin 目录并直接输入 `mysql` 登录数据库。如果遇到命令找不到的问题,尝试使用 `.\mysql`。 一旦进入 MySQL 工作台界面,切换到 mysql 数据库: ```sql use mysql; ``` 尝试修改 root 用户的密码时,可能会因为权限认证没有重新加载而报错。此时应先执行以下命令重新加载权限: ```sql flush privileges; ``` 再次尝试修改 root 用户的密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ``` 完成后,输入 `exit` 退出命令提示符窗口[^4]。 如果是使用 Docker 容器部署的 MySQL,可以在无密码登录后让 MySQL 重新加载权限表,然后重新设置 root 用户密码。执行以下命令刷新权限并修改密码: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'%' IDENTIFIED BY 'U&tTFG=794A8#V10'; ALTER USER 'root'@'localhost' IDENTIFIED BY 'U&tTFG=794A8#V10'; FLUSH PRIVILEGES; ``` 编辑 MySQL 配置文件 `/etc/my.cnf`,移除之前添加的 `skip-grant-tables=1` 行,保存后重启容器使配置生效: ```bash sed -i '/skip-grant-tables=1/d' /etc/my.cnf docker restart mysql ``` 以上方法均适用于 MySQL 5.7 及更早版本。对于 MySQL 8.0 或更高版本,请参考官方文档或相应版本的具体指南。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值