折腾数据库那阵子,最头疼的就是接手别人搭建的本地MySQL环境,服务器没人交接,文档一片空白,急需上线测试的时候,硬生生卡在如何查看mysql的用户名和密码这件小事上。网上乱七八糟的教程五花八门,试过一堆没用的办法,踩了一大堆低级坑,最后才摸清楚普通用户和root账号密码的查看、找回的真实可行操作,全是实打实的实操经历,没有半点虚的。
最开始傻乎乎的以为密码能直接用命令查询,总觉得数据库账号信息肯定有专属查看指令。打开终端,反复敲各种查询用户的命令,确实能成功列出所有MySQL的用户名,root、普通运维账号、测试账号都能清晰显示出来,可密码一栏永远是加密的星号或者乱码字符串。折腾好久才搞明白,MySQL为了安全机制,原始密码绝对无法直接查看,所有可视化的密码查询都是虚假的,加密后的密文也不能反向解密,这是系统底层的硬性限制,根本绕不过去。
当时不死心,接连试了三四个博主分享的所谓“解密命令”,要么终端直接报错提示指令不存在,要么执行之后跳出一堆看不懂的代码,白白浪费了半个多小时。最离谱的是跟着一篇教程修改数据库权限表,操作完之后直接导致本地MySQL服务异常,连正常登录都做不到,彻底把环境搞崩了,只能重启服务重新适配配置,心态直接炸裂。
查看用户名的操作其实特别简单,根本不用复杂配置。
登录MySQL终端后,输入select user,host from mysql.user;这条基础语句,回车之后就能列出当前数据库全部注册的用户名,还能看到每个账号对应的登录权限地址,localhost本地登录、%远程登录的区分一目了然,这一步是百分百能成功的,没有任何门槛,新手也能一次性操作成功。
密码没法查看,就只能走重置的路子,这是当时唯一能打通的办法。一开始操作总出错,要么跳过验证的步骤漏了,要么重置指令输错,导致每次修改完密码都不生效。
后来才反应过来,正确的流程要一步不落地走。首先关闭正在运行的MySQL服务,Windows直接在服务面板停止服务,Linux系统用stop指令即可。接着用跳过权限验证的方式启动MySQL,终端输入对应指令后,就能无密码直接登录数据库后台,不需要任何账号密码验证。
登录成功后,不用找复杂的配置项,直接针对需要的账号更新密码就行,本地环境一般直接重置root账号最实用。输入更新密码的语句,刷新权限,最后重启MySQL服务,新密码就能立刻生效。整套流程走完,就能用新的用户名密码正常登录数据库,完全解决账号密码遗失、无法查看的问题。
很多人纠结查看密码这件事,其实根本没必要。原始密码本身就没有任何查看渠道,所有声称能直接查看明文密码的方法,全是骗人的噱头,只会误导人瞎操作、弄坏数据库环境。能查到的只有已存在的所有用户名,密码的唯一解决方式就是重置,这是我反复翻车后确认的唯一可行方式。
那天晚上折腾完所有操作,修复好崩溃的数据库环境,重新登录上MySQL后台的时候,电脑屏幕刚好弹出门窗的晚风,盯着恢复正常的终端界面,只觉得之前的反复试错全是白费。最后悔的就是一开始不信系统限制,非要执着于查看原始密码,白白浪费了大量调试项目的时间。