从 HeidiSQL 配置文件中找回数据库密码

HeidiSQL 是 Windows 平台上一个开源数据库管理工具,支持 MariaDB, MySQL, SQL Server, PostgreSQL, SQLite, Interbase 和 Firebird 。HeidiSQL 使用 Delphi 编写,和其他诸如 Navicat, DBeaver 等专业数据库管理工具相比, 它更加轻量、启动和响应速度更快。

HeidiSQL 将数据库密码加密后保存在配置文件中,不过这种加密方式非常简单。可以在 HeidiSQL 的源代码文件 source/apphelpers.pas 中找到加密和解密算法:

PASCAL{***
  Password-encryption, used to store session-passwords in registry

  @param string Text to encrypt
  @return string Encrypted Text
}
function encrypt(str: String) : String;
var
  i, salt, nr : integer;
  h : String;
begin
  randomize();
  result := '';
  salt := random(9) + 1;
  for i:=1 to length(str) do begin
    nr := ord(str[i])+salt;
    if nr > 255 then
      nr := nr - 255;
    h := inttohex(nr,0);
    if length(h) = 1 then
      h := '0' + h;
    result := result + h;
  end;
  result := result + inttostr(salt);
end;



{***
  Password-decryption, used to restore session-passwords from registry

  @param string Text to decrypt
  @return string Decrypted Text
}
function decrypt(str: String) : String;
var
  j, salt, nr : integer;
begin
  result := '';
  if str = '' then exit;
  j := 1;
  salt := StrToIntDef(str[length(str)],0);
  result := '';
  while j < length(str)-1 do begin
    nr := StrToInt('$' + str[j] + str[j+1]) - salt;
    if nr < 0 then
      nr := nr + 255;
    result := result + chr(nr);
    inc(j, 2);
  end;
end;

按照下面的步骤从 HeidiSQL 配置文件中找回数据库密码:

导出配置文件

  1. 打开 HeidiSQL 并选择菜单「文件 > 导出配置文件」,将配置保存到 TXT 文件中
  2. 打开 TXT 配置文件,查找 Servers\<Your-DB-Instance-Name>\Password<|||>1<|||> (将 <Your-DB-Instance-Name> 替换成你恢复密码的数据库实例名称)
  3. 将找到的配置行后面的已加密数据库密码输入到文末的解码工具中进行解码

在下例中,我们找到 Homestead 数据库实例的已加密密码是 786A68776A795

Servers\Homestead\Password<|||>1<|||>786A68776A795