使用方法mysql_native_password进行身份验证失败

时间:2013-07-15 06:14:58

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

尝试使用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'(使用密码: YES)

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样式密码。

非常感谢任何帮助,谢谢!

7 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:3)

两件事:

  1. MySQL 区分大小写确保连接字符串中Database=的大小写与实际数据库名称匹配
  2. 您可能必须向用户授予权限。
  3. 我希望这对你有所帮助。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

这可能与ASP.NET 4.5上基于特定成员身份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/

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

在MySQL中创建新用户后,在MySQL Workbench中,“测试连接”将成功,但C#MySqlConnection.Open()将引发与问题相同的异常和消息(已通过localhost和127.0.0.1和本地ip测试)地址)。

原因是MySqlConnection.Open()将以某种方式使用SELECT特权,并且您至少需要为新用户启用SELECT特权。该错误消息具有误导性。

答案 6 :(得分:-1)

在这里评论以防万一有人像我一样绝对愚蠢:不知何故,密码后面的分号被删除了,所以它与连接字符串中的下一项一起运行。如果您的密码中包含一堆符号,则很容易被忽视。