0

開発ボックスの PHP を最新バージョンの5.4.5. この開発用マシンは、ホスティング会社からリースした共有サーバー上にあるリモートのMySQL サーバーに接続します。

単純な結果を使用してリモート MySQL サーバーに接続しようとするとmysql_connect('myserver.com', 'user', 'password')、次のエラーが発生します。

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

単純に、アドバイスに従って、次を実行するだけです:

SET PASSWORD = PASSWORD('my-password');

何も変わらないでしょう。実行時も同様

SET SESSION old_passwords=FALSE;

少し検索した後、この問題を解決するには、MySQL サーバーへの非常に深いアクセスが必要であることがわかりましたが、私にはありません。このクエリを実行しようとしています:

UPDATE mysql.user SET Password=PASSWORD('my-password')
  WHERE User='my_user' AND Host='my-server';
FLUSH PRIVILEGES;

次のエラーが表示されます。

1142 - テーブル 'user' のユーザー 'u0112918'@'www10.aname.net' に対する UPDATE コマンドが拒否されました

会社に私に代わってクエリを実行してもらうという要求は、これまでのところ成功していません. 私の質問は、MySQL サーバーを使用せずに、クライアント側でこれを修正する方法があるかどうかです。

4

1 に答える 1

1

うーん、Mysql WorkbenchなどのPhpMyAdmin以外のツールまたはシェルを使用して、次のクエリを実行してみてください。

SET SESSION old_passwords=0; 
SET PASSWORD = PASSWORD('passwordString');

ユーザーテーブルのDML権限がなくても、自分のパスワードを変更できるようにする必要があります。

編集:問題が解決されなかったため、データベースで「read_only」が有効になっている場合は、(自分の)パスワードを変更するためのスーパー権限が必要です(http://dev.mysql.com/doc/refman/5.5/en /set-password.html

于 2012-08-02T15:23:28.747 に答える