• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 1. 일반적인 보안 문제
    2. MySQL 권한 시스템
    3. MySQL 사용자 계정 관리
    1. 사용자 이름과 암호
    2. 사용자 계정 추가
    3. 사용자 계정 삭제
    4. 계정 자원 제한 설정
    5. 계정 암호 지정
    6. 암호 만료 및 샌드 박스 모드
    7. 플러그 인증
    8. MySQL에서 사용 가능한 인증 플러그인
    1. 기본 인증 플러그인
    2. 이전 기본 인증 플러그인
    3. 이전 암호 해시 방식과 mysql_old_password 플러그인에서 마이그레이션
    4. SHA-256 인증 플러그인
    5. PAM 인증 플러그인
    6. Windows 네이티브 인증 플러그인
    7. 클라이언트 측의 일반 텍스트 인증 플러그인
    8. 소켓 피어 인증서 인증 플러그인
    9. 테스트 인증 플러그인
    9. 프록시 사용자
    10. 보안 연결을 위해 SSL 사용
    11. SSH를 사용하여 Windows에서 MySQL에 대한 원격 연결
    12. MySQL Enterprise Audit 로그 플러그인
    13. SQL 기반의 MySQL 계정 활동 감사
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

6.3.8.3  이전 암호 해시 방식과 mysql_old_password 플러그인에서 마이그레이션

MySQL 서버는 plugin 컬럼에서 이름이 지정된 인증 플러그인을 사용하여 mysql.user 테이블에 나열 된 계정에 대해 연결 시도를 인증합니다. plugin 컬럼이 비어있는 경우 서버는 다음과 같이 인증을 수행합니다.

  • MySQL 5.7.2 이전에는 Password 컬럼의 암호 해시 형식에 따라서 서버는 암시 적으로 mysql_native_password 이나 mysql_old_password 플러그 인을 사용합니다. Password 값이 비어 있거나 4.1 암호 해시 (41 자) 인 경우, 서버는 mysql_native_password 을 사용합니다. 암호 값이 4.1 이전 암호 해시 (16 문자)의 경우, 서버는 mysql_old_password 을 사용합니다. (이 해시 형식에 대한 자세한 내용은 섹션 6.1.2.4 "MySQL에서 암호 해시" 를 참조하십시오.)

  • MySQL 5.7.2의 시점에서는 plugin 컬럼을 하늘 이외에해야 서버는 빈 plugin 값을 가진 계정을 비활성화합니다. 5.7.5의 시점에서 mysql_old_password 지원이 삭제되어 있습니다.

4.1 이전 암호 해시 및 mysql_old_password 플러그인은 MySQL 5.6.5의 시점에서 비추천입니다 4.1 암호 해시 및 mysql_native_password 플러그인에 의해 제공되는보다 낮은 보안 수준을 제공한다. plugin 컬럼을 하늘 이외에해야하는 MySQL 5.7.2의 요구 사항과 5.7.5에서 mysql_old_password 지원이 삭제 된 것을 합칠 경우 DBA는 다음과 같이 계정을 업그레이드하는 것이 좋습니다 합니다.

  • mysql_native_password 을 명시 적으로 사용하기 위해 그것을 암묵적으로 사용하는 계정을 업그레이드합니다.

  • mysql_native_password 을 명시 적으로 사용하기 위해 (암시 적 또는 명시 적으로) mysql_old_password 를 사용하여 계정을 업그레이드합니다.

이 섹션의 단계에서는 이러한 업그레이드를 수행하는 방법을 설명합니다. 그 결과, 계정은 빈 plugin 값을 가지지 않고, 4.1보다 이전 암호 해시 또는 mysql_old_password 플러그인을 사용하지 않습니다.

이 단계의 변형으로 DBA는 SHA-256 암호 해시를 사용하여 인증하는 sha256_password 플러그인으로 업그레이드하는 옵션을 사용자에게 제공 할 수 있습니다. 이 플러그인은 섹션 6.3.8.4 "SHA-256 인증 플러그인" 을 참조하십시오.

다음 표에는이 설명에서 고려되는 mysql.user 계정 유형을 나열합니다.

