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

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。

时间: 2024-09-24 20:09:33

解决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是个好东西.不仅可以提高与mysql数据库通信的效率,而且也可以方便的设置一些超时.如,连接超时,查询超时. 但是,使用mysqlnd的时候,有个地方需要注意.就是服务端的密码格式不能使用旧的16位的存储格式,而要使用新的41位的存储格式. 如果,服务端的密码格式是16位,那么就会报错.信息如下: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2000] mysqlnd c

mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:554) in path/to/the/file/where/connection/script/is/written/ Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected i

Can't connect to MySQL server on 'localhost' (10048)问题解决方法_Mysql

解决Can't connect to MySQL server on 'localhost' (10048), 一般见于使用mysql的windows 2003服务器. 错误的出现的原因: 应用程序需要快速释放和创建新连接, 但是由于 TIME_WAIT 中存在的连接超过默认值,导致较低吞吐量. 解决方案: 和本错误密切相关的两个windows的注册表项:TcpTimedWaitDelay和MaxUserPort的值. TcpTimedWaitDelay 确定 TCP/IP 可释放已关闭连接并重

MySQL远程连接ERROR 2003 (HY000) Cant connect to MySQL server on (10060)

MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX' (10060)的问题 D:\Users\xiaomaimiao>mysql -uroot -plhr -h192.168.59.159Warning: Using a password on the command line interface can be insecure.ERROR 2003 (HY000): Can't connect to MySQL

SELinux导致PHP连接MySQL异常Can't connect to MySQL server的解决方法_Mysql

同事报告一起奇怪的现象,一个最简单的测试PHP代码,在测试环境很正常,但是在正式环境下,无论用何种方式(tcp/ip.unix socket)都无法连接mysql. 我协助查看了下,确实如此,无论是指定IP.端口的tcp/ip方式连接,或者是用unix socket方式连接,报错信息都类似: 复制代码 代码如下: Could not connect: Can't connect to MySQL server on 'MYSQL.SERVER' (13) 无论如何修改MySQL的授权,或者调整p

Can't connect to MySQL server on localhost (10061)解决方法_Mysql

首先检查MySQL 服务没有启动>如果没有启动,则要启动这个服务. 昨天,重起服务器后出现MySQL 'localhost' (10061)错误,开始以为是因为数据库链接打开过多,数据库资源耗尽的缘故,但是重启服务器以后,仍旧出现问题,于是在网上查找解决方法.大体如下: 解决办法: 第一步 删除c:\windows\下面的my.ini 第二步 打开c:\mysql\bin\winmysqladmin.exe 输入用户名 和密码 第三步 在dos下 输入 mysqld-nt -remove 删除服

Can t connect to MySQL server on 解决方法

can t connect to mysql教程 server on 解决方法 错误编号:2003 问题分析: 无法连接到 mysql 服务器,可能的情况为: 1.mysql 服务没有启动,一般是在异常的情况下 mysql 无法启动导致的,比如无可用的磁盘空间,my.ini 里 mysql 的 basedir 路径设置错误等: 2.mysql 服务器资源紧张,导致无法连接. 解决方法: 1.如果你是虚拟主机用户(购买的空间),则联系空间商检查 mysql 是否正常启 动,并确认 mysql 的配

Can’t connect to MySQL server on ‘localhost’ (10061)解决办法

服务器的CPU.内存都正常.连续刷新网页会时有时无出现: Can't connect to MySQL server on 'localhost' (10061) 解决方法: 该现象属于微软9月10日发布的"TCP/IP"补丁带来的问题. 在"控制面板"的"添加或删除程序"(注意勾选"显示更新"复选框)中删除编号为KB967723的补丁即可    

【错误解决】MySQL出现Can't connect to MySQL server on 'localhost' (10060)错误

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 今天连接数据库遇到一个问题, 错误提示: Can't connect to MySQL server on 'localhost' (10060) 开始弄了很久,没弄好. 后来去谷歌了一下. 发现原来是我的防火墙问题.我也是醉得不要不要了. 然后,果断把防火墙关闭. 哈哈,连接成功! 当然,我这个连接的是本机数据库. 如果是连接远程的数据库,可能还有其他一些问题哦,本章博客不去深究