私と同じ懸念で多くの質問が提起されていることは承知していますが、これに対する別の解決策を見つけるのを手伝ってくれることを願っています.
プロジェクトにはSymfony 2.5.10、PHP 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_passwords
しmy.cnf
、mysql を再起動し、mysql ユーザーの新しいパスワードを設定して、mysql を再起動しようとしましたが、それでも同じです。そして、クエリウィンドウでこれを実行するたびに:
SELECT user, Length(Password) FROM mysql.user;
使用しているユーザーのパスワードの長さとして 16 が表示されます。また、mysql サーバーの変数と設定を確認すると、old passwords
ONになります(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_passwords
in 0 in に設定しても意味my.cnf
がないということですか? 私はまだこの問題の解決策を見つけていません。
使用されているプラットフォームのいずれかでアップグレードが必要ですか? 助けてくれてありがとう。