[MySQL] PASSWORD() 関数の 結果値が 変わった 時 (MySQL 4.1から 変わり)
MySQL バージョンが 4.1大道 越えて来ながら MySQL してした PASSWORD()義 暗号化 方法が 変わったと する. 以前のPASSWORD()関数は 16席 結果物(亥時値)を 出す ところ 惚れて 新しいPASSWORD()関数は 41席 結果物を 出す.
使用者 認証の時 PASSWORD() 関数を 使って あったら, MySQL バージョンが 変わった 時 困り果てられる. これ 時 仮装(家長) 簡単な 対処法は, PHPイン 場合 コードに 次 値段を 追加して 与える のだ.
//mysql 連結を たいてい 後 @mysql_query( 'set old_passwords = 1 ');
こんなに すれば 問題が 解決される.
違う 方法 1. my.cnf に old_password = 1 追加
違う 方法は 私が 実際で 日 見るのは なくて ささいな 正確性が 落ちる 数 ある.
/etc/my.cnf ファイルを 捜して old_password = 1 という オプションを 追加して 与えれば 解決されると する. (my.cnf ファイルの 位置は 使って ある 運営体制に よって 違う. そして 運営体制が ようで MySQLを どうに 設置して 使って イッニャに よって 違う. /etc/my.cnf 増えた リナックス 基本 設置 基準である ようだ.)
違う 方法 2. OLD_PASSWORD() 関数を 使用
もし ソース コードを はっきりと 管理する 数 あって, DB だからにだけ 問題が 生じた ことなら, MySQL クイーリー 部分のPASSWORD()関数を OLD_PASSWORD() 関数で 変更して 与える. それでは こぎれいに 解決される ことだ.
違う 方法 3. PHP路 代替
PHP 関数を 立ち後れて 見たら old_password()を 具現して おいた ガール 捜す 数 あった. これを 使う 首都 ある.
function old_password($password) {
$nr=0x50305735;
$nr2=0x12345671;
$add=7;
$charArr = preg_split("//", $password);
foreach ($charArr as $char) {
if (($char == '') || ($char == ' ') || ($char == 't')) continue;
$charVal = ord($char);
$nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8);
$nr2 += ($nr2 << 8) ^ $nr;
$add += $charVal;
}
return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff));
}
- コメント機能はありません。コメントの代わりに[email protected]にメールを送ってください。