php 使用 mysqlnd,php使用mysqlnd引发的一些问题处理

现在CentOS 5.11使用的仍是比较老旧的mysql 5.0.59 服务器版本,PHP也是使用的最高的也是5.3.3(使用yum -y install php53安装)。从官方看5.3的最后一个版本为5.3.29已经于2014年8月份停止支持,出现的一些bug及安全性问题将会得不到修复,因此我们决定将PHP的版本升级到5.5。在安装的时候我们使用

./configure --prefix=/data/php.5.5.26 --with-bz2

--with-curl --enable-ftp --enable-sockets --disable-ipv6

--with-gd --with-iconv-dir=/data/libiconv --enable-mbstring

--enable-calendar --with-gettext --with-zlib --with-mcrypt

--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

--with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm

--user=www --group=www

可以看到我们使用了mysqlnd作为连接数据库的驱动。可以在测试的过程中出现了一些问题。

将代码部署到测试服务器的时间出现No such file or directory,检查nginx日志出现PHP message: PHP Warning:  mysql_connect(): No such file or directory。经过检查发现原来是mysqlnd连接不到数据库,修改php的配置文件mysql.default_socket = /var/lib/mysql/mysql.sock  注意我这边是yum安装的mysql server,重新启动php-fpm.如果你使用的是apache的话则启动apache的服务即可。

使用mysql_connect('localhost','root','123')发现服务器又报错

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

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

mysql> select user,length(password) from mysql.user;

+----------+------------------+

| user | length(password) |

+----------+------------------+

| root | 16 |

| test | 16 |

+----------+------------------+

2 rows in set (0.00 sec)

第一、更改数据库的配置文件/etc/my.conf

在[mysqld]下检查是否有

[mysqld]

old_passwords=1

将其更改为

old_passwords=0

如果没有新增之,然后重新启动数据库服务

第二、更改数据库的密码

update mysql.user set password=password('123456') where user='root';

update mysql.user set password=password('123456') where user='test';

flush privileges;

mysql> select user,length(password) from mysql.user;

+--------------+------------------+

| user | length(password) |

+--------------+------------------+

| root | 41 |

| test | 41 |

+--------------+------------------+

这个更改密码看你有使用几个用户了。

再次刷新网页,正常了了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值