MYSQL 에서 GRANT OPTION 권한이란?

MySQL에서 GRANT OPTION은 한마디로 “권한을 남에게 나눠줄 수 있는 권한”을 의미합니다. 단순히 데이터를 조작하는 권한을 받는 것을 넘어, 내가 가진 권한을 다른 사용자에게도 부여할 수 있는 ‘관리자급’ 특권입니다.


1. 주요 특징

  • 권한의 전파: 이 권한이 있는 사용자는 자신이 보유한 권한에 한해서 다른 계정에 권한을 부여(GRANT)하거나 회수(REVOKE)할 수 있습니다.
  • 범위의 제한: 자신이 가지고 있지 않은 권한을 남에게 줄 수는 없습니다. 예를 들어, 내가 SELECT 권한만 있다면 GRANT OPTION이 있어도 남에게 DELETE 권한을 줄 수는 없습니다.
  • 종속성: 관리자가 A에게 권한을 주면서 GRANT OPTION을 부여하고, A가 다시 B에게 권한을 주었을 때, 관리자가 A의 권한을 회수하면 B의 권한도 영향을 받을 수 있습니다 (시스템 설정에 따라 다름).

2. 사용 방법

보통 GRANT 문 끝에 WITH GRANT OPTION이라는 문구를 추가하여 부여합니다.

예시 시나리오:

관리자가 alice라는 사용자에게 sales 데이터베이스에 대한 모든 권한과 함께, 이를 남에게 나눠줄 수 있는 권한을 주려고 합니다.

SQL

이제 alice는 로그인 후 다음과 같은 명령어를 실행할 수 있게 됩니다.

SQL


3. 주의사항 (보안)

GRANT OPTION은 매우 강력하고 위험한 권한입니다.

  • 보안 리스크: 이 권한을 가진 사용자가 실수하거나 악의를 품으면, 관리자의 통제를 벗어나 여러 계정에 권한을 남발할 수 있습니다.
  • 최소 권한의 원칙: 꼭 필요한 중간 관리자나 DB 담당자가 아니라면 일반 사용자에게는 절대 부여하지 않는 것이 원칙입니다.
  • 회수 방법: 권한을 뺏을 때는 REVOKE를 사용합니다.SQLREVOKE GRANT OPTION ON sales.* FROM 'alice'@'localhost';

4. 요약 비교

구분일반 권한 (SELECT, INSERT 등)WITH GRANT OPTION 포함
데이터 조작가능가능
타인에게 권한 부여불가능가능
권한 회수(REVOKE)불가능가능
위험도낮음~중간매우 높음

쉽게 비유하자면, 일반 권한은 “도서관에서 책을 빌릴 수 있는 카드”이고, GRANT OPTION은 “다른 사람에게 도서관 대출 카드를 발급해 줄 수 있는 권한”이라고 보시면 됩니다.

오류 원인은 현재 로그인한 MySQL 계정에 GRANT OPTION 권한이 없기 때문입니다.

에러 핵심:

즉,

현재 사용자로는 auctionpro@% 사용자에게 권한을 부여할 권한 자체가 없습니다.

보통 다음 상황입니다:

  • 일반 관리자 계정 사용 중
  • root 가 아님
  • DBA 권한 부족
  • AWS RDS 등 제한 환경

해결 방법:

root 또는 충분한 권한 계정으로 접속 후 실행:

또는 필요한 권한만:

그리고: