可用插件中没有支持'caching_sha2_password'认证方法的插件。

31

当我尝试使用Visual Studio 2018连接MySQL (8.0)数据库时,出现以下错误信息:

 

"Authentication method 'caching_sha2_password' not supported by any of the available plugins"

同时,我无法检索到数据库名称。 我使用mysql-for-visualstudio-1.2.7mysql-connector-net-8.0.11进行连接。 是否有可能修复它?


我在单独的对话框中收到的错误信息是:“'caching_sha2_password'身份验证方法不受任何可用插件支持”。 - vikash vishnu
这个问题已经有重复了。 https://dev59.com/VlUL5IYBdhLWcg3wsJ4d - Travelling Steve
9个回答

32

第一步

修改MySql服务器:

  1. 打开MySQL Installer - Community
  2. 选择产品 MySQL Server
  3. 单击最后一列中的快速配置
  4. 点击下一步,直到指向身份验证方法
  5. 在身份验证方法选项卡中-选择使用传统身份验证方法
  6. 点击下一步并完成

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

第二步

如果您正在使用 .net framework 4.5.2 您可以轻松升级 MySQL.Data 的引用:

  1. Visual Studio > 工具 > Nuget包管理器 > 管理解决方案的Nuget包
  2. 转到浏览选项卡,输入搜索框mysql并进入,第一个mysql.data包将出现,请安装它

现在登录,问题将得到解决


我正在使用db-up,但上述选项无效...第二个选项不可能,因为mysql是db-up的依赖项。还有其他想法吗? - Tijl .Reynhout
2
已经找到了答案。显然,您还可以为每个用户选择身份验证方法。而此用户已设置为新的身份验证方法。创建了一个具有标准身份验证方法的新用户。 - Tijl .Reynhout

10

这是MySQL 8.0版本中使用的一种新的身份验证方法,与传统的mysql_native_password方法不同。为了使其正常工作,您需要将MySQL客户端库升级到8.0版本或更高版本。

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

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


4
安装完整的Windows版本8.0.11 (来自 mysql-installer-community-8.0.11.0.msi) 后,仍然无法正常工作。仅重新安装最新版本的 Connector/Net (来自 mysql-connector-net-8.0.11.msi) 也会导致相同的异常。没有发行候选版可用(需要MySql Workbench的发行候选版才能解决该工具的相同问题)。 - Donald Rich

6

我曾遇到同样的问题。解决方法是删除对MySQL.Data的引用,然后重新添加。


1
升级MySQL.Data到8.0.x版本。 - Josue Martinez

6

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版本,问题就得到了解决。 - Ashutosh

2

只需更新您的 MySql.Data NuGet 包即可。


2
我们旧的.NET Framework 4.6.2项目在几个月前我们升级了MySQL服务器版本后,当有人重新使用它时,开始抛出这个异常。
所以一开始,像其他人建议的那样,我通过NuGet软件包管理器更新了所有的软件包(包括MySql.Data到v8.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可能是一些过时的属性。没头绪。


对我有用,但是我还需要在连接字符串中加入SslMode=None参数。 - Liquid Core

1

您是否不需要MySQL中的身份验证方法为'caching_sha2_password'? 如果不需要,为什么不切换到'Standard'呢? 您可以在“用户和权限”设置中查看身份验证类型。


你能提供一些关于如何在MySQL 8.0上完成这个任务的信息吗? - Robert Vuković
根据我的经验,“标准”在新的安装/升级中默认为“caching_sha2_password”。 - rborum

0

当我尝试将客户端机器连接到服务器时,我遇到了相同的错误。我必须连接到托管在服务器上的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. 现在,从SQL安装工作区(C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.5.2)复制所有文件(特别是mysqlData.dll)到Visual Studio 2019工作区(C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE)中。 5. 注销您的计算机,现在在Visual Studio 2019中打开UIConfigEditor源代码。
现在在“解决方案资源管理器”中,选择“引用”->“添加引用”->“转到程序集”选项卡->“扩展”->搜索mysql.data.dll(确保它在那里)->选中该选项。 请注意,在此情况下,mysql.data.dll的版本为8.0.18.0。

等一下...VS 2019 是从哪里进入的呢?我们只是在生产机器上安装,而不是开发人员的电脑。 - TAHA SULTAN TEMURI
1
这不应该被标记为答案。这是针对特定客户构建的特定解决方案,适用于任何从搜索中着陆到此页面的人都不会发现有用,并且它也未能回答问题的“为什么”。这里有更好的答案应该被标记。 - Bryan W

-5
有时候,原因很傻。在我的情况下,我忘记在MySQL中创建我的数据库了。有时候,有人会忘记运行数据库守护进程。
并不是每个可怕的错误信息都是由于可怕的情况而引起的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接