文档章节

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

mickelfeng
 mickelfeng
发布于 2015/10/15 13:27
字数 565
阅读 27
收藏 1

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

粉丝 229
博文 2670
码字总数 569153
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

给女朋友讲解什么是Optional【JDK 8特性】

前言 只有光头才能变强 前两天带女朋友去图书馆了,随手就给她来了一本《与孩子一起学编程》的书,于是今天就给女朋友讲解一下什么是Optional类。 至于她能不能看懂,那肯定是看不懂的。(学到...

Java3y
12分钟前
0
0
2019年六大新兴信息安全方向

导读 黑客攻击和网络犯罪的威胁正在不断升级,相应的技术“军备竞赛”正愈演愈烈,对于信息安全从业人员来说,掌握最新的信息安全工具,是在信息安全战争中生存下来的关键所在。 从特朗普的手...

问题终结者
18分钟前
0
0
redis扩展-自定义PropertyPlaceholderConfigurer,在spring属性注入之前,手动将properteis合并到spring容器中

背景:spring容器启动过程中,通过PropertyPlaceholderConfigurer读取properties配置文件,并将properties配置文件中的值注入spring bean的属性中, PropertyPlaceholderConfigurer使用方式多...

燃犀
20分钟前
0
0
PostgreSQL SPI 中的错误处理

PostgreSQL SPI 用于在 C 或是其他编程语言编写的扩展函数(存储过程)中调用数据库本身的解析器、规划器和执行器的功能,以及对 SQL 语句进行执行。 在最重要的一个函数 SPI_execute 的文档...

helloclia
21分钟前
0
0
深入理解Java内存模型

1 内存模型产生背景 在介绍Java内存模型之前,我们先了解一下物理计算机中的并发问题,理解这些问题可以搞清楚内存模型产生的背景。物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物...

小刀爱编程
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部