• 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에서 사용 가능한 인증 플러그인
    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.5 계정 암호 지정

MySQL 서버에 연결하는 클라이언트에 필요한 인증서 암호를 포함 할 수 있습니다. 이 섹션에서는 MySQL 계정에 암호를 할당하는 방법에 대해 설명합니다. 클라이언트 인증 플러그인을 사용하여 발생합니다. 섹션 6.3.7 "플러그 인증" 을 참조하십시오.

CREATE USER 를 사용하여 새 계정을 만들 때 암호를 지정하려면 IDENTIFIED BY 절을 포함합니다.

 mysql> CREATE USER 'jeffrey'@'localhost'
     -> IDENTIFIED BY 'mypass';

기존 계정에 암호를 할당 방법 또는 그것을 변경하는 방법의 하나는 SET PASSWORD 명령문을 발행하는 것입니다.

 mysql> SET PASSWORD FOR
     -> 'jeffrey'@'localhost' = PASSWORD('mypass');

MySQL에서는 mysql 데이터베이스의 user 테이블에 패스워드가 저장됩니다. mysql 데이터베이스에 대한 UPDATE 권한을 가지고 root 등의 사용자 만 다른 사용자의 암호를 변경할 수 있습니다. 익명 사용자로 연결하지 않은 경우 FOR 절을 생략하면 자신의 암호를 변경할 수 있습니다.

 mysql> SET PASSWORD = PASSWORD('mypass');

old_passwords 시스템 변수의 값은 PASSWORD() 에서 사용되는 해시 방식이 결정됩니다. 함수를 사용하여 암호를 지정해도, SET PASSWORD 에서 암호의 형식이 올바르지 않은으로 거부되는 경우 old_passwords 를 설정하고 해시 방식을 변경해야하는 경우도 있습니다. 허용되는 값은 섹션 5.1.4 "서버 시스템 변수" 를 참조하십시오.

read_only 시스템 변수를 사용하면 SUPER 권한을 가지고 있지 않은 사용자에 의한 SET PASSWORD 명령문의 사용을 피할 수 있습니다.

또한 글로벌 수준 ( ON *.* )에서 GRANT USAGE 명령문을 사용하면 계정의 현재 권한에 영향을주지 않고 계정에 암호를 지정할 수 있습니다.

 mysql> GRANT USAGE ON *.* TO 'jeffrey'@'localhost'
     -> IDENTIFIED BY 'mypass';

명령 행에서 암호를 지정하려면, mysqladmin 명령을 사용합니다.

 shell> mysqladmin -u user_name -h host_name password " newpwd "

이 명령에 암호가 설정되는 계정은 User 컬럼에있는 user_name 과 일치하는 user 테이블 행을 가진 계정 및 Host 컬럼에 연결하는 클라이언트 호스트입니다.

인증 중에 클라이언트가 서버에 연결하면 MySQL에서는 user 테이블의 비밀번호가 암호화 된 해시 값 ( PASSWORD() 에서 암호에 반환되는 값)로 처리됩니다. 계정에 암호를 할당 할 때는 일반 텍스트 암호 대신 암호화 된 값을 저장하는 것이 중요합니다. 다음 지침을 사용합니다.

  • CREATE USER , IDENTIFIED BY 절을 포함한 GRANT 또는 mysqladmin password 명령을 사용하여 암호를 지정하면 자동으로 암호가 암호화됩니다. 리터럴 평문 암호를 지정합니다.

     mysql> CREATE USER 'jeffrey'@'localhost'
         -> IDENTIFIED BY 'mypass';
    
  • CREATE USER 또는 GRANT 는 PASSWORD() 에서 암호에 반환되는 해시 값을 알고있는 경우에 일반 텍스트 암호 전송을 방지 할 수 있습니다. 전에 키워드 PASSWORD 를 붙인 해시 값을 지정합니다.

     mysql> CREATE USER 'jeffrey'@'localhost'
         -> IDENTIFIED BY PASSWORD '*90E462C37378CED12064BB3388827D2BA3A9B689';
    
  • SET PASSWORD 를 사용하여 계정에 비어 있지 않은 암호를 지정할 경우, PASSWORD() 기능을 사용하여 암호를 암호화해야합니다. 그렇지 않으면 암호가 평문으로 저장됩니다. 다음과 같은 암호를 할당한다고 가정합니다.

     mysql> SET PASSWORD FOR
         -> 'jeffrey'@'localhost' = 'mypass';
    

    그 결과 암호화 된 값이 아닌 리터럴 값 'mypass' 가 암호로 user 테이블에 저장됩니다. jeffrey 가이 암호를 사용하여 서버에 연결을 시도하면 그 값이 암호화되고 user 테이블에 저장된 값과 비교됩니다. 그러나 저장되는 값은 리터럴 문자열 'mypass' 이기 때문에 비교에 실패하고 서버는 엑세스 거부 라는 오류를 반환합니다.

참고

PASSWORD() 암호화는 Unix 암호 암호화는 다릅니다. 섹션 6.3.1 "사용자 이름과 암호" 를 참조하십시오.

SET PASSWORD , GRANT 또는 mysqladmin을 사용하여 암호를 지정하는 것이 바람직하지만, user 테이블을 직접 수정할 수 있습니다. 이 경우, FLUSH PRIVILEGES 를 사용하여 서버에서 부여 테이블을 다시로드시킬 필요도 있습니다. 그렇지 않으면 서버를 다시 시작할 때까지 변경이 인식되지 않은 상태입니다.


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