Loading...
MySQL 9.5 Reference Manual 9.5의 8.2.5 Specifying Role Names의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL role 이름은 권한의 이름이 있는 집합인 role을 가리킵니다. role 사용 예시는 Section 8.2.10, “Using Roles”를 참조하십시오.
Role 이름은 계정 이름과 유사한 구문과 의미 체계를 가집니다. Section 8.2.4, “Specifying Account Names”를 참조하십시오. 권한 테이블에 저장될 때, role 이름은 계정 이름과 동일한 속성을 가지며, 이는 Grant Table Scope Column Properties에 설명되어 있습니다.
Role 이름은 다음과 같은 점에서 계정 이름과 다릅니다:
Role 이름의 user 부분은 비워 둘 수 없습니다. 따라서 “anonymous user” 개념에 상응하는 “anonymous role”은 존재하지 않습니다.
계정 이름과 마찬가지로, role 이름에서 host 부분을 생략하면 host 부분은 '%'가 됩니다. 그러나 계정 이름에서의 '%'와 달리, role 이름에서 host 부분이 '%'인 경우에는 와일드카드 속성이 없습니다. 예를 들어, role 이름으로 사용되는 'me'@'%'의 경우, host 부분('%')은 단지 리터럴 값일 뿐이며, “any host” 매칭 속성을 갖지 않습니다.
Role 이름의 host 부분에 있는 넷마스크 표기법은 아무런 의미가 없습니다.
여러 컨텍스트에서 계정 이름은 CURRENT_USER()가 될 수 있습니다. Role 이름은 그렇지 않습니다.
mysql.user 시스템 테이블의 한 row가 계정과 role 둘 다의 역할을 할 수 있습니다. 이 경우, 이름이 role 이름으로 사용되는 컨텍스트에서는 어떤 특수한 user 또는 host 이름 매칭 속성도 적용되지 않습니다. 예를 들어, 다음 구문을 실행해서 user 부분이 myrole이고 host 이름이 어떤 것이든 상관없는 모든 role을 사용하여 현재 세션 role을 설정할 수 있다고 기대할 수는 없습니다:
1SET ROLE 'myrole'@'%';
대신, 이 구문은 세션의 활성 role을 이름이 정확히 'myrole'@'%'인 role로 설정합니다.
이러한 이유로, role 이름은 종종 user name 부분만 명시하고 host name 부분은 암묵적으로 '%'가 되도록 지정합니다. '%'가 아닌 host 부분을 가진 role을 지정하는 것은, 주어진 host에서의 접속이 허용되는 사용자 계정이자 role로 모두 동작하는 이름을 만들고자 할 때 유용할 수 있습니다.
8.2.4 Specifying Account Names
8.2.6 Access Control, Stage 1: Connection Verification