19

尝试使用 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 样式的密码。

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

4

8 回答 8

7

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

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

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

于 2013-10-10T09:45:22.587 回答
5

两种可能的情况:

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

我希望这对你有帮助。

于 2014-10-20T02:59:58.923 回答
1

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

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

于 2015-11-29T14:15:25.047 回答
1

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

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

于 2020-11-29T12:59:57.313 回答
0

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

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

于 2018-01-28T22:19:57.280 回答
0

这可能与 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/

于 2016-10-22T15:43:27.993 回答
0

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

于 2021-08-30T04:09:56.100 回答
-1

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

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

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

mysql 版本 < 4.5

Mysql.Data.Dll 版本= 6.0.3

于 2021-08-19T08:18:18.117 回答