作成日:2018-01-25, 更新日:2018-04-26
基本
既存のサーバにFuelPHP1.8をupしたら使えなかった。正確にはDBに接続が出来なくエラーが出力される。
SQLSTATE [HY000] [2000] mysqlnd can not connect to MySQL 4.1+ using the 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 may need to remove the old-passwords flag from your my.cnf file
▼Google翻訳に丸投げ
SQLSTATE [HY000] [2000] mysqlndは管理ツールを使用してMySQL 4.1以降に接続できません。 「SET PASSWORD = PASSWORD( 'your_existing_password')」というコマンドでパスワードをリセットします。 これにより、mysql.userに新しい安全なハッシュ値が格納されます。 このユーザーがPHP 5.2以前で実行されている他のスクリプトで使用されている場合は、my.cnfファイルからold-passwordsフラグを削除する必要があります
対処方法は下記のいずれか。
・my.cnfファイルの修正
・パスワード再設定
・FuelPHPのダウングレード
▼そのときの環境
・PHP7.1(CGI版)
・MySQL5.1.72
・FuelPHP1.8
修正方法:本来のやり方
・「my.cnf」の「old_password=1」を「old_password=0」にする
・mysqlを再起動
修正方法:ログインユーザーのパスワードを書き換える
稼働しているサーバーで、本来のやり方が困難な場合。
基本、下記のようなやり方らしい。
パスワードを作る
SELECT PASSWORD('〇〇〇'); # **********
パスワードを更新する
SET PASSWORD FOR testuser@'%' = '**********';
私の場合は、レンタルサーバ利用なのでレンタルサーバのコントロールパネルを利用してパスワードを再設定した。
※旧パスワードと同じ内容だとプログラム側の変更は不要
修正方法:FuelPHPのダウングレード
FuelPHP1.7ならOKだと思う。
※今回は、パスワード修正したのでコレは試していない。