Linux中MySQL跳过密码验证以及Bug的解决方法(图文)
短信预约 -IT技能 免费直播动态提醒
1.问题所示
发现密码验证错误,遗失密码
2. 基本知识
- 停止mysql服务:
sudo systemctl stop mysql
- 以跳过权限表模式启动MySQL:
sudo mysqld_safe --skip-grant-tables &
- 登录MySQL:
mysql -u root
- 重置root用户密码:(不同版本不一,如果执行出错,可看下文)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
- 重新启动MySQL服务:
sudo systemctl start mysql
3. 解决方法
根据上述的基本知识操作进行演示,过程中可能会出现个别Bug
3.1 跳过验证Bug
跳过验证的时候,如果出现如下提示:
root@iZ7xv98hm4hq0dd3xv23vuZ:~# sudo mysqld_safe --skip-grant-tables &
[1] 720919
root@iZ7xv98hm4hq0dd3xv23vuZ:~# 2024-09-02T14:05:11.207426Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2024-09-02T14:05:11.233525Z mysqld_safe A mysqld process already exists
[1]+ Exit 1 sudo mysqld_safe --skip-grant-tables
截图如下:
先确保所有 MySQL 相关的进程都被停止:ps aux | grep mysqld
如果看到任何运行中的 MySQL 进程,使用 kill 或 kill -9 命令手动终止它们:sudo kill -9 <PID>
3.2 设定初始密码
使用的是 MySQL 5.7 或更高版本,密码字段通常是 authentication_string,但 PASSWORD() 函数可能已被弃用
UPDATE mysql.user SET authentication_string='123456' WHERE User='root' AND Host='localhost';
使用的是 MySQL 5.6 或更低版本,密码字段可能是 password,可以使用以下命令:
UPDATE mysql.user SET password=PASSWORD('123456') WHERE User='root' AND Host='localhost';
之后统一执行:`FLUSH PRIVILEGES;``
到此这篇关于linux中MySQL跳过密码验证以及Bug的解决方法(图文)的文章就介绍到这了,更多相关Linux MySQL跳过密码验证Bug内容请搜索编程网(www.lsjlt.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.lsjlt.com)!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341