无法再通过 PHP 访问 MySQL

无法再通过 PHP 访问 MySQL

我有一个 mySQL / PHP 设置,已在多个系统上使用过。我最近将系统升级到 Max OSX 10.6,现在无法连接。我收到错误:

mysqlnd 无法使用旧身份验证连接到 MySQL 4.1+

我已经进行了明显的 Google 搜索,但大多数搜索似乎都是关于如何让 mysql 使用旧密码样式,这似乎不再有效。无论如何,我想找到一个更好的解决方案,让我能够使用较新的密码样式。

我使用以下方式创建密码:

mysql> UPDATE mysql.user SET Password=PASSWORD('mypassword') WHERE User='root';

(或者 OLD_PASSWORD,这似乎并不重要)

然后我使用以下命令登录数据库:

@mysql_connect($mysqlserver,$username,$password)

where $username is root and $password="mypassword"

这个问题的正确解决方案是什么,因为强制它继续使用旧密码技术显然不是正确的解决方案......

答案1

哦,我是个白痴。当我使用 PASSWORD(“password”) 手动重新设置 root 密码时,我没有以相同的方式重新设置 USERS 密码,因此用户密码仍然是 OLD_PASSWORD(“password”),并且我们的 PHP 以用户身份登录,而不是以 root 身份登录(我认为这是一件好事。)

我使用 PASWORD(“密码”)手动重新设置了用户密码,一切似乎正常......

答案2

重置密码时,您是否在安全模式下运行 mysql?我知道有时 mysql 对重置 root 密码非常挑剔。如果您还没有尝试过,请尝试这篇文章... 如何锻造

答案3

尝试启用old_passwords = truemy.cnf应该有帮助;)

答案4

手动处理这些表后,请确保执行 FLUSH PRIVILEGES,以便 MySQL 读取新值。

一般来说最好使用设置密码更改密码,因为这可验证表值是否有效。使用手动方式,您很容易将无效数据放入用户表中。

相关内容