现在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。在安装的时候我们使用
1
|
.
/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位的存储格式
1
2
3
4
5
6
7
8
|
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
如果没有新增之,然后重新启动数据库服务
第二、更改数据库的密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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 |
+--------------+------------------+
这个更改密码看你有使用几个用户了。
|
再次刷新网页,正常了了。
本文转自 rong341233 51CTO博客,原文链接:http://blog.51cto.com/fengwan/1662046