MySQL的文档上说是从4.1开始用了新的认证协议(password的hashing算法改了:4.1以后password函数的结果是41位的,而4.1之前的是16 位的),如果用老版本的client连接的话就会出错。
但是php的mysql extension不支持这种新的认证协议,而mysqli extension又只有php5中才有,要用php4的话可以修改 my.ini 来避免这个错误。
用编辑器打开my.ini,在 [mysqld] 下加一行 old_passwords
然后重启MySQL服务,以前设置过密码的用户需要更新一下:
然后应该没有问题了。
但是php的mysql extension不支持这种新的认证协议,而mysqli extension又只有php5中才有,要用php4的话可以修改 my.ini 来避免这个错误。
用编辑器打开my.ini,在 [mysqld] 下加一行 old_passwords
....
[mysqld]
old_passwords
port=3306
....
[mysqld]
old_passwords
port=3306
....
然后重启MySQL服务,以前设置过密码的用户需要更新一下:
mysql> SET PASSWORD FOR 'root'@'localhost'=OLD_PASSWORD('root')
然后应该没有问题了。