MYSQL ERROR 2049 (HY000) : 이전 (4.1.1 이전) 인증 프로토콜 참조를 사용한 연결 (클라이언트 옵션 'secure_auth'사용)


9

5.0 버전의 모든 데이터베이스 덤프를 5.6 버전으로 복원하려고하면 복원되어 다시 연결하려고하면 다음 오류가 발생합니다.

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

My.ini에 다음 줄을 추가하려고 시도하고 서비스를 다시 시작했지만 문제는 계속 지속됩니다.

skip-grant-tables 다음 링크는 MYSQL의 버그를 나타냅니다.

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

누구 든지이 솔루션에 대한 수정 사항이 있습니까?

답변:


6

고대의 해시 알고리즘을 사용하는 암호가있는 사용자 계정이있는 경우에는 버그가 아닙니다. 게시 한 링크에 언급 된 버그 보고서를 읽는 경우 :

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

[5 월 1 일 15:24] 토드 파머

이에 대한 임시 해결책 (실제로는 "솔루션")은 영향을받는 사용자의 비밀번호를 4.2 이후 해시로 변경하는 것입니다. 4.1 이전의 비밀번호 해싱 및 권한 부여 프로세스에는 주목할만한 보안 제한이 있습니다 ( http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html의 문서에 설명되어 있음). ).

mysql5.6 서버에 5.0 버전의 스키마를 복원하는 것은 5.6의 일부 테이블과 완전히 새로운 테이블에 추가 열이 있으므로 5.6 서버에 스키마를 복원하는 것은 좋은 생각이 아닙니다. 덤프 파일을 작성했습니다. 즉시 볼 수없는 다른 문제가 발생했을 수 있습니다.

또한 skip-grant-tables기사에서 언급 하지 않은 ... ...이 옵션을 서버에 올바르게 적용하면 모든 인증이 무시되고 로그인하고 비밀번호를 재설정 할 수 있어야합니다.


8

선택의 여지가 없다면 명령 행에서 다음과 같은 것을 사용하십시오.

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

이것이 리눅스에서 연결하는 데 문제가 있기 때문에 누군가에게 도움이되기를 바랍니다.


이것은 나를 위해 작동하지 않습니다. 여전히 오류 메시지가 나타납니다.
fanchyna

6

MySQL Workbench를 사용하는 경우이 옵션을 확인해야합니다.

여기에 이미지 설명을 입력하십시오


데이터베이스에 연결하는 데에는 효과가 있지만 가져 오기 / 내보내기가 불가능하다는 문제는 지속됩니다. 현재 이전 인증 프로토콜을 사용하여 데이터를 가져 오거나 내보낼 수있는 방법을 찾고 있으므로 이것을 테스트하고 확인했습니다.
rkeet

감사! Workbench를 사용하여 연결하려고 할 때 효과적이었습니다.
Huynh Vinh Phat

이 옵션은 워크 벤치 버전 6.0.7에 있지만 최신 버전에는없는 것으로 나타났습니다.
Mian Asbat Ahmad

1

이것은 실제로 이전 답변에 대한 의견으로 의미되지만 StackExchange 의견에 들어가기에는 너무 큽니다.

나도이 문제로 고통 받고 있었다. 그래서 나는 새로운 스타일의 해시로 새로운 사용자를 만들었고 이제는 새로운 사용자를 문제없이 사용합니다. 내가 한 일은 다음과 같습니다.

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

비밀번호 열이 이미 새로운 스타일의 해시를 보유 할만큼 충분히 넓다는 것을 알게되어 기뻤습니다. (너비가 41 자 미만인 경우, 그것을 넓힐 용기가 없었을 수도 있습니다. :-)

    [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_passwords존재 ON는 분명히 문제이므로 일시적으로 변경했습니다.

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

그런 다음 새로운 사용자를 만들었습니다.

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

... 그리고 새로운 해시를 살펴 보았습니다.

    [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      

내 해시가 다른 해시보다 얼마나 큰지 확인하십시오!

깔끔하게하기 위해, 나는로 old_passwords돌아갔다 OFF. 왜 누군가가 이전 암호를 사용하여 새 사용자를 만들려고하는지 알 수 없지만 누가 아는지를 알 수 없기 때문에 이것은 아마도 의미가 없었습니다.

어쨌든 : 이것은 나를 위해 해결했습니다.


이것이 OP의 질문을 해결합니까? 그렇지 않다면 아마도 자체 질문과 답변이어야합니다.
Max Vernon

@MaxVernon 나는 그것을 해결할지 결정하는 것이 OP에 달려 있다고 가정합니다. 그것은 나를 위해 일했다.
offby1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.