13

私と同じ懸念で多くの質問が提起されていることは承知していますが、これに対する別の解決策を見つけるのを手伝ってくれることを願っています.

プロジェクトにはSymfony 2.5.10PHP 5.4.44、およびMySQL 4.1.20を使用しています。

システムにログインしようとしたり、データベースへの接続に関連する行為 ( FOS コマンドを使用して新しいユーザーを追加するなど) を試みるたびに、次のエラーが表示されます。

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

すでに0 に設定old_passwordsmy.cnf、mysql を再起動し、mysql ユーザーの新しいパスワードを設定して、mysql を再起動しようとしましたが、それでも同じです。そして、クエリウィンドウでこれを実行するたびに:

SELECT user, Length(Password) FROM mysql.user;

使用しているユーザーのパスワードの長さとして 16 が表示されます。また、mysql サーバーの変数と設定を確認すると、old passwordsONなります(my.cnf で old_password を 0 に設定していますが)。

これの何が問題なのですか?よろしくお願いします。

更新:当面の間、データベースにアクセスできるように db ユーザーのパスワードを削除します。しかし、ネットで見つけた解決策 (my.cnf で削除またはコメントアウトするold_passwords=1、old_passwords を 0 に設定する、新しいパスワードを設定してから再起動するなど) がうまくいかなかったので、まだ他の解決策を探しています。

別の更新:通常、この問題の解決策old_passwordsは mysql で開始することですが、その後、PHP のドキュメントに記載されているように、

新しい mysqlnd ライブラリは、mysql 構成ファイル (my.cnf/my.ini) を読み取りません。

これは、old_passwordsin 0 in に設定しても意味my.cnfがないということですか? 私はまだこの問題の解決策を見つけていません。

使用されているプラ​​ットフォームのいずれかでアップグレードが必要ですか? 助けてくれてありがとう。

4

2 に答える 2

4

「SET PASSWORD」は、MySQL サーバー 5.7.6 では廃止されました。

5.7.6 より前のサーバーで従うべき構文は、次のとおりです。

SET PASSWORD [FOR user] = password_option
password_option: {
    PASSWORD('auth_string')
  | OLD_PASSWORD('auth_string')
  | 'hash_string'
}

サーバー 5.7.6 以降で従うべき構文は次のとおりです。

SET PASSWORD [FOR user] = password_option
password_option: {
    PASSWORD('auth_string')
  | 'auth_string'
}

参照-> http://dev.mysql.com/doc/refman/5.7/en/set-password.html

于 2015-11-16T13:30:33.320 に答える
2

この解決策を試してください

http://laravel.io/forum/04-16-2014-solving-mysqlnd-cannot-connect-to-mysql-41

解決策に従って、パスワードを再度設定し、新しい形式で保存するように指定するだけです。

mysql> SET @@session.old_passwords = 0;
Query OK, 0 rows affected (0.00 sec)
SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('existingpass');
Query OK, 1 rows affected (0.00 sec);
于 2015-11-10T05:48:57.850 に答える