最新下载
热门教程
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 
解决mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication错误
时间:2022-11-14 23:37:02 编辑:袖梨 来源:一聚教程网
mysqlnd是个好东西。不仅可以提高与mysql数据库通信的效率,而且也可以方便的设置一些超时。如,连接超时,查询超时。
但是,使用mysqlnd的时候,有个地方需要注意。就是服务端的密码格式不能使用旧的16位的存储格式,而要使用新的41位的存储格式。
如果,服务端的密码格式是16位,那么就会报错。信息如下:
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
如何查看自己的密码是否符合要求,so easy。
mysql> select user,length(password) from mysql.user; 
+--------------+------------------+
| user         | length(password) |
+--------------+------------------+
| demo         |               16 | 
| demo         |               16 | 
+--------------+------------------+
上面的密码是旧的16位格式。如果想改成新的41位格式,通过以下命令就可以。
mysql>UPDATE mysql.user SET Password = PASSWORD('demo') WHERE user = 'demo';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0
mysql> select user,length(password) from mysql.user;
+--------------+------------------+
| user         | length(password) |
+--------------+------------------+
| demo         |               41 | 
| demo         |               41 | 
+--------------+------------------+
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
修改完密码后,还需要在配置文件中修改下old_passwords选项。把值设置为0。即,
old_passwords=0
然后重启mysql。
相关文章
- 朋友圈谷雨时节唯美文案(精选94句) 11-04
 - 二重螺旋贝蕾妮卡有什么玩法技巧 11-04
 - 洛克王国世界大耳帽兜如何进阶 11-04
 - 星塔旅人惊奇冒险怎么玩 11-04
 - 黑色四叶草魔法帝之道开膛手杰克强度如何 11-04
 - 我的世界僵尸围城怎么触发 僵尸围城机制详解 11-04