【问题标题】:Authentication method 'caching_sha2_password' not supported by any of the available plugins任何可用插件都不支持身份验证方法“caching_sha2_password”
【发布时间】:2018-10-09 19:38:52
【问题描述】:

当我尝试将 MySQL (8.0) 数据库与 Visual Studio 2018 连接时,我收到此错误消息

“任何可用插件都不支持身份验证方法'caching_sha2_password'”

我也无法检索数据库名称。 我使用mysql-for-visualstudio-1.2.7mysql-connector-net-8.0.11 进行连接。 有什么办法可以解决。

【问题讨论】:

标签: c# mysql authentication visual-studio-2017


【解决方案1】:

第一

修改 MySql 服务器:

  1. 打开 MySQL 安装程序 - 社区
  2. 选择产品 MySQL 服务器
  3. 点击最后​​一列的快速配置
  4. 单击下一步,直到您不会指向身份验证方法
  5. 在身份验证方法选项卡上 - 选择 使用旧身份验证方法
  6. 点击下一步完成

现在您可以使用普通密码登录了

第二次

如果您使用的是 .net 框架 4.5.2 您可以轻松升级 MySQL.Data 参考:

  1. Visulastudio> 工具> Nuget 包管理器>管理解决方案的 nuget 包
  2. 转到浏览选项卡,写入搜索文本框 mysql 并输入 第一个 mysql.data 包会来,安装它

现在登录,问题将解决

【讨论】:

  • 我正在使用db-up,上面的选项不起作用...第二个选项是不可能的,因为mysql是db-up的依赖项。还有其他想法吗?
  • 已经找到答案了。显然,您还可以为每个用户选择身份验证方法。并且此用户被设置为新的身份验证方法。使用标准身份验证方法创建新用户
【解决方案2】:

这是 MySQL 8.0 版中使用的新身份验证方法,与传统方法 mysql_native_password 相比。为了完成这项工作,您需要将 MySQL 客户端库升级到 8.0 版。

因此,请使用以下链接并获取 8.0.11 或更高版本。

https://dev.mysql.com/downloads/connector/net/

【讨论】:

  • 这不起作用。从 mysql-installer-community-8.0.11.0.msi 安装完整的 Windows 发行版 8.0.11 后,仍然会引发异常。从 mysql-connector-net-8.0.11.msi 仅重新安装最新版本的 Connector/Net 也会导致相同的异常。没有候选发布版(需要 MySql Workbench 的发布候选版来解决与该工具相同的问题)。
【解决方案3】:

Pomelo.EntityFrameworkCore.MySql Nuget 包更新为2.0.0.1 而不是2.0.0

2.0.0.12.0.02.0.1 更稳定

【讨论】:

  • 奇怪的是,一旦我将它更新到 2.0.1 并将 ef 设计包更新到 2.0.1,问题就解决了
【解决方案4】:

我有同样的问题。通过删除对 MySQL.Data 的引用然后重新添加它来修复它。

【讨论】:

  • 升级 MySQL.Data 到版本 8.0.x
【解决方案5】:

只需为 MySql.Data 更新您的 nuget 包

【讨论】:

    【解决方案6】:

    你几乎不需要 MySQL 中的身份验证方法是 'caching_sha2_password' 吗?如果没有,你为什么不把它切换到“标准”? 您可以在“用户和权限”设置中检查此项并查找身份验证类型。

    【讨论】:

    • 您能否提供一些信息如何在 MySQL 8.0 上执行此操作?
    • 根据我的经验,在新安装/升级时,“标准”默认为“caching_sha2_password”
    【解决方案7】:

    我们的旧 .NET Framework 4.6.2 项目开始抛出此异常,因为几个月前我们更新了 MySQL 服务器版本后有人重新使用它。 p>

    所以一开始,按照其他人的建议,我通过 NuGet 包管理器 更新了所有包(包括 MySql.Datav8.0.24) - 一开始似乎没有帮助。然后在项目属性中将项目目标框架更新为 .NET Framework 4.7.2 - 仍然没有。

    然后我注意到连接字符串有这个 providerName 参数:

    <connectionStrings>
       <add name="___" providerName="MySql.Data.MySqlClient" connectionString="server=___;user id=___;password=___;database=___;"/>
    </connectionStrings>
    

    所以我尝试从中删除 .MySqlClient 部分,留下它

    providerName="MySql.Data"
    

    并且由于某种原因它起作用了:) 也许更新 MySql.Data 包是解决方案的一部分,而 .MySqlClient 是一些过时的财产。不知道。

    【讨论】:

      【解决方案8】:

      我在尝试将客户端计算机连接到服务器时遇到了同样的错误。我必须连接到服务器上托管的 MySQL 服务器。我已经开始工作了。遵循以下步骤:

      1. 下载最新的 MySQL 社区版本,即安装的 8.0.18.0。确保在服务器机器上安装了相同版本的 MySQL。请注意,客户端机器和服务器机器上安装相同版本的 MySQL,否则客户端机器应安装更高版本的 MySQL。
      2. 在 MySQL 安装程序的帮助下,确保您在客户端计算机上安装了“开发人员”版本,以便在其中安装 MySQL 服务器、SQL.net、mySQL for Visual Studio 等。
      3. 我们在最新的 MySQL 社区中使用 .Net framework 4.5.2。因此,请确保您使用 Visual Studio 2019。在 Visual Studio 2019 中构建 UiConfigEDItor 源代码,以便支持更高版本的 .Net framework 4.5。
      4. 现在,将所有文件(尤其是 mysqlData.dll)从 SQL 安装的工作区(C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.5.2)复制到 Visual Studio 2019 工作区(C:\程序文件 (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE)。
      5. 注销您的计算机,现在在 Visual Studio 2019 中打开 UIConfigEditor 源代码。

      现在在解决方案探索->参考->添加参考->转到程序集 tsb->扩展->搜索 mysql.data.dll(确保它在那里)->检查该选项。 请注意,本例中 mysql.data.dll 的版本为 8.0.18.0。

      【讨论】:

      • 等一下……vs 2019 从何而来?我们只是安装在生产机器上而不是开发人员 PC 上
      • 这不应被标记为答案。这是针对特定客户端构建的针对通用问题的特定解决方案,任何通过搜索登陆此页面的人都不会发现有用,并且它也无法回答问题的“原因”。这里有更好的答案应该标记出来。
      猜你喜欢
      • 2021-07-14
      • 2018-12-06
      • 2018-10-02
      • 2020-12-07
      相关资源
      最近更新 更多