Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Melemparkan Ralat Sambungan Jauh 'Kaedah Pengesahan Tidak Diketahui'?

Mengapa MySQL Melemparkan Ralat Sambungan Jauh 'Kaedah Pengesahan Tidak Diketahui'?

Barbara Streisand
Lepaskan: 2024-11-07 09:11:02
asal
751 orang telah melayarinya

Why Does MySQL Throw an

Ralat Sambungan Jauh MySQL: "Kaedah Pengesahan Tidak Diketahui"

Apabila cuba mewujudkan sambungan jauh ke pelayan MySQL daripada mesin tempatan, anda mungkin menghadapi ralat berikut:

Warning: PDO::__construct(): The server requested authentication method unknown to the client [mysql_old_password] in ...

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
Salin selepas log masuk

Memahami Masalah:

Ralat ini biasanya menunjukkan ketidakserasian antara kaedah pencincangan kata laluan yang digunakan oleh MySQL tempatan dan jauh pelayan. Versi MySQL sebelum 4.1 menggunakan kaedah pencincangan kata laluan 16-bait, manakala versi 4.1 dan ke atas menggunakan kaedah pencincangan 41-bait yang lebih selamat. Jika pelayan MySQL tempatan menggunakan kaedah pencincangan lama tetapi pelayan jauh menggunakan yang baharu, percubaan sambungan akan gagal dengan ralat "kaedah pengesahan tidak diketahui".

Menyelesaikan Isu:

Untuk menyelesaikan isu ini, anda perlu mengemas kini kata laluan pada pelayan MySQL jauh untuk menggunakan format pencincangan 41-bait baharu. Begini caranya:

  1. Sambung ke Pelayan MySQL Jauh:

    mysql -u [username] -p[password]
    Salin selepas log masuk
  2. Kemas kini Kata Laluan:

    ALTER USER [username] IDENTIFIED BY '[new_password]';
    Salin selepas log masuk
  3. Berikan Kebenaran:

    Pastikan bahawa pengguna mempunyai kebenaran yang diperlukan untuk mengakses pangkalan data:

    GRANT ALL PRIVILEGES ON [database_name].* TO [username]@'local_ip_address';
    Salin selepas log masuk
  4. Sambung semula:

    Cuba sambung ke pelayan MySQL jauh dengan kata laluan yang dikemas kini:

    $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', 'new_password', $options);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "Success!";
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
    Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat Sambungan Jauh 'Kaedah Pengesahan Tidak Diketahui'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan