【问题标题】:Authentication failed using method mysql_native_password使用方法 mysql_native_password 验证失败
【发布时间】:2013-07-12 22:31:09
【问题描述】:

尝试使用 Visual Studio 2012 Update 3 中的 Connector/Net C#/WinForms 连接到我的 Web 主机上的 MySQL,但收到以下错误消息:

使用方法 'mysql_native_password' 对用户 'username@mydomain.com' 的主机 '1.1.1.1' 进行身份验证失败,并显示消息:用户 'username@mydomain.com'@'2.2.2.2' 的访问被拒绝(使用密码:是的)

string connectionString = "SERVER=1.1.1.1;PORT=3306;DATABASE=databaseName;UID=username@mydomain.com;PASSWORD=mypassword;";

MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();

我正在远程连接,已将我的 IP 列入白名单(甚至临时将所有 (%) 列入白名单以进行测试),三次检查用户名和密码以及 IP。

我最初尝试使用没有域的用户名(用户名而不是 username@mydomain.com),但它给了我以下错误:

不再支持使用旧密码进行身份验证,请使用 4.1 样式的密码。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 不重复,因为第一条错误消息是有问题的。通过将@mydomain.com 添加到用户名来解决第二条错误消息。
  • 您的错误消息暗示这是正确的做法,即您的 MySQL 用户名不包含 @mydomain.com
  • 我没有解决方案,因为我似乎有同样的问题,但我确实注意到在我的情况下,我使用的是 URL。如果我使用物理IP,那么问题就消失了。我目前的理论是,问题要么是 DNS 问题,要么是防火墙问题。

标签: c# mysql winforms visual-studio-2012 mysql-connector


【解决方案1】:

它的“远程数据库访问主机”问题。 "您可以通过将外部 Web 服务器的域名添加到能够访问您网站上的数据库的主机列表中来允许外部 Web 服务器访问您的 MySQL 数据库。"

MySql 访问权限未授予运行应用程序的系统的 IP 地址。(在您的情况下为 '2.2.2.2' )。

注意:-“2.2.2.2”是您的公共 IP 地址。

【讨论】:

    【解决方案2】:

    两种可能的情况:

    1. MySQL 区分大小写确保连接字符串中Database= 的大小写与实际数据库名称匹配
    2. 您可能必须向用户授予权限。

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      检查您的应用程序设置文件(或存储连接字符串的任何位置)。

      在我的情况下,应用程序使用的是旧的连接字符串(无效)。我假设我在设置文件的代码中所做的更改会反映给设计者(设置文件的)。但事实并非如此!

      【讨论】:

        【解决方案4】:

        在 MySQL 中创建新用户后,在 MySQL Workbench 中“测试连接”将成功,但 C# MySqlConnection.Open() 将抛出与问题相同的异常和消息(使用 localhost 和 127.0.0.1 和本地 IP 地址进行测试) .

        原因是MySqlConnection.Open() 会以某种方式使用 SELECT 权限,您至少需要为新用户启用 SELECT 权限。错误信息具有误导性。

        【讨论】:

          【解决方案5】:

          这可能与 ASP.NET 4.5 上基于特定 Membership SQL Server 指令的情况有关,解决方法是在 web.config 中创建新成员,删除 mvc 4 AccountControler 并在此处或 Internet 上使用 MVC3 中的旧成员:

          http://www.nsilverbullet.net/2012/11/06/using-mysql5-as-membership-backend-for-aspnet45-mvc4-application/

          【讨论】:

            【解决方案6】:

            在我的情况下,没有使用更新的密码。我刚刚使用密码生成器生成密码并复制它,但忘记单击更改密码。

            还要检查用户是否已添加到数据库并具有权限。

            【讨论】:

              【解决方案7】:

              对我来说,使用实际 IP 地址而不是域名解决了问题

              【讨论】:

                【解决方案8】:

                用像 Navicat 这样的程序检查 mysql 服务器用户是否有本机密码。一切都正确,但如果您收到此错误,请检查链接 DLL 的版本

                这个错误; Mysql.Data.dll 和 Mysql Server 版本不匹配错误。下载并安装旧版本

                https://downloads.mysql.com/archives/c-net/

                Mysql版本

                Mysql.Data.Dll 版本= 6.0.3

                【讨论】:

                • 用 Navicat 之类的程序检查 mysql 服务器用户是否有本机密码。一切都正确,但如果您收到此错误,请检查链接 DLL 的版本
                猜你喜欢
                • 1970-01-01
                • 2017-10-14
                • 2012-04-23
                • 2019-10-09
                • 2017-01-19
                • 2016-10-27
                • 2021-08-23
                • 1970-01-01
                相关资源
                最近更新 更多