MYSQL ERROR 2049 (HY000): Kết nối sử dụng giao thức xác thực cũ (trước 4.1.1) được sử dụng (tùy chọn máy khách 'safe_auth' được bật)


9

Khi tôi cố gắng khôi phục tất cả kết xuất cơ sở dữ liệu ở phiên bản 5.0 thành phiên bản 5.6, nó đã được khôi phục và sau đó khi tôi cố gắng kết nối lại, tôi gặp lỗi sau

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

Tôi đã thử thêm các dòng sau trong My.ini và khởi động lại dịch vụ, nhưng vấn đề vẫn tồn tại cho đến khi.

Skip-Grant-bảng Liên kết sau đây cho biết đây là một lỗi trong MYSQL.

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

Có ai có bất kỳ sửa chữa cho giải pháp này?

Câu trả lời:


6

Đây không phải là lỗi nếu bạn có tài khoản người dùng có mật khẩu sử dụng thuật toán băm cũ. Nếu bạn đọc báo cáo lỗi được đề cập trong liên kết bạn đã đăng:

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

[1 tháng 5 15:24] Nông dân Todd

Giải pháp thay thế ("giải pháp", thực sự) cho vấn đề này là thay đổi mật khẩu cho người dùng bị ảnh hưởng thành hàm băm sau 4.1. Đây thực sự là một cách thực hành tốt nhất được đề xuất, bất kể - quá trình băm mật khẩu và ủy quyền trước 4.1 có những hạn chế bảo mật đáng chú ý (được thảo luận trong tài liệu tại http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html ).

Khôi phục phiên bản 5.0 của mysqllược đồ trên máy chủ 5.6 là một ý tưởng tồi ở mọi mức độ, bởi vì 5.6 có các cột bổ sung trong một số bảng và một số bảng hoàn toàn mới, hiện có thể thiếu hoặc không phụ thuộc vào cách bạn định cấu hình mysqldump khi bạn đã tạo tập tin kết xuất. Bạn có thể đã gây ra các vấn đề khác mà bạn có thể không nhìn thấy ngay lập tức.

Ngoài ra, tôi không thấy skip-grant-tablesđược đề cập trong bài viết ... nhưng nếu bạn áp dụng chính xác tùy chọn đó cho máy chủ, tất cả xác thực sẽ được bỏ qua và bạn sẽ có thể đăng nhập và đặt lại mật khẩu.


8

Trên dòng lệnh, sử dụng một cái gì đó như sau, nếu bạn không có lựa chọn nào ...

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

Hy vọng điều này sẽ giúp được ai đó, vì đây là vấn đề của tôi khi kết nối từ Linux


Điều này không làm việc cho tôi. Tôi vẫn nhận được thông báo lỗi.
fanchyna

6

Nếu bạn sử dụng MySQL Workbench, bạn cần kiểm tra tùy chọn này:

nhập mô tả hình ảnh ở đây


Mặc dù điều này hoạt động để kết nối với cơ sở dữ liệu, vấn đề không thể nhập / xuất sẽ tồn tại. Tôi đã thử nghiệm và xác nhận điều này, vì hiện tại tôi đang tìm cách để được phép nhập / xuất dữ liệu với giao thức xác thực cũ.
rkeet

Cảm ơn! Nó hoạt động với tôi khi tôi cố gắng kết nối bằng Workbench.
Huỳnh Vinh Phát

Tôi thấy tùy chọn này là trong phiên bản bàn làm việc 6.0.7 nhưng không phải trong phiên bản mới nhất.
Mian Asbat Ahmad

1

Điều này thực sự có ý nghĩa như một nhận xét về câu trả lời trước đó, nhưng quá lớn để phù hợp với nhận xét StackExchange.

Tôi cũng bị vấn đề này. Vì vậy, tôi đã tạo một người dùng mới với hàm băm kiểu mới và bây giờ sử dụng người dùng mới đó mà không gặp rắc rối. Đây là những gì tôi đã làm:

    [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   |     |         |       |

Tôi rất vui khi thấy rằng cột Mật khẩu của chúng tôi đã đủ rộng để chứa các giá trị băm kiểu mới. (Nếu nó rộng chưa đến 41 ký tự, tôi có thể không đủ can đảm để mở rộng nó :-)

    [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_passwordscon người ONrõ ràng là vấn đề, vì vậy tôi tạm thời thay đổi nó:

    [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)

Sau đó, tôi đã tạo một người dùng mới:

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

... và đã xem băm mới:

    [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      

Lưu ý cách băm của tôi lớn hơn những người khác!

Chỉ để gọn gàng, tôi old_passwordstrở lại OFF. Điều này có lẽ là vô nghĩa, vì tôi không thể nghĩ tại sao mọi người muốn tạo người dùng mới bằng mật khẩu cũ, nhưng ai biết được.

Dù sao: điều này đã giải quyết nó cho tôi.


Điều này có giải quyết được câu hỏi của OP không? Nếu không, có lẽ nó nên là câu hỏi và câu trả lời của riêng nó.
Max Vernon

@MaxVernon Tôi cho rằng tùy thuộc vào OP để quyết định xem nó có giải quyết được không. Nó làm việc cho tôi.
off1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.