php使用mysqlnd引發的一些問題處理

來源:互聯網
上載者:User

標籤: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 --with-fpm-user=www --with-fpm-group=www

可以看到我們使用了mysqlnd作為串連資料庫的驅動。可以在測試的過程中出現了一些問題。


  1. 將代碼部署到測試伺服器的時間出現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的服務即可。



  2. 使用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://fengwan.blog.51cto.com/508652/1662046

php使用mysqlnd引發的一些問題處理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.