plugin 컬럼 Password 컬럼 인증 결과 업그레이드 작업
하늘 하늘 암묵적으로 mysql_native_password 를 사용하는 플러그인 할당
하늘 4.1 해시 암묵적으로 mysql_native_password 를 사용하는 플러그인 할당
하늘 4.1 이전의 해시 암묵적으로 mysql_old_password 를 사용하는 플러그인을 할당 암호를 다시 해시하기
mysql_native_password 하늘 명시 적으로 mysql_native_password 를 사용하는 없음
mysql_native_password 4.1 해시 명시 적으로 mysql_native_password 를 사용하는 없음
mysql_old_password 하늘 명시 적으로 mysql_old_password 를 사용하는 플러그 인 업그레이드
mysql_old_password 4.1 이전의 해시 명시 적으로 mysql_old_password 를 사용하는 플러그인을 업그레이드하고 암호를 다시 해시하기

mysql_native_password 플러그인 행에 해당하는 계정은 (플러그인이나 해시 형식을 변경할 필요가 없기 때문에) 업그레이드 작업은 필요하지 않습니다. 암호가 빈 행에 해당하는 계정은 DBA 암호를 선택하도록 계정 소유자에게 요구하는 것을 고려해야합니다 (또는 ALTER USER 를 사용하여 빈 계정 암호 만료 하여 그것을 요​​구해야합니다.)

mysql_native_password의 암시 적 사용에서 명시적인 사용으로 업그레이드

빈 플러그인 4.1 암호 해시를 가진 계정은 암시 적으로 mysql_native_password 을 사용합니다. mysql_native_password 을 명시 적으로 사용하도록 계정을 업그레이드하려면 DBA는 다음 문을 실행하도록하십시오.

 UPDATE mysql.user SET plugin = 'mysql_native_password'
 WHERE plugin = ''AND (Password = ''OR LENGTH (Password) = 41);
 FLUSH PRIVILEGES;

MySQL 5.7.2 이후에서는 DBA는 그 업그레이드 작업간에 동일한 작업을 수행 mysql_upgrade를 실행할 수 있습니다. 5.7.2 이전에서는 DBA는 이러한 문을 실행하여 계정을 능동적으로 업그레이드 할 수 있습니다.

참고 :

  • 이 단계는 이미 암묵적으로 사용하는 계정에 대해서만 mysql_native_password 플러그인을 명시하기 위해 언제 실행해도 안전합니다.

  • 이 단계에서는 암호를 변경할 필요가 없기 때문에, DBA는 사용자에게 영향을 주거나 업그레이드 과정에 참여하도록 사용자에게 요구하거나하지 않고이 작업을 수행 할 수 있습니다.

mysql_old_password에서 mysql_native_password에 계정을 업그레이드

mysql_native_password 을 명시 적으로 사용하려면 (암시 적 또는 명시 적으로) mysql_old_password 를 사용하여 계정을 업그레이드하도록하십시오. 이렇게하려면 플러그인을 변경하고 4.1보다 전부터 4.1 해시 형식으로 비밀번호를 변경해야합니다.

이 절차에 설명 된 계정 업그레이드 할 필요가있는 경우는 다음 조건 중 하나에 해당됩니다.

  • plugin 컬럼이 비어 있고 암호 해시 형식이 4.1보다 전 (16 자)이기 때문에 계정은 암묵적으로 mysql_old_password 을 사용합니다.

  • 계정은 명시 적으로 mysql_old_password 을 사용합니다.

이러한 계정 식별하려면 다음 쿼리를 사용합니다.

 SELECT User, Host, Password FROM mysql.user
 WHERE (plugin = ''AND LENGTH (Password) = 16)
 OR plugin = 'mysql_old_password';

다음의 설명에 해당 계정 세트를 갱신하기위한 두 가지 방법을 보여줍니다. 이들은 서로 다른 특성을 가지고 있기 때문에, DBA는 둘 다 읽고 특정 MySQL 설치에 최적의 방법을 결정하도록하십시오.

방법 1.

이 방법의 특징 :

  • 모든 사용자가 mysql_native_password 로 업그레이드 될 때까지 secure_auth=0 을 지정하여 서버와 클라이언트를 실행해야합니다. (그렇지 않으면 사용자는 새로운 형식의 해시로 업그레이드하기 위해 이전 형식의 암호 해시를 사용하여 서버에 연결할 수 없습니다.)

  • MySQL 5.5에서 5.7.1까지에서 작동합니다. 5.7.2 시점에서 서버는 비어 있지 않은 플러그인을 갖도록 계정에 요구하고 그렇지 않은 경우 해당 계정을 비활성화하기 위해 작동하지 않습니다. 따라서 5.7.2 이상으로 업그레이드 한 경우 방법 2를 선택하십시오.

