首页 > 数据库 >MySQL忘记数据库密码,怎么连接数据库(Windows环境)

MySQL忘记数据库密码,怎么连接数据库(Windows环境)

时间:2024-03-18 18:11:55浏览次数:34  
标签:function return string Windows 数据库 currentVector protected result MySQL

一、Navicat连接过数据库,还有连接历史记录

1.找回原密码

(1)打开注册列表

【win+R】-->【regedit】打开注册表

 

(2)查找Navicat密码保存位置,找到数据库名【数据库名称ruoyi】

计算机\HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\Navicat\Servers\ruoyi

在右侧找到pwd属性,右键点击【修改】

(3)复制pwd的属性值

(4)前往代码在线运行网址 https://tool.lu/coderunner/

复制粘贴以下代码运行解密。

<?php
namespace FatSmallTools;
class NavicatPassword
{
    protected $version = 0;
    protected $aesKey = 'libcckeylibcckey';
    protected $aesIv = 'libcciv libcciv ';
    protected $blowString = '3DC5CA39';
    protected $blowKey = null;
    protected $blowIv = null;
    public function __construct($version = 12)
    {
        $this->version = $version;
        $this->blowKey = sha1('3DC5CA39', true);
        $this->blowIv = hex2bin('d9c7c3c8870d64bd');
    }
    public function encrypt($string)
    {
        $result = FALSE;
        switch ($this->version) {
            case 11:
                $result = $this->encryptEleven($string);
                break;
            case 12:
                $result = $this->encryptTwelve($string);
                break;
            default:
                break;
        }
        return $result;
    }
    protected function encryptEleven($string)
    {
        $round = intval(floor(strlen($string) / 8));
        $leftLength = strlen($string) % 8;
        $result = '';
        $currentVector = $this->blowIv;
        for ($i = 0; $i < $round; $i++) {
            $temp = $this->encryptBlock($this->xorBytes(substr($string, 8 * $i, 8), $currentVector));
            $currentVector = $this->xorBytes($currentVector, $temp);
            $result .= $temp;
        }
        if ($leftLength) {
            $currentVector = $this->encryptBlock($currentVector);
            $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
        }
 
        return strtoupper(bin2hex($result));
 
    }
 
    protected function encryptBlock($block)
    {
        return openssl_encrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING); 
    }
 
    protected function decryptBlock($block)
    {
        return openssl_decrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING); 
    }
 
    protected function xorBytes($str1, $str2)
    {
        $result = '';
        for ($i = 0; $i < strlen($str1); $i++) {
            $result .= chr(ord($str1[$i]) ^ ord($str2[$i]));
        }
        return $result;
    }
 
    protected function encryptTwelve($string)
    {
        $result = openssl_encrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
        return strtoupper(bin2hex($result));
    }
    
    public function decrypt($string)
    {
        $result = FALSE;
        switch ($this->version) {
            case 11:
                $result = $this->decryptEleven($string);
                break;
            case 12:
                $result = $this->decryptTwelve($string);
                break;
            default:
                break;
        }
        return $result;
    }
    
    protected function decryptEleven($upperString)
    {
        $string = hex2bin(strtolower($upperString));
        $round = intval(floor(strlen($string) / 8));
        $leftLength = strlen($string) % 8;
        $result = '';
        $currentVector = $this->blowIv;
        for ($i = 0; $i < $round; $i++) {
            $encryptedBlock = substr($string, 8 * $i, 8);
            $temp = $this->xorBytes($this->decryptBlock($encryptedBlock), $currentVector);
            $currentVector = $this->xorBytes($currentVector, $encryptedBlock);
            $result .= $temp;
        }
        if ($leftLength) {
            $currentVector = $this->encryptBlock($currentVector);
            $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
        }
        return $result;
    }
 
    
 
    protected function decryptTwelve($upperString)
    {
        $string = hex2bin(strtolower($upperString));
        return openssl_decrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
    }
}
 
 
 
use FatSmallTools\NavicatPassword;
 
//需要指定版本,11或12
 
//$navicatPassword = new NavicatPassword(12);
 
