php使用mysqlnd引发的一些问题处理
./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 --with-fpm-user=www --with-fpm-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 | +--------------+------------------+ 这个更改密码看你有使用几个用户了。
再次刷新网页,正常了了。
推荐阅读
-
php使用mysqlnd引发的一些问题处理
-
用C实现PHP扩展 Image_Tool 图片常用处理工具类的使用
-
使用php自带的多字节处理函数来处理中文,最佳方法_PHP教程
-
关于使用php 多线程处理高并发的搜索请求的有关问题
-
为什么数据分析一般用到java,而不是使用hadoop,flume,hive的api使用php来处理相关业务?
-
为什么数据分析一般用到java,而不是使用hadoop,flume,hive的api使用php来处理相关业务?
-
Laravel使用消息队列需要注意的一些问题_php实例
-
PHP 自定义错误处理函数的使用详解_PHP教程
-
php+mysqli使用预处理技术进行数据库查询的方法,mysqli预处理_PHP教程
-
为什么无法使用php中mysqli的准备语句进行数据库中数据的查询(绑定参数或者绑定结果),项目急用!该如何处理