解決Mysql報錯:PHP Warning: mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.


最近我更新了appserv-win32-2.5.10的 PHP 5.2版本到PHP 5.3,在調用http://localhost/phpMyAdmin/時,出現如下錯誤:
PHP Warning:  mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file in /root/test.php on line 3

原因
MySQL 5.0 為了和4.1之前的版本兼容,用戶密碼(mysql數據庫的user表password字段)保存的是密碼的16位hash值,而PHP5.3后的 mysql驅動使用41位的密碼hash值進行用戶驗證,所以需要讓mysql中保存用戶密碼的41位hash值,但配置文件中 old_passwords=1的話,password()函數只能返回16位hash值。

解決辦法如下:
    1. SET old_passwords = 0;
    2. UPDATE mysql.user SET PASSWORD = PASSWORD( 'root' ) WHERE User = 'root' LIMIT 1 ;
    3. SELECT LENGTH( PASSWORD ) FROM mysql.user WHERE User = 'root';
    4. FLUSH PRIVILEGES ;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM