MYSQL ERROR 2049 (HY000): Koneksi menggunakan protokol otentikasi yang lama (pra-4.1.1) yang digunakan ref (opsi klien 'secure_auth' diaktifkan)

9

ketika saya mencoba untuk mengembalikan semua database dump yang ada di versi 5.0 ke versi 5.6, itu dipulihkan dan setelah itu ketika saya mencoba untuk menyambung kembali, saya mendapatkan kesalahan berikut

ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled)..

Saya telah mencoba menambahkan baris berikut di My.ini dan memulai kembali layanan, tetapi masalah tetap ada sampai.

skip-grant-tables Tautan berikut mengatakan ini bug dalam MYSQL.

https://github.com/santisaez/powerstack/blob/master/packages/mysql/mysql-powerstack-secure_auth.patch

Adakah yang punya perbaikan untuk solusi ini?

Praveen Prasannan
sumber

Jawaban:

6

Ini bukan bug jika Anda memiliki akun pengguna dengan kata sandi yang menggunakan algoritma hashing kuno. Jika Anda membaca laporan bug yang disebutkan dalam tautan yang Anda pasang:

http://bugs.mysql.com/bug.php?id=69027

[1 Mei 15:24] Todd Farmer

Solusi ("solusi", sungguh) untuk ini adalah mengubah kata sandi untuk pengguna yang terpengaruh ke hash post-4.1. Ini benar-benar praktik terbaik yang disarankan, terlepas dari apa pun - proses pembuatan dan pengesahan kata sandi sebelum 4.1 memiliki batasan keamanan yang penting (dibahas dalam dokumentasi di http://dev.mysql.com/doc/refman/5.0/id/password-hashing.html ).

Memulihkan versi 5.0 mysqlskema ke server 5.6 adalah ide yang buruk, karena 5.6 memiliki kolom tambahan di beberapa tabel dan beberapa tabel yang sama sekali baru, yang mungkin atau mungkin tidak hilang sekarang tergantung pada bagaimana Anda mengkonfigurasi mysqldump ketika Anda membuat file dump. Anda mungkin telah menyebabkan masalah lain yang mungkin tidak segera Anda lihat.

Juga, saya tidak melihat skip-grant-tablesdisebutkan dalam artikel ... tetapi jika Anda benar menerapkan opsi itu ke server, semua otentikasi dilewati dan Anda harus dapat masuk dan mengatur ulang kata sandi.

Michael - sqlbot
sumber
8

Di baris perintah, gunakan sesuatu seperti berikut ini, jika Anda tidak punya pilihan ...

mysql -uTheUseerNAme -pThePassword DbName -h HostName --skip-secure-auth

Semoga ini bisa membantu seseorang, karena ini masalah saya menghubungkan dari Linux

ShaunOReilly
sumber
ini tidak bekerja untuk saya. Saya masih mendapatkan pesan kesalahan.
fanchyna
6

Jika Anda menggunakan MySQL Workbench, Anda perlu memeriksa opsi ini:

masukkan deskripsi gambar di sini

Franck Dernoncourt
sumber
Meskipun ini berfungsi untuk menghubungkan ke database, masalah tidak dapat mengimpor / mengekspor akan tetap ada. Saya telah menguji dan mengonfirmasi ini, karena saya sedang mencari cara untuk diizinkan untuk mengimpor / mengekspor data dengan protokol auth lama.
rkeet
Terima kasih! Ini bekerja untuk saya ketika saya mencoba terhubung menggunakan Workbench.
Huynh Vinh Phat
Saya menemukan opsi ini di workbench versi 6.0.7 tetapi tidak dalam versi terbaru.
Mian Asbat Ahmad
1

Ini benar-benar dimaksudkan sebagai komentar pada jawaban sebelumnya, tetapi terlalu besar untuk masuk ke dalam komentar StackExchange.

Saya juga menderita masalah ini. Jadi saya membuat pengguna baru dengan hash gaya baru, dan sekarang menggunakan pengguna baru itu tanpa masalah. Inilah yang saya lakukan:

    [172.16.2.222:mysql Thu Nov  7 16:16:25 2013]> use mysql;
    Database changed
    [172.16.2.222:mysql Thu Nov  7 16:22:23 2013]> describe user;
    describe user;
    +-----------------------+-----------------------------------+------+-----+---------+-------+
    | Field                 | Type                              | Null | Key | Default | Extra |
    +-----------------------+-----------------------------------+------+-----+---------+-------+
    | Host                  | char(60)                          | NO   | PRI |         |       |
    | User                  | char(16)                          | NO   | PRI |         |       |
    | Password              | char(41)                          | NO   |     |         |       |

Saya senang melihat kolom Kata Sandi kami sudah cukup lebar untuk menampung hash gaya baru. (Jika lebarnya kurang dari 41 karakter, saya mungkin tidak memiliki keberanian untuk memperluasnya :-)

    [172.16.2.222:mysql Thu Nov  7 16:13:10 2013]> show variables like '%pass%';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | old_passwords   | ON    |
    | report_password |       |
    +-----------------+-------+
    2 rows in set (0.06 sec)

old_passwordsmakhluk ONjelas merupakan masalah, jadi untuk sementara saya mengubahnya:

    [172.16.2.222:mysql Thu Nov  7 16:13:59 2013]> set session old_passwords = 'OFF';
    Query OK, 0 rows affected (0.05 sec)

    [172.16.2.222:mysql Thu Nov  7 16:14:12 2013]> show variables like '%pass%';
    show variables like '%pass%';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | old_passwords   | OFF   |
    | report_password |       |
    +-----------------+-------+
    2 rows in set (0.06 sec)

Lalu saya membuat pengguna baru:

    [172.16.2.222:mysql Thu Nov  7 16:14:16 2013]> create user 'erich' IDENTIFIED BY 'SEKRIT PASSWORD';

... dan lihat hash baru:

    [172.16.2.222:mysql Thu Nov  7 16:14:26 2013]> select * from user order by User;
    +-----------+--------------+-------------------------------------------+--------
    | Host      | User         | Password                                  | Select_
    +-----------+--------------+-------------------------------------------+--------
    | localhost | someguy      | 3d9505dd323e53f1                          | Y      
    | %         | someotherguy | 79b3df3b004bb855                          | Y      
    | %         | erich        | *D2589EF6B59146801234567897BB190123456789 | N      
    | %         | anotheroldguy| 60577e0d77b9212b                          | Y      

Perhatikan bagaimana hash saya lebih besar dari yang lain!

Agar rapi, saya old_passwordskembali ke OFF. Ini mungkin tidak ada gunanya, karena saya tidak dapat berpikir mengapa ada orang yang ingin membuat pengguna baru menggunakan kata sandi lama, tetapi siapa yang tahu.

Bagaimanapun: ini menyelesaikannya untuk saya.

offby1
sumber
Apakah ini menyelesaikan pertanyaan OP? Jika tidak, mungkin itu harus menjadi pertanyaan dan jawaban sendiri.
Max Vernon
@ MaxVernon Saya berasumsi terserah OP untuk memutuskan apakah itu menyelesaikannya. Ini berhasil untuk saya.
offby1