まず、以下の説明は Win システムに限定されていますが、Mysql は 4.1.1 以降、ユーザー パスワードの形式を 16 桁から 41 桁に増やし、新しい検証を採用しています。ただし、4.1 より前では、クライアント プロトコルはこのメソッドをサポートしていないため、ログインできなくなります。パスワードが正しい場合でも、ユーザーは正常にログインできず、次のようなプロンプトが表示されます:
#1250 - クライアントはログインします。サーバーによって要求された認証プロトコルをサポートしていません。MySQL クライアントのアップグレードを検討してください。
C:mysql in>mysql -uroot
コマンドは help; または 'h' で終わります。 c' バッファをクリアします
selectpassword('aa'); -------------+
パスワード('aa') +---------- ---- ------------------------+
*DEE59C300700AF9B586F9F2A702231C0AC373A13 |
+---------- - -----------------------------+
1 row in set (0.00 sec)
mysql>
上からパスワードの結果は、以前は 16 桁だった '*' で始まる 41 桁の文字列を返します。
Mysql 公式 Web サイトには 2 つの解決策が記載されています
1. 新しいクライアント API を使用します
2. サーバーに使用を強制します。古いパスワードスキーム
私は最初の方法、mysql5.0 から libmysql.dll を php の拡張ディレクトリにコピーし、php 自体に付属する libmysql.dll を置き換えるという方法を試しましたが、結果は Php がそのロードを要求するという残念なものでした。 php_mysql.dll が失敗しました: PHP 警告: PHP スタートアップ: ダイナミック ライブラリ 'c:/php5/ext/php_mysql.dll' をロードできません - 指定されたプログラムが見つかりません。その後、mysql_drop_db() 関数が dll の新しいバージョンにないことがわかりました:( PHP または mysql が更新された dll をリリースするまで待たなければなりません。
最初の方法は機能しないので、 2 番目の方法は、 mysql の公式 FAQ に記載されているように、 -old-password パラメーターを追加する必要があります。まず、コマンド ラインで mysql を起動してみます。
c:mysql in>mysqld-nt -old-password
Run in別のウィンドウ
C:mysql in> ;mysql -uroot
MySQL モニターへようこそ コマンドは ; または g で終わります
サーバーのバージョン: 5.0.0-alpha-nt への MySQL 接続 ID は 540 です。
http://www.bkjia.com/PHPjc/631119.html
www.bkjia.com
true