当前位置:首页 > Mysql教程 > 列表

解决mysqlnd cannot connect to MySQL 4.1+ using the old insec

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-20 14:49:28 浏览: 评论:0 

解决mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication错误.

mysqlnd比mysql说使用起来更方便了,但小编在使用时碰到mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication错误了,下面我们一起来看此问题解决办法.

mysqlnd是个好东西,不仅可以提高与mysql数据库通信的效率,而且也可以方便的设置一些超时,如连接超时,查询超时.

但是,使用mysqlnd的时候,有个地方需要注意,就是服务端的密码格式不能使用旧的16位的存储格式,而要使用新的41位的存储格式.

如果服务端的密码格式是16位,那么就会报错,信息如下:

  1. Fatal error: Uncaught exception ‘PDOException’ with message ‘SQLSTATE[HY000] [2000] 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 /home/hailong.xhl/test.php:8 --phpfensi.com 

如何查看自己的密码是否符合要求,so easy.

  1. mysql> select user,length(passwordfrom mysql.user;  
  2. +--------------+------------------+ 
  3. user         | length(password) | 
  4. +--------------+------------------+ 
  5. | demo         |               16 |  
  6. | demo         |               16 |  
  7. +--------------+------------------+ 

上面的密码是旧的16位格式,如果想改成新的41位格式,通过以下命令就可以.

  1. mysql>UPDATE mysql.user SET Password = PASSWORD('demo'WHERE user = 'demo'
  2. Query OK, 2 rows affected (0.00 sec) 
  3. Rows matched: 2  Changed: 2  Warnings: 0 
  4. mysql> select user,length(passwordfrom mysql.user
  5. +--------------+------------------+ 
  6. user         | length(password) | 
  7. +--------------+------------------+ 
  8. | demo         |               41 |  
  9. | demo         |               41 |  
  10. +--------------+------------------+ 
  11. mysql> flush privileges
  12. Query OK, 0 rows affected (0.00 sec) 

修改完密码后,还需要在配置文件中修改下old_passwords选项,把值设置为0,即.

old_passwords=0 然后重启mysql.

Tags: mysqlnd cannot connect

分享到: