現在、CentOS 5.11 は依然として古い mysql 5.0.59 サーバー バージョンを使用しており、PHP も最新バージョン 5.3.3 を使用しています (インストールするには yum -y install php53 を使用します)。公式には、5.3 の最後のバージョンである 5.3.29 は 2014 年 8 月にサポートを終了しました。発生したいくつかのバグとセキュリティ問題は修正されないため、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 が使用されていることを確認します。テストプロセス中にいくつかの問題が発生した可能性があります。
コードをテスト サーバーにデプロイするときに、nginx ログを確認すると、PHP メッセージが表示されます: PHP 警告: mysql_connect() : そのようなファイル、又はディレクトリはありません。検査の結果、mysqlnd がデータベースに接続できないことが判明しました。php 設定ファイル mysql.default_socket = /var/lib/mysql/mysql.sock を変更します。これは yum によってインストールされた mysql サーバーであることに注意してください。 Apache を使用する場合は、Apache サービスを開始するだけです。
mysql_connect('localhost','root','123') を使用すると、サーバーがレポートしたことがわかりました。別のエラー
mysqlnd は古い安全でない認証を使用して MySQL 4.1 以降に接続できません。管理ツールを使用してコマンド SET PASSWORD = PASSWORD('your_existing_password') を使用してパスワードをリセットしてください。これにより、新しいパスワードが保存されます。より安全な、mysql.user のハッシュ値。このユーザーが PHP 5.2 以前で実行される他のスクリプトで使用されている場合は、my.cnf ファイルから old-passwords フラグを削除する必要がある場合があります
use 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 | +--------------+------------------+ 这个更改密码看你有使用几个用户了。
Web ページを再度更新すると正常です。