【发布时间】:2013-02-24 02:07:47
【问题描述】:
我需要通过 asp.net 连接到 MYSQL 数据库。我正在使用 MySQL 连接器与数据库建立连接,但在执行此操作时出现此错误:
不再支持使用旧密码进行身份验证,请使用 4.1 样式的密码。【问题讨论】:
-
你见过this吗?
-
我的连接字符串是这样的:
标签: asp.net mysql web-applications
我需要通过 asp.net 连接到 MYSQL 数据库。我正在使用 MySQL 连接器与数据库建立连接,但在执行此操作时出现此错误:
不再支持使用旧密码进行身份验证,请使用 4.1 样式的密码。【问题讨论】:
标签: asp.net mysql web-applications
从 MySQL 4.1 及更高版本开始,它们使用与早期版本不兼容的新协议。这就是为什么当您将服务器从早期版本升级到 4.1 或更高版本时,您会收到身份验证错误消息。
如果您需要在 4.1 版本之前和之后使用两个客户端连接到数据库,则必须存储两个密码。一种是旧方式,一种是新方式。
您可以使用以下方法将用户密码设置为新方式:
SET PASSWORD for <username> = PASSWORD('new password')
SET PASSWORD FOR 'steve'@'10.15.2.67' = PASSWORD('my secure password');
如果需要,您还可以使用以下方法将密码设置为旧方式:
SET PASSWORD for <username> = OLD_PASSWORD('new password')
SET PASSWORD FOR 'steve'@'10.15.2.67' = OLD_PASSWORD('my secure password');
MySQL manual 中有一个很棒的页面会详细介绍该过程
如果服务器比 4.1 更新,您实际上可以仍然使用旧密码方法,但是 不建议这样做。
为此,您可以使用--old-passwords 选项启动服务器。
因此,服务器已更新并且您使用的是旧客户端 - 或者您已更新客户端(现在使用新密码系统)并且您连接到低于 4.1 的服务器
【讨论】:
好的,但是如果您没有权限这样做,仅仅是因为您处于共享托管环境中:
SET PASSWORD for <username> = OLD_PASSWORD('new password')
SET PASSWORD FOR 'steve'@'10.15.2.67' = OLD_PASSWORD('my secure password');
你能做什么? 我还没有找到解决方法,我的托管服务提供商在没有警告的情况下更改了 mysql 配置......也没有给出解决方案。
未完成的解决方案 您可以强制 web.config 使用旧连接器。它似乎可以工作,但是会发生 mysql 错误......所以我认为连接器的某处存在错误。
【讨论】: