【问题标题】:How to get forgotten MySQL password from MySQL Workbench on Windows 10?如何从 Windows 10 上的 MySQL Workbench 获取忘记的 MySQL 密码?
【发布时间】:2020-04-11 10:06:49
【问题描述】:

这个问题与this one 基本相同,但适用于 Windows 10。

我已经检查了documentation,但仍然没有明确的答案。一步一步查看密码将是完美的,非常感谢!

【问题讨论】:

    标签: mysql-workbench password-encryption


    【解决方案1】:

    无法在 Windows 上的 MySQL Workbench 中查看存储的密码。该实现使用 Windows 加密 API 并将加密的密码存储在自己的文件中,该文件只能由同一主机上的同一用户解密。

    从该保管库中获取密码的唯一解决方案是使用Workbench 也在使用的代码。这需要为此任务编写一个小工具。

    【讨论】:

    • “只能由同一主机上的同一用户解密”-它是由我在主机上加密的。如何解密本质上是我的问题。
    • 我知道你的问题。我的回答通过一些额外的信息解决了这个问题。
    【解决方案2】:

    答案可能有点晚,但它可能会帮助其他有同样问题的人。

    首先去检查你的加密文件在哪里。通常存储在%AppData%\MySQL\Workbench\workbench_user_data.dat

    现在您有了文件位置,打开 powershell 并复制并粘贴以下命令序列(顺序很重要):

    $cipher = Get-Content $env:APPDATA\MySQL\Workbench\workbench_user_data.dat -Encoding Byte
    

    回车

    $scope = [System.Security.Cryptography.DataProtectionScope]::CurrentUser
    

    回车

    $mysqlpwd = [System.Security.Cryptography.ProtectedData]::Unprotect(
        $cipher, $null, $scope )
    

    回车

    [System.Text.UTF8Encoding]::UTF8.GetString($mysqlpwd)
    

    回车

    现在您可以看到以下输出:

    Mysql@X:Y@Z#DBUSER#DBPASSWORD
    ...
    ssh@Z:22#SSHUSER#SSHPASSWORD
    ...
    

    参考资料:

    【讨论】:

    • 传奇 - 就是为了这个。您可能必须添加以下内容才能访问 System.Security.Cryptography.ProtectedData:“Add-Type -AssemblyName System.Security”
    • @MichaelClark 感谢您提供额外信息。为了使第二个命令起作用,我也必须这样做。
    【解决方案3】:

    没有足够的分数来评论 @L.John 的答案,这个答案很有效。只是对这个命令的一个小改动 -

    $cipher = Get-Content $env:APPDATA\MySQL\Workbench\workbench_user_data.dat -Encoding Byte

    改为运行它

    $cipher = 获取内容 $env:APPDATA\MySQL\Workbench\workbench_user_data.dat -AsByteStream

    参考https://github.com/PowerShell/GPRegistryPolicyParser/issues/5

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 2022-07-23
      • 2013-07-20
      • 2012-01-31
      • 2014-08-20
      • 2012-04-21
      • 1970-01-01
      • 2017-05-01
      相关资源
      最近更新 更多