如何查看mysql的用户名和密码:通过本地配置文件与命令行实操查询

如何查看mysql的用户名和密码:通过本地配置文件与命令行实操查询

前段时间接手一台老旧的本地服务器,项目突然报错连不上数据库,情急之下急着如何查看mysql的用户名和密码,翻遍了网上的教程,踩了一堆无用的坑,最后靠着实打实的手动操作,摸清了普通人能直接用上的查询方法,没有复杂的底层原理,全是实操过的有效步骤。

最开始脑子犯轴,一直想着用登录后的数据库命令查密码,折腾了半个多小时毫无进展。现在回头看才发现,MySQL加密后的密码是无法直接解密查看的,网上那些所谓的解密指令全是噱头,根本行不通。密码只能通过原有配置文件找回,或者直接重置,用户名倒是可以通过多条简单命令快速筛查出来,这是最基础、也最靠谱的事实。

先说说最简单、零门槛的用户名查看方式,不用登录数据库,新手也能操作。打开服务器的命令行窗口,输入`mysql -u root -p`尝试登录,就算不知道密码也没关系,紧接着输入`select user,host from mysql.user;`,只要能进入简易查询界面,就能直接列出数据库所有的用户名和对应的访问地址。当时第一次操作的时候,傻傻的输错了指令格式,多打了多余的空格,导致终端一直报错,反复核对字符格式后,才成功调出了完整的用户列表。

很多人会忽略本地配置文件这个关键入口,这是找回账号密码最核心的途径。MySQL的初始账号密码,基本都会记录在安装目录的`my.ini`或者`my.cnf`配置文件里。Windows系统可以直接搜索这两个文件,Linux系统则需要在`/etc/mysql/`目录下查找。打开文件后,下拉找到`[mysqld]`和`[client]`板块,里面会清晰标注默认的user和password信息,新装的数据库账号密码基本都能在这里直接找到。

之前踩过一个很致命的误区,以为配置文件里的密码字段为空,就代表数据库没有密码。实际根本不是这样,配置文件空白,只是说明后续手动修改过密码,覆盖了初始配置,这种情况下就查不到原始密码,只能选择重置。当时白白浪费了十几分钟反复刷新文件,妄图找到隐藏的密码,最后才反应过来,修改过的密码不会留存到初始配置里。

如果配置文件找不到密码,就只能用免密登录重置的方式获取可用账号密码。先停止MySQL服务,通过命令跳过密码验证启动数据库,再登录数据库修改root用户的密码。整套操作不需要记住原有密码,全程靠命令行执行,适配绝大多数本地和服务器环境。操作的时候要注意,不同MySQL版本的重置命令不一样,5.7版本和8.0版本的指令不能混用,搞错版本就会执行失败,这是很多人实操翻车的关键点。

用户名的查询几乎零失误,唯独密码一直没有直接查看的办法。折腾这么久彻底摸清了,MySQL为了数据安全,对用户密码做了高强度加密存储,系统里只会留存加密后的字符串,乱码无法解析,任何人都无法直接查看明文密码。所以网上所有声称可以直接查看MySQL明文密码的方法,全部都是无效的,不用再浪费时间尝试。

最后处理完数据库故障,盯着命令行里刷新出来的用户列表,忽然觉得之前的慌乱特别多余。其实根本不用慌慌张张找各种偏方,能查的只有用户名,密码查不出就重置,仅此而已。那天忙完所有操作,关掉命令行,第一件事就是新建了一个文本,把数据库的账号密码单独存了下来。