$navicatPassword = new NavicatPassword(11);
 
 
 
//解密
$decode = $navicatPassword->decrypt('15057D7BA390');
echo $decode."\n";

(5)选择PHP,将复制的pwd值,替换到最底处,点击执行按钮,右侧的执行结果即为明码

2.放弃老密码,修改新密码 

打开Navicat,输入修改用户密码语句

ALTER USER 'root'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

标签:function,return,string,Windows,数据库,currentVector,protected,result,MySQL
From: https://www.cnblogs.com/BKYhailong/p/18080385

相关文章

  • Linux安装Mysql5.7数据库
    一、前置条件系统版本:Linux CentOS7.5MySQL版本:mysql5.7.31二、操作步骤2.1、关闭mysql服务servicemysqldstop提示使用命令:systemctlstopmysqld.service2.2、grep查找已安装的mysql服务rpm-qa|grep-imysql2.3、卸载mysql:yum-yremove命令—......
  • Mysql,MongoDB,Redis的横纵向对比
    一,什么是MysqlMysql是一款安全,可以跨平台,高效率的数据库系统,运行速度高,安全性能高,支持面向对象,安全性高,并且成本比较低,支持各种开发语言,数据库的存储容量大,有许多的内置函数。二,什么是MongoDBMongoDB是基于分布式文件存储的数据库,是一个介于关系型数据库和非关系型数据库之......
  • oracle数据库执行报错:ORA-01861: 文字与格式字符串不匹配
    报错sql:selectto_date(sysdate,'yyyy-mm-dd')afromuser原因是:to_date()函数第一个参数,要求的是一个字符串格式,当这个值是一个日期格式的时候就会报错,解决方案:方案一:使用to_char(日期,'yyyy-mm-dd')将日期转为字符,再使用to_date(),方案二:修改数据库配置,让数据库隐式......
  • EFcore 连接mysql的一些坑。
    好久不耍mysql了,EFcore连接的时候遇到了点问题,特此记录下来,防止以后又忘了。 第一个问题相当的奇葩,居然告诉我缺.NETcore2.0,,,无语,估计是依赖项里面引用了2.0,于是乎老老实实去官网下载安装。地址如下:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-2.0......
  • 拌合楼管理系统开发(五) 数据库表和字段的设计方案
    前言:继续闭门造车    今天花时间把前面一段时间思考的整个拌合楼管理系统的数据库实现在mysql中建立起来了.表和字段含义如下了一、数据库表目录序号表名注释/说明1Company往来单位2ContractAttach合同附件3ContractBody合同表体4Contr......
  • 基于PHP+Mysql网上商城购物商城系统设计与实现
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • Mysql之GTID
    GTIDMysql5.6引入GTID(GlobalTransactionIDs),多线程复制;由服务器的UUID和事务ID号组成唯一标识某一个主机的某个事务的ID号;每一个事务首部都有GTID,因此GTID使得追踪和比较事务变得简单,能够快速恢复数据库。GTID有事务的编号,主从可以自动协商发现那些事务已经执行,没有执行......
  • xtu数据库原理实验课(2)
    导入脚本首先直接打开TOAD,按照之前的配置,现在进入只需要输入账号密码即可连接(注意校园网)在头歌中下载建库脚本和一个数据脚本(我这里下的大数据脚本,,没耐心的话不建议,导入太耗时间了)那个.7z文件实际上就是由建表脚本和大数据脚本构成的,所以直接在这三个里下载即可第一个是建......
  • 解决问题:java、mysql、docker、linux、redis、solr适合初级或者刚入门的大学生
    java、mysql、redis、linux、docker中的问题Java问题解决,idea问题解决调试,服务器问题解决,项目部署,项目调试linux服务器上的安装以及运行环境的部署docker的部署可做技术栈:java开发:javaweb,jsp,servlet,javase,spring,springboot,ssm服务器:linux问题docker问题,To......
  • windows下pm2安装使用
    1.PM2简介PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。PM2的运行需要node环境和npm的支持,node环境和npm安装检查: PM2常用命令:--watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听......