似たような質問がたくさんあることは知っていますが、実際、私はそれらすべて (9) を読みました。
しかし、どれも私の問題を解決しません。
共有ホスティング パッケージ (最小) を持っています。私のパッケージには、ドメイン名と、MySQL サーバーがホストされている別の IP アドレスが含まれています。開発にはhttp://localhost/
、PHP 5.4 の開発サーバーを使用しており、ホスティング パッケージに含まれている MySQL サーバーを使用しています。
PHP 5.4 をインストールしたため、問題が発生するのは私の PC だけですが、Web ホストには PHP 5.2.17 がインストールされており、アップグレードされません。MySQL サーバーは MySQL 5.1.50 上にあります。
幸いなことに、phpMyAdmin には「パスワードの変更」機能が組み込まれています。
phpMyAdmin には、パスワードを変更するための 2 つのハッシュ オプションがあります。
- MySQL 4.1+
- MySQL 4.0 互換
MySQL 4.1+ オプションでパスワードを変更したところ、更新が成功したことが確認されました。
プロフィールを更新しました。
SET PASSWORD = PASSWORD( '***' )
ただし、このクエリを実行すると:
SELECT @@global.old_passwords, @@session.old_passwords, Length(PASSWORD('abc'));
パスワードの長さはまだ16であることがわかります。出力:
1 1 16
そして、問題は解決しません。
データベースに接続できません。SQLSTATE[HY000] [2000] mysqlnd は、古い安全でない認証を使用して MySQL 4.1+ に接続できません。管理ツールを使用して、コマンド SET PASSWORD = PASSWORD('your_existing_password') でパスワードをリセットしてください。これにより、新しい、より安全なハッシュ値が mysql.user に保存されます。このユーザーが PHP 5.2 以前で実行される他のスクリプトで使用されている場合、my.cnf ファイルから old-passwords フラグを削除する必要がある場合があります。
また、phpMyAdmin で DBO ユーザーとしてログインしたときに、これらのクエリを実行しようとしました。
SET SESSION old_passwords=0;
[phpMyAdmin reloads to the home screen, but the value remains = 1]
SET GLOBAL old_passwords = 0;
#1227 - Access denied; you need the SUPER privilege for this operation
FLUSH PRIVILEGES;
#1227 - Access denied; you need the RELOAD privilege for this operation
これは、DBO ユーザーを設定するための Web ホストのメニューに記載されている内容と矛盾しています。
データベース所有者
新しいデータベースを作成するときは、データベース所有者 (DBO) ユーザーを指定する必要があります。このユーザー
には、データベースへの完全な管理者アクセス権があります。
これは私がウェブホストに相談しなければならないことですか? それとも、私の DBO ユーザーが解決できますか? それ以外の場合、これは PHP でバイパスできますか? (PHP 5.2.17 では動作しますが、PHP 5.4 では動作しないため)