DBA는 서버가 secure_auth=0 을 지정하여 실행되고 있는지 확인하도록하십시오.

명시 적으로 mysql_old_password 를 사용하는 모든 계정은 DBA는 하늘의 플러그인에 설정하도록하십시오.

 UPDATE mysql.user SET plugin = ''
 WHERE plugin = 'mysql_old_password';
 FLUSH PRIVILEGES;

또한 영향을받는 계정의 암호를 만료하려면 다음 문을 사용합니다.

 UPDATE mysql.user SET plugin = ''password_expired = 'Y'
 WHERE plugin = 'mysql_old_password';
 FLUSH PRIVILEGES;

이 시점에서 영향을받는 사용자는 서버에 연결하고 4.1의 해시가 사용되도록 암호를 재설정 할 수 있습니다. DBA는 빈 플러그인을 현재 가지고 각 사용자에게 연결하여 다음 문을 실행하도록 요구하게하십시오.

 SET old_passwords = 0;
 SET PASSWORD = PASSWORD ( ' user-chosen-password ');
참고

MySQL 5.6.5 이후에서는 클라이언트 측 --secure-auth 가 기본적으로 활성화되어 있기 때문에, DBA는이를 해제하도록 사용자에게 떠올리게합니다. 그렇지 않으면 사용자가 연결할 수 없습니다.

 shell> mysql -u user_name -p --secure-auth=0

영향을받는 사용자가이 문을 실행 한 후, DBA는 해당 계정 플러그인을 mysql_native_password 로 설정하면 플러그인을 명시 적으로 할 수 있습니다. 또한 DBA는 다음 문을 정기적으로 실행하면 영향을받는 사용자가 자신의 암호를 재설정 한 모든 계정을 검색하고 수정할 수 있습니다.

 UPDATE mysql.user SET plugin = 'mysql_native_password'
 WHERE plugin = ''AND (Password = ''OR LENGTH (Password) = 41);
 FLUSH PRIVILEGES;

빈 플러그인을 가진 계정이 없으면이 쿼리는 빈 결과를 반환합니다.

 SELECT User, Host, Password FROM mysql.user
 WHERE (plugin = ''AND LENGTH (Password) = 16);

이 시점에서 모든 계정은 4.1 이전 암호 해시에서 마이그레이션되고 secure_auth=0 을 지정하여 서버를 실행할 필요가 없습니다.

방식 2.

이 방법의 특징 :

  • DBA는 영향을받는 각 계정에 새 암호를 할당합니다. 따라서 DBA는 이러한 각 사용자에게 새 암호를 통지하고 새 암호를 선택하도록 사용자에게 요청해야합니다. DBA에서 사용자에게 암호 통지는 MySQL의 범위를 벗어납니다. DBA 암호를 신중하게 알리도록하십시오.

  • secure_auth=0 을 사용하여 서버 또는 클라이언트를 실행할 필요가 없습니다.

  • MySQL 5.5 이후의 어떤 버전에서도 작동합니다.

이 방법은 암호를 개별적으로 설정할 필요가 있기 때문에, DBA는 각 계정을 별도로 업데이트합니다. DBA는 계정마다 다른 암호를 선택하도록하십시오.

'user1'@'localhost' 가 업그레이드 된 계정 중 하나라고 가정합니다. DBA는 다음과 같이 변경하도록하십시오.

 SET old_passwords = 0;
 UPDATE mysql.user SET plugin = 'mysql_native_password'
 Password = PASSWORD ( ' DBA-chosen-password ')
 WHERE (User, Host) = ( 'user1', 'localhost');
 FLUSH PRIVILEGES;

또한 암호를 만료하려면 대신 다음 문을 사용합니다.

 SET old_passwords = 0;
 UPDATE mysql.user SET plugin = 'mysql_native_password'
 Password = PASSWORD ( ' DBA-chosen-password ') password_expired ='Y '
 WHERE (User, Host) = ( 'user1', 'localhost');
 FLUSH PRIVILEGES;

다음 DBA는 사용자에게 새 암호를 알려하여 암호를 사용하여 서버에 연결하여 새 암호를 선택하기 위해 다음 문을 실행하도록 사용자에게 요구하도록하십시오.

 SET old_passwords = 0;
 SET PASSWORD = PASSWORD ( ' user-chosen-password ');

업그레이드하는 계정마다 반복합니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved