• 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 권한 시스템
    1. MySQL에서 제공되는 권한
    2. 권한 시스템 부여 테이블
    3. 계정 이름 지정
    4. 액세스 제어 1 단계 : 연결 확인
    5. 액세스 제어, 2 단계 : 요청 확인
    6. 권한 변경이 활성화되는시기
    7. 액세스 거부 오류의 원인
    3. 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.2.3 계정 이름 지정

MySQL 계정 이름은 사용자 이름과 호스트 이름으로 구성됩니다. 이렇게하면 다른 호스트에서 연결 가능한 동일한 이름을 가진 사용자를위한 계정을 만들 수 있습니다. 이 섹션에서는 특수한 값과 와일드 카드 규칙을 포함하여 계정 이름 작성 방법에 대해 설명합니다.

CREATE USER , GRANT , SET PASSWORD 등의 SQL 문은 다음 규칙을 사용하여 계정 이름을 작성하십시오.

  • 계정 이름의 구문은 ' user_name '@' host_name ' 입니다.

  • 사용자 이름만으로 구성된 계정 이름은 ' user_name '@'%' 와 동일합니다. 예를 들어, 'me' 는 'me'@'%' 와 동일합니다.

  • 사용자 이름 및 호스트 이름은 그들이 인용되지 않은 식별자로 사용하는 경우 인용 할 필요는 없습니다. 따옴표가 필요한 것은 user_name 문자열이 특수 문자 ( " - ")를 포함하고, host_name 문자열이 특수 문자 또는 와일드 카드 문자 ( " % ")를 포함 할 경우, 예를 들어 'test-user'@'%.com' 과 같이됩니다.

  • 사용자 이름 및 호스트 이름은 역 따옴표 ( " ` "), 작은 따옴표 ( ' ' ') 또는 큰 따옴표 ( " " ") 중 하나를 사용하여 식별자 또는 문자열로 인용 부호로 묶습니다.

  • 사용자 이름 및 호스트 이름 부분을 인용하는 경우 별도로 묶어야합니다. 즉, 'me'@'localhost' 라고 기술하고 'me@localhost' 는 설명하지 않습니다. 후자는 'me@localhost'@'%' 로 해석됩니다.

  • CURRENT_USER 또는 CURRENT_USER() 함수에 대한 참조는 현재 클라이언트 사용자 이름 및 호스트 이름의 문자를 지정하는 것과 같습니다.

MySQL은 mysql 데이터베이스의 부여 테이블에 계정 이름을 저장할 때 사용자 이름과 호스트 이름 부분에 별도의 컬럼을 사용합니다.

  • user 테이블에 계정마다 1 행이 포함됩니다. User 와 Host 컬럼은 사용자 이름과 호스트 이름을 포함합니다. 이 테이블에 계정이있는 글로벌 권한도 지정됩니다.

  • 더많은 부여 테이블에는 데이터베이스 및 데이터베이스 오브젝트에 대한 계정이 가지는 권한이 표시됩니다. 이 테이블에는 계정 이름을 저장하기위한 User 및 Host 컬럼이 있습니다. 이 테이블의 각 행은 동일한 User 와 Host 값을 가진 user 테이블의 계정에 연결되어 있습니다.

부여 테이블 구조에 대한 추가 자세한 내용은 섹션 6.2.2 "권한 시스템 부여 테이블" 을 참조하십시오.

사용자 이름 및 호스트 이름은 다음과 같은 특수한 값을 사용하거나 와일드 카드 규칙이 적용되기도합니다.

사용자 이름은 입 접속을 시도하는 사용자 이름과 문자가 일치하는 공백이 아닌 값이거나 모든 사용자 이름과 일치하는 빈 값 (빈 문자열)입니다. 공백의 사용자 이름을 가진 계정은 익명 사용자입니다. SQL 문에서 익명 사용자를 지정하려면 ''@'localhost' 처럼 따옴표로 둘러싼 빈 사용자 이름 부분을 사용합니다.

계정 이름의 호스트 이름 부분은 다양한 형태를 가질 수 와일드 카드가 허용됩니다.

  • 호스트 값은 호스트 이름 또는 IP 주소 (IPv4 또는 IPv6) 할 수 있습니다. 'localhost' 라는 이름은 로컬 호스트를 나타냅니다. IP 주소 '127.0.0.1' 는 IPv4 루프백 인터페이스를 나타냅니다. IP 주소 '::1' 은 IPv6 루프백 인터페이스를 나타냅니다.

  • 와일드 카드 문자 ' % '및' _ '을 호스트 이름 또는 IP 주소 값으로 사용할 수 있습니다. 이들은 LIKE 연산자에서 실행되는 패턴 매칭 연산과 같은 의미를가집니다. 예를 들어, 호스트 값 '%' 는 모든 호스트 이름과 일치하고 '%.mysql.com' 값은 mysql.com 도메인의 모든 호스트에 일치하고 '192.168.1.%' 는 192.168.1의 클래스 C 네트워크의 모든 호스트와 일치합니다.

    IP 와일드 카드 값을 호스트 값에 사용할 수 있기 때문에 (서브넷의 모든 호스트에 일치하는 '192.168.1.%' 등) 일부 사용자가 호스트 192.168.1.somewhere.com 을 지정하여 이 기능을 악용하려고 할 수 있습니다. 이러한 시도를 저지하기 위해 MySQL에서는 숫자와 점으로 시작하는 호스트 이름과 일치가 허용되지 않습니다. 따라서 1.2.example.com 같은 이름을 가지는 호스트가있는 경우, 그 이름은 계정 이름의 호스트 부분과 결코 일치하지 않습니다. IP 와일드 카드 값은 호스트 이름 대신 IP 주소 만 일치 할 수 있습니다.

  • IPv4 주소에 지정된 호스트 값에 대해 네트워크 번호에 사용하는 주소 비트의 수를 나타내는 넷 마스크를 지정할 수 있습니다. 넷 마스크 표기는 IPv6 주소는 사용할 수 없습니다.

    구문은 host_ip / netmask 입니다. 예 :

     CREATE USER 'david'@'192.58.197.0/255.255.255.0';
    

    이는 david 는 다음 조건이 true가되는 IP 주소 client_ip 을 가진 모든 클라이언트 호스트에서 연결할 수 있습니다.

     client_ip & netmask = host_ip
    

    즉, 다음과 같은 CREATE USER 문이 있다고합니다.

     client_ip & 255.255.255.0 = 192.58.197.0
    

    이 조건을 충족 MySQL 서버에 접속할 수있는 IP 주소는 192.58.197.0 에서 192.58.197.255 까지의 범위의 것입니다.

    넷 마스크는 8,16,24 또는 32 비트 주소를 사용하도록 서버에 지시하는 경우에만 사용할 수 있습니다. 예 :

    • 192.0.0.0/255.0.0.0 : 192 클래스 A 네트워크의 모든 호스트

    • 192.168.0.0/255.255.0.0 : 192.168 클래스 B 네트워크의 모든 호스트

    • 192.168.1.0/255.255.255.0 : 192.168.1 클래스 C 네트워크의 모든 호스트

    • 192.168.1.1 :이 특정 IP 주소를 가진 호스트 만

    다음 넷 마스크는 28 비트를 마스크하지만 28은 8의 배수가 없기 때문에 작동하지 않습니다.

     192.168.0.1/255.255.255.240
    

서버는 클라이언트 호스트 이름 또는 IP 주소의 시스템 DNS 확인자에 의해 반환 된 값을 사용하여 계정 이름의 호스트 값의 일치를 클라이언트 호스트에서 실행합니다. 계정 호스트 값이 넷 마스크 기법을 사용하여 지정되는 경우를 제외하고,이 비교는 IP 주소로 지정되는 계정 호스트 값도 문자열의 물건 맞추기로 실행됩니다. 즉, DNS에서 사용되는 것과 같은 형식으로 계정 호스트 값을 지정해야한다는 것을 의미합니다. 명심해야 문제의 예를 보여줍니다.

  • 로컬 네트워크에있는 호스트의 정규화 된 이름이 host1.example.com 이라고합니다. DNS가이 호스트 이름 참조를 host1.example.com 로 반환하는 경우 계정 호스트 값이 이름을 사용합니다. 그러나 DNS가 host1 만 돌려주는 경우, 대신 host1 을 사용합니다.

  • DNS가 특정 호스트의 IP 주소로 192.168.1.2 을 돌려주는 경우, 이것은 계정 호스트 값 192.168.1.2 와 일치하지만 192.168.01.2 과 일치하지 않습니다. 마찬가지로, 이것은 192.168.1.% 같은 계정 호스트 패턴에 일치하지만 192.168.01.% 일치하지 않습니다.

이러한 문제를 피하기 위해 DNS 호스트 이름과 주소를 반환 할 때 형식을 확인하고 같은 형식의 값을 MySQL 계정 이름에 사용하도록하는 것이 좋습니다.

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