13

ローカル マシンからオンラインで MySQL サーバーにリモート接続しようとしていますが、次のエラーが発生します。

Warning: PDO::__construct(): The server requested authentication 
method unknown to the client [mysql_old_password] in 
C:\xampp\htdocs\ticket\terminal\sync.php

SQLSTATE[HY000] [2054] The server requested authentication method 
umknown to the client

ローカルの MySQL サーバーのバージョンは 5.5.27、libmysql - mysqlnd 5.0.10 リモートの MySQL サーバーのバージョンは 5.5.23 で、mysqlnd のバージョンは公開されていません。

互換性のないパスワードハッシュの問題だと思いますが、解決方法がわかりません。以下は私の接続コードの一部です

$dsn = 'mysql:host=184.173.209.193;dbname=my_db_name';
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); 

try {
    $online_dbh = new PDO($dsn, 'myusername', 'mypassword', $options);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Congratulations!";
} catch (PDOException $e) {
    echo $e->getMessage();
} 
4

8 に答える 8

13

PHP 5.3 以降を使用していると仮定すると、Backward Incompatibility Changesのいずれかが発生している可能性があります。

新しい mysqlnd ライブラリでは、MySQL 4.1 の新しい 41 バイトのパスワード形式を使用する必要があります。古い 16 バイトのパスワードを引き続き使用すると、mysql_connect() および同様の関数がエラー「mysqlnd は古い認証を使用して MySQL 4.1+ に接続できません」を発行します。

その場合は、パスワードの更新についてhttps://stackoverflow.com/a/1340538/187954を参照してください。

于 2013-01-30T20:41:19.450 に答える
3

私は課題を克服しました。私のリモート MySQL データベース ホストは、まだ 16 バイトの古い MySQL パスワード ハッシュを使用しているのに対し、ローカル ホスト データベース サーバーは 41 バイトのパスワード ハッシュを使用していることがわかりました。次のクエリを使用して、パスワードの長さを見つけました。

SELECT PASSWORD('mypass') 

次のクエリを実行して、localhost データベース サーバーのパスワード ハッシュを 16 バイトに変更しました。

SET GLOBAL old_passwords = 1;

my.ini次に、ファイルを編集old_password=1し、サーバーの再起動時に新しいパスワード システムに戻らないように設定しました。しかし、それは私の問題を解決しませんでした。

PHPを使用していたので、認証を処理するのはPHPであることがわかりました。そのMySQL APIため、にダウングレードしPHP 5.2.8、リモート接続を成功させることができました。

これが誰かに役立つことを願っています。

于 2013-03-10T09:59:42.317 に答える
0

と を使用している場合はBitbucket Pipelines、次のように既知の引数をサービスにMySQL 5.8+追加できます。--default-authentication-plugin=mysql_native_password

definitions:
  services:
    mysql:
      image: mysql:8.0
      environment:
        MYSQL_DATABASE: 'app'
        MYSQL_ROOT_PASSWORD: 'root'
        MYSQL_DEFAULT_AUTH: 'mysql_native_password'
于 2021-04-29T23:39:07.880 に答える