不再支持使用旧密码进行身份validation,请使用4.1样式密码

我的网站有hostgator,我想用C#windows应用程序访问mysql数据库但是当我尝试连接时收到了这条消息:

“不再支持使用旧密码进行身份validation,请使用4.1样式密码”

我试过给定解决方案:

SET SESSION old_passwords=0; SET PASSWORD FOR user@host=PASSWORD('your pw here'); 

第一个查询执行成功但我在第二个查询执行时收到错误“用户@主机拒绝访问”。 我无法理解为什么会出现这个问题。 我正在使用MySQL-connecter-net 6.6.5。

我成功地将我的数据库与MySql workbench 5.2.47连接起来。

任何人都可以帮助我,我可以做更多吗?


我已联系我的托管网站,他们对my.cnf文件进行了更改,以使用4.1样式密码。 我能够连接mysql

 mysql -u  -p  -h ; 

但是当我尝试使用mySQL连接器网6.6.5连接C#时,我再次遇到此错误。

我在Windows 8 64位上使用Visual Studio 2012和MySQL连接器6.6.5。 这是我用来连接的代码

 using MySQL.Data.MySQLClient; private void button1_Click(object sender, EventArgs e) { string connStr = String.Format("server={0};port={1};uid={2};password={3};database={4}", txtserver.Text, txtPort.Text, txtUser.Text, txtPassword.Text, txtDatabase.Text); conn = new MySqlConnection(connStr); try { conn.Open(); MessageBox.Show("Test Connection Succeded"); } catch (MySqlException ex) { MessageBox.Show(ex.Message); } } 

我无法理解问题出在哪里。 请帮我

我有同样的问题。 在我的例子中,只需通过Workbench运行我的数据库下面连接的命令:

 SET SESSION old_passwords=0; SET PASSWORD FOR my_user=PASSWORD('my_password'); 

之后,我可以使用常见的mysql连接字符串在c#代码中使用MySql Connector 6.6.5连接:

 "server=my_server_ip;user=my_user;database=my_db;port=3306;password=my_password;" 

今天我在C#应用程序中遇到了类似的问题。 我尝试连接到hostgator.com(mysql)上的服务器并连接到localhost。 阅读了很多post并做了很多修改后,每一步都跟着我无法连接到我的hostgator mysql。

我的解决方案是将MySql Connector / NET库从版本6. *更改为版本5. *。 更改后,我的应用程序连接成功。

虽然这对每个人来说可能都不是一个可行的解决方案,但它可能对一些人有用

我今天遇到了这个问题,但我修复了如下:

 SET old_passwords=FALSE; SET PASSWORD = PASSWORD('new pwd here'); 

好吧,也许服务器的连接版本低于客户端,所以你必须运行它:“SET old_passwords = FALSE;” 祝好运!

使用MySqlClient包进行C#时遇到同样的问题。 让我们分解一下:

我们需要数据库不使用旧式密码,因此我们执行

SET old_passwords = 0;

注意没有“SESSION”关键字。 这是只允许您的第一个查询工作的内容,“SESSION”表示临时,会话结束后会丢失任何会话设置。

接下来,我们需要将user @ host的密码设置为新的密码样式

用户@ host = PASSWORD(’password’)的SET PASSWORD;

这两个应该允许你的MySqlClient

只是想添加到@diangelisj的答案,并说问题的根源是您的服务器上安装的PhpMyAdmin的版本。 要使用最新的MySQL Data Connector类,您必须拥有最新的PhpMyAdmin(或出现问题)。 在我的情况下,我有PhpMyAdmin 4.0.10.7并尝试使用MySQL数据连接器6.7.9,它给出了错误。

我做了什么:

  1. 从https://dev.mysql.com/downloads/connector/net/6.9.html下载5.2.7版

  2. 添加.dll作为应用程序的参考

  3. 普雷斯托!

我刚才解决了我的问题:

1)使用mysql workbench连接到db(选择“use old auth”和“send pass in cleartext”

2)使用工作台,我运行了以下几次(因为它一直说’0行受影响’):(也将用户ID和密码更改为适当的东西)

 SET SESSION old_passwords=0; SET PASSWORD FOR userID=PASSWORD('password'); SET SESSION old_passwords=false; SET PASSWORD FOR userID=PASSWORD('password'); 

3)现在回到你的应用程序,它应该运行…

这就是我至少这样做的方式。 我正在使用IX mysql并且他们在他们的服务器上使用旧的auth,所以你必须在你的头上做点什么……

尽管我尝试了所有已提出的建议,但我还没有成功解决问题。 最后,事实certificate,我的数据库所在的服务器自版本3.5.5以来没有更新phpMyAdmin,并且目前正在使用版本4.1.14,这是一个问题。 解决方案是将主机phpMyAdmin或您自己的mySQL更新回早期版本,以便继续使用远程数据库。 您可能需要这些知识才能解决已经出现的一些疑问。 🙂

今天我发现了同样的问题。 我下载了Workbench。 工作台有一些设置来连接数据库,如下所示:1。选择选项卡SSL,在“ 使用SSL ”中选择选项“否”。 2.选择选项卡高级,选择使用ole认证协议。 在Workbench工作之后。 并按照tai1001’发布。 这就是我发现所有有效的步骤。

忘记应用SET old_password = 0,因为如果服务器配置为使用新密码,如果您的应用程序不再访问,则没有理由更改服务器上的标志。 调查您正在使用的连接器NET。

连接器6.5.4是使用old_password的正确的,rencent版本正在使用新的。

最好的做法是避免在机器上安装连接器,如果你已经拥有它,只需离开.NET来处理dll,或者无论如何都试着找到MySQL.Data.DLL版本6.5.4.0(384千字节)