Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL REVOKE 문으로 사용자 권한 취소하는 방법

MySQL에서는 REVOKE 문을 사용하여 특정 사용자로부터 하나 이상의 권한 또는 모든 권한을 취소할 수 있습니다. REVOKE 문은 GRANT 문과 반대되는 기능을 하며, 데이터베이스 보안 관리에 필수적인 도구입니다.

REVOKE 문 기본 문법

REVOKE privilege_type [(column_list)]
    [, priv_type [(column_list)]]...
ON [object_type] privilege_level
FROM user [, user]...

문법 구성 요소 설명

첫째, REVOKE 키워드 바로 뒤에 사용자에게서 회수하려는 권한 목록을 지정합니다. 여러 개의 권한은 쉼표(,)로 구분합니다.

둘째, ON 절에 권한을 취소할 권한 수준(privilege level)을 지정합니다. 예를 들어 전체 데이터베이스(*.*), 특정 데이터베이스, 특정 테이블 등이 될 수 있습니다.

셋째, FROM 절에 권한을 회수할 사용자 계정을 지정합니다. 여러 사용자를 한 번에 지정할 수도 있습니다.

실제 예제

다음 예제에서는 abcd@localhost 사용자에게 부여된 권한을 확인하고 취소하는 과정을 살펴보겠습니다.

1단계: 현재 권한 확인

먼저 SHOW GRANTS 문으로 해당 사용자가 어떤 권한을 가지고 있는지 확인합니다.

mysql> SHOW GRANTS FOR abcd@localhost;
+---------------------------------------------------------------------+
| Grants for abcd@localhost                                             |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'abcd'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)

현재 이 사용자는 모든 데이터베이스(*.*)에 대한 모든 권한(ALL PRIVILEGES)과 함께 다른 사용자에게 권한을 부여할 수 있는 GRANT OPTION까지 가지고 있습니다.

2단계: 권한 취소 실행

다음 쿼리를 실행하면 abcd@localhost 사용자의 모든 권한과 GRANT OPTION이 취소됩니다.

mysql> REVOKE ALL PRIVILEGES,GRANT OPTION FROM abcd@localhost;
Query OK, 0 rows affected (0.00 sec)

3단계: 취소 결과 확인

mysql> SHOW GRANTS for abcd@localhost;
+------------------------------------------+
| Grants for abcd@localhost                |
+------------------------------------------+
| GRANT USAGE ON *.* TO 'abcd'@'localhost' |
+------------------------------------------+
1 row in set (0.00 sec)

권한 취소 후 결과를 보면 USAGE 권한만 남아 있는 것을 확인할 수 있습니다. USAGE는 실질적인 아무 권한도 없음을 의미하는 특수한 권한으로, 계정이 로그인만 가능하고 어떤 작업도 수행할 수 없는 상태입니다.

참고 사항

REVOKE를 실행하려면 자신이 부여했던 권한에 대한 GRANT OPTION이 있어야 합니다. 또한 권한 변경 사항은 즉시 적용되지만, 이미 연결 중인 세션에는 다음 로그인 시점부터 완전히 반영될 수 있습니다. 필요하다면 DROP USER 문으로 사용자 계정 자체를 삭제하는 것도 고려해 볼 수 있습니다.