我有一个 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 = true
。my.cnf
应该有帮助;)
答案4
手动处理这些表后,请确保执行 FLUSH PRIVILEGES,以便 MySQL 读取新值。
一般来说最好使用设置密码更改密码,因为这可验证表值是否有效。使用手动方式,您很容易将无效数据放入用户表中。