文档章节

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

mickelfeng
 mickelfeng
发布于 2015/10/15 13:27
字数 565
阅读 23
收藏 1
点赞 0
评论 0

现在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 | 
+--------------+------------------+  

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

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

本文转载自:http://www.iyunv.com/thread-77788-1-1.html

共有 人打赏支持
mickelfeng

mickelfeng

粉丝 227
博文 2553
码字总数 551789
作品 0
成都
高级程序员
一个函数引发的MySQL驱动问题

前两天在一个php脚本中使用mysqlifetchall()来获取全部结果集,但却提示该方法undefined,只好退回,使用mysqlfetchrow()这个方法,一行一行的获取记录,效率很慢。后来查询得到: 1, mysqli...

vinci321
03/08
0
0
PHP 5.3.0以上推荐使用mysqlnd驱动

1.什么是mysqlnd驱动? PHP手册上的描述: MySQL Native Driver is a replacement for the MySQL Client Library (libmysql). MySQL Native Driver is part of the official PHP sources as of......

月影又无痕
2013/06/27
0
1
mysqlnd 以及 libmysqlclient

PHP拓展 1.1 PHP核心 PHP的核心是由两个独立的部分组成的。 在最底层是Zend Engine (ZE)。ZE 负责把人类可以理解的脚本解析成机器可以理解的符号(token),然后在一个进程空间内执行这些符号...

knightuniverse
2014/02/27
0
0
centos7-php安装

135956557-小三IT自学群,任何IT问题都可以一起讨论,各种服务网络等等 --------------------------------------------------------------------------- 了解PHP的工作模式,一共是三种 CGI模式...

动力在于作
2017/03/31
0
0
PHP编程中10个最常见的错误

错误1:foreach循环后留下悬挂指针 在foreach循环中,如果我们需要更改迭代的元素或是为了提高效率,运用引用是一个好办法: $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value...

荔枝壳
2014/08/01
283
1
从零搭建LNMP环境(一) - 编译源码安装PHP

我们使用vagrant建立虚拟环境,这里使用"chef/centos-6.5"这个box,这个box是一个比较纯净的CentOS-6.5系统。关于Vagrant如何使用,请参考Vagrant快速入门。 执行上述命令之后,就已经建立了...

mylxsw
2014/11/26
0
0
contos安装php+nginx

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel b......

rihgtzhao
2016/07/20
7
0
Windows下使用VS2010编译PHP5.4和YAF

需要研究Laruence维护的YAF,而且得在Windows下学习使用。php5.4的改进和新特性吸引我在将来来临的项目中使用它,现在php5.4.1已经RC了,修正了大量bug,正式版很快就会发布了。估计在项目正...

龙之
2014/02/23
0
2
PHP+MySQL缓冲查询和无缓冲查询

http://php.net/manual/zh/mysqlinfo.concepts.buffering.php http://php.net/manual/zh/mysqli.query.php PHP MySQL查询(mysqli,pdo_mysql)默认使用缓冲模式. 也就是说查询结果将一次性从M......

eechen
2015/12/30
1K
1
配置PHP对gd库的支持

搭建zabbix的时候遇到有对PHP的需求检测,发现没有对gd的支持,记录下。。。 GD库是php处理图形的扩展库,它提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图...

西鼠
2017/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaEE——JavaScript

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 JavaScript 内置对象 String对象方法: date对象...

凯哥学堂
5分钟前
0
0
Git 远程代码回滚master

方式一(推荐): git revert commit-id 方式二(不推荐):不推荐原因:推送到线上后,其它开发人员需要重新clone git reset --hard commit-id git push origin HEAD --force...

浮躁的码农
5分钟前
0
0
Elasticesearch学习(7)—— ES查询与Java API的对应关系

1、普通查询 类型 ES查询语句 Java查询实现 结果 查询格式 { "query": { "bool": { "must": [], "must_not": [], "should": [], "filter": [] } }, "from": 0, "size": 10, "sort": [] } Que......

叶枫啦啦
6分钟前
4
0
getElementsByClassName()与getElementById()区别

1.document.getElementsByClassName() 返回的是数组 使用:document.getElementsByClassName("className")[0].innerText='具体内容' 2.document.getElementById() 返回的是单个元素 使用:d......

botkenni
16分钟前
0
0
MyBatis入门

一、安装 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version></dependency> 二、从 XML 中构建 SqlSessionFactory String r......

一个yuanbeth
17分钟前
0
0
聊聊spring cloud的LoadBalancerAutoConfiguration

序 本文主要研究一下spring cloud的LoadBalancerAutoConfiguration RibbonAutoConfiguration spring-cloud-netflix-ribbon-2.0.0.RC2-sources.jar!/org/springframework/cloud/netflix/ribb......

go4it
20分钟前
0
0
【转】使用Lombok来优雅的编码

前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。 正文 添加依赖 在 pom.xml 文件中添加相关依赖:...

HAVENT
22分钟前
0
0
Dubbo 源码解读 —— 可支持序列化及自定义扩展

一、概述 从源码中,我们可以看出来。目前,Dubbo 内部提供了 5 种序列化的方式,分别为 fastjson、Hessian2、Kryo、fst 及 Java原生支持的方式 。 针对不同的序列化方式,对比内容如下: 名...

Ryan-瑞恩
29分钟前
0
0
MySQL内存设置—— MySQL server has gone away

set global max_allowed_packet=268435456

一梦心草
39分钟前
0
0
推导式

列表、集合和字典推导式 列表推导式是Python最受喜爱的特性之一。它允许用户方便的从一个集合过滤元素,形成列表,在传递参数的过程中还可以修改元素。形式如下: [expr for val in collect...

火力全開
44分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部