1

私は専用サーバーを持っていますが、これはしばらくの間、次のようにセットアップされ、正常に実行されています。このサーバーを1と呼びましょう。

MySQL 5.0.95 PHP 5.2.17

PHPからデータベースへの接続の作成は、次の方法を使用して正常に実行されています。

mysql_connect($IPAddress,$DBUser,$DBPassword);
@mysql_select_db($database) or die( "Unable to select database");

今、私は2番目の専用サーバーも持っています。このサーバー2と呼びましょう。これは、今日まで正常に機能していたまで、上記のサーバー上のデータベースに接続します。私がしたことはPHPをバージョン5.3.19に更新することでしたが、今私が受け取るエラーは次のとおりです。

接続できませんでした:mysqlndは、古い安全でない認証を使用してMySQL4.1以降に接続できません。管理ツールを使用して、コマンドSET PASSWORD = PASSWORD('your_existing_password')でパスワードをリセットしてください。これにより、新しい、より安全なハッシュ値がmysql.userに保存されます。このユーザーがPHP5.2以前で実行される他のスクリプトで使用されている場合は、my.cnfファイルからold-passwordsフラグを削除する必要がある場合があります。

SET PASSWORDコマンドを実行しようとしましたが、それでも機能しません。また、old-passwordsフラグを0に設定しようとしましたが、それも機能しません。

私は何かが足りないのですか?サーバー1ではすべて正常に動作しますが、動作しないのはサーバー2だけです。

4

1 に答える 1

0

ファイル「my.cnf」(例:/etc/my.cnf)の次の行を削除またはコメントアウトします。

old_passwords = 1

これにより、MySQLは古いパスワードを使用できなくなります。現在、クエリを実行するSELECT user, Length(Password) FROM mysql.user;と、ユーザー名に16文字と41(41はSET PASSWORD最近実行したクエリ)の2つのエントリが含まれていることがわかります。

old_passwords削除/コメントアウトした後、MySQLを再起動する必要があります。そうしないと、old_passwordsが引き続き使用されます。

MySQLが再起動したら、次のクエリを再度実行する必要がある場合があります。

UPDATE mysql.user SET Password = PASSWORD('yourPassword!') WHERE user = 'yourUser';

FLUSH Privileges;
于 2013-01-22T13:14:23.820 に答える