旧身份验证的 MySQL 连接错误
遇到错误消息“mysqlnd 无法使用旧身份验证连接到 MySQL 4.1”表示存在兼容性问题尝试连接到使用过时密码方案的 MySQL 数据库。要解决此问题,确定数据库服务器是否配置为使用旧密码架构至关重要。
检查服务器配置
执行以下 SQL 查询:
<code class="sql">SHOW VARIABLES LIKE 'old_passwords'</code>
了解结果
- 如果结果为 old_passwords,Off,则服务器配置为使用新的身份验证例程。用户密码可能以旧格式存储,但服务器将使用新例程进行身份验证。
- 如果结果为 old_passwords,On,则服务器默认配置为使用旧的身份验证例程。在这种情况下,将使用旧密码方案进行身份验证。
故障排除和解决方法
要解决该问题,请按照以下步骤操作:
-
检查用户密码格式:验证mysql.user表中用户的密码长度。长度为 16 个字符表示旧密码,长度为 41 个字符表示新密码。
-
设置新密码(如果需要):如果用户的密码是旧密码格式,使用以下命令设置新密码:
<code class="sql">SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');</code>
-
刷新权限:通过执行更新数据库的权限:
<code class="sql">FLUSH Privileges;</code>
-
重新验证密码长度:在 mysql.user 表中再次检查用户的密码长度。现在应该是 41 个字符,表明正在使用新的密码格式。
-
重新创建连接:完成这些步骤后,尝试使用客户端(例如 mysqlnd)重新连接到数据库。连接应该成功。
其他资源
有关更多信息,请参阅以下 MySQL 文档:
- http: //dev.mysql.com/doc/refman/5.0/en/old-client.html
- http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html
- http://dev.mysql.com/doc/refman/5.0/en/set-password.html
以上是如何修复'mysqlnd 无法使用旧身份验证连接到 MySQL 4.1”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!