PHP mysqlnd cannot connect to MySQL 4.1+ using old authentication
2012-09-20 17:23
495 查看
报错信息:mysqlnd cannot connect to MySQL 4.1+ using the old
After struggling a while on google, I cannot find any solution. So I went back to the RTFM idiomatic expression.
It is what I found:
php 5.3 now use a native extension to use mysql : mysqlnd
my database credential was old (4 years old maybe) and still use the old mysql authentication
mysqlnd needs the new 41bytes password
解决办法:Remove or comment old_passwords = 1 in my.cnf
Restart MySQL. If you don’t, MySQL will keep using the old password format, which will mean that you cannot upgrade the passwords using the builtin PASSWORD() hashing function.
The old password hashes are 16 characters, the new ones are 41 characters.
Connect to the database, and run the following query:
SELECT user, Length(
This will show you which passwords are in the old format, ex:
To update the password for each user, run the following:
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
SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using old authentication
After struggling a while on google, I cannot find any solution. So I went back to the RTFM idiomatic expression.
It is what I found:
php 5.3 now use a native extension to use mysql : mysqlnd
my database credential was old (4 years old maybe) and still use the old mysql authentication
mysqlnd needs the new 41bytes password
解决办法:Remove or comment old_passwords = 1 in my.cnf
Restart MySQL. If you don’t, MySQL will keep using the old password format, which will mean that you cannot upgrade the passwords using the builtin PASSWORD() hashing function.
The old password hashes are 16 characters, the new ones are 41 characters.
Connect to the database, and run the following query:
SELECT user, Length(
Password) FROM
mysql.
user;
This will show you which passwords are in the old format, ex:
+----------+--------------------+ | user | Length(`Password`) | +----------+--------------------+ | root | 41 | | root | 16 | | user2 | 16 | | user2 | 16 | +----------+--------------------+Notice here that each user can have multiple rows (one for each different host specification).
To update the password for each user, run the following:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';Finally, flush privileges:
FLUSH PRIVILEGES;
相关文章推荐
- 解决Mysql报错:PHP Warning: mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.
- php连接MySQL时产生错误:mysqlnd cannot connect to MySQL 4.1+ using old authentication
- 解决Mysql报错:PHP Warning: mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.
- Warning: mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
- 在万网虚拟主机上连接数据库出错mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication错误解决办法
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication解决办法
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication解决办法
- 连接mysql问题 mysqlnd cannot connect to MySQL 4.1+ using old authentication
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
- php 5.3:connection failed:SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using old auth
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication的解决方法
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
- mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.
- mysql-mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication解决办法
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication问题解决
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication