4

実行する$conn = mysql_connect($host, $user, $pass);とデータベースに接続できますが、接続するとvar_dump($conn)元に戻りbool(true)、複数のサーバーへの複数の接続が制限されます。

このコンピューターの元のセットアップは、PHP インストーラーを介して PHP 5.3.4 にアップグレードされた PHP 5.2 のバージョンを使用した XAMPP でした。ローカル データベースには問題なく接続できましたが (リソース リンク識別子の代わりにブール値が返された以外は)、リモート マシンには接続できませんでした (リモート マシンに接続できることが確認されています)。解決策を思いつくことができず、PHP 5.3.1 が組み込まれている XAMPP のバージョンにアップグレードしました。 .

編集 1 **

Windows のクリーン インストールに移行し、XAMPP をインストールして、リモート サーバー (PHP 5.3.1) に対して mysql_connect を実行しようとすると、同じエラーが発生します。

Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:554) in [Removed] on line 2

Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in [Removed]p on line 2

Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file in [Removed] on line 2
4

4 に答える 4

4

あなたの編集で投稿されたエラーに関しては、Linux で MySQL 5.0.45 に接続するときに PHP 5.3.5 を使用して Windows 7 で同じエラーが発生していました。私の解決策は、my.cnfで「old_passwords」を無効にして実行することでした

set password = password('my password');

エラー メッセージは、問題を解決するために両方の手順を実行する必要があることを明確に示していません。お役に立てれば。

于 2011-03-11T19:21:23.523 に答える
4

ファイルold_passwordsのオプションを確認してください。my.cnf

http://dev.mysql.com/doc/refman/5.0/en/server-options.html#option_mysqld_old-passwords

何らかの理由で新しいパスワードに切り替えることができない場合mysqlndは、MySQL ドライバーとして使用できず、古いパスワードに切り替える必要があります。

についての詳細情報mysqlnd

http://dev.mysql.com/downloads/connector/php-mysqlnd/

于 2011-01-26T16:35:08.290 に答える
2

パスワードを変更したいのに、サーバーが 16 バイトのハッシュを生成し続ける場合は、次のようにしてみてください。

1) 自分で 41 バイトのハッシュを生成します (いくつかのハッシュ ジェネレータ Web サイトを使用)。

2) パスワードを変更します SET PASSWORD FOR 'username' = '*aa1420f182e88b9e5f874f6fbe7459291e8f4601'

これで、新しい認証方法を使用してデータベースに接続できるはずです

于 2011-04-23T11:45:44.720 に答える
0

これを見つけるまで、ここ(および他の場所)にリストされているほぼすべてを試しましたが、役に立ちませんでした:

SET old_passwords = 0; UPDATE mysql.user SET Password = PASSWORD('testpass') WHERE User = 'testuser' limit 1; SELECT LENGTH(パスワード) FROM mysql.user WHERE ユーザー = 'testuser'; フラッシュ特権;

それをmysqlクライアントまたはphpmyadminにドロップし、testpassをDBログインパスワードに変更し、testuserをDBログインユーザーに変更して、クエリを実行します。大成功!問題が解決しました。

于 2011-03-28T21:08:01.013 に答える