DB

[MySQL] REVOKE 완벽 가이드 사용법(권한 제거)

인생아 2025. 1. 8. 14:25
반응형

MySQL REVOKE는 사용자의 권한을 제거하는 데 사용되는 SQL 명령어입니다. 이 명령어를 활용하면 불필요한 권한을 삭제하여 데이터베이스 보안을 강화할 수 있습니다. 특히, 시스템 관리자는 사용자 권한을 적절히 관리하여 민감한 데이터의 무단 접근을 방지하고, 데이터베이스를 안전하게 보호할 수 있습니다.

REVOKE의 주요 기능

  1. 특정 권한 제거
    사용자가 가지고 있는 특정 권한만 선택적으로 제거할 수 있습니다.
  2. 다양한 대상 적용
    데이터베이스, 테이블, 컬럼, 뷰 등 다양한 레벨에서 권한을 제거할 수 있습니다.
  3. 세부적인 제어 가능
    특정 호스트나 사용자 계정에 대해 정밀하게 권한을 제어할 수 있습니다.
  4. 보안 유지 강화
    불필요한 권한을 제거함으로써 시스템 보안을 유지할 수 있습니다.

REVOKE 기본 문법

REVOKE 권한목록 ON 대상 FROM '사용자'@'호스트';
  • 권한목록: 제거할 권한(예: SELECT, INSERT, UPDATE 등).
  • 대상: 권한을 제거할 데이터베이스나 테이블.
  • 사용자: 권한이 제거될 사용자 계정.
  • 호스트: 해당 계정이 접근 가능한 IP 또는 호스트 이름.
반응형

권한 제거의 실제 예제

전체 권한 제거
특정 데이터베이스에서 사용자의 모든 권한을 제거하려면 다음과 같이 작성합니다:

REVOKE ALL PRIVILEGES ON my_database.* FROM 'user1'@'localhost';

위 명령어는 user1my_database 데이터베이스에서 수행할 수 있는 모든 권한을 제거합니다.

특정 권한만 제거
특정 작업에 대한 권한만 제거하려면:

REVOKE SELECT, INSERT ON my_database.* FROM 'user2'@'192.168.1.100';

이 명령은 user2SELECTINSERT 작업을 수행할 수 없도록 설정합니다.

특정 테이블의 권한 제거

REVOKE UPDATE ON my_database.customers FROM 'user3'@'%';

이 명령어는 user3 사용자가 customers 테이블에서 UPDATE 권한을 잃게 만듭니다.

반응형

GRANT OPTION 권한 제거
사용자가 다른 사용자에게 권한을 부여하지 못하도록 하려면:

REVOKE GRANT OPTION ON my_database.* FROM 'admin_user'@'localhost';

이 명령어는 admin_user가 부여받은 권한을 다른 사용자에게 부여할 수 없도록 제한합니다.

REVOKE를 활용한 실제 사례

1. 읽기 전용 권한 제거
데이터베이스를 더 이상 읽을 필요가 없는 사용자에게서 권한을 제거합니다.sql

 
REVOKE SELECT ON company_db.* FROM 'reader_user'@'192.168.1.150';

2. 관리 권한 제거
관리자가 변경되었거나 보안 이유로 모든 권한을 제거해야 할 때:

REVOKE ALL PRIVILEGES ON *.* FROM 'admin_user'@'%';
반응형

3. 특정 호스트 접근 제한
한 사용자가 특정 호스트에서만 접근하도록 설정하기 위해 다른 호스트의 권한을 제거합니다:

REVOKE ALL PRIVILEGES ON my_database.* FROM 'user4'@'192.168.1.200';

SHOW GRANTS로 권한 확인하기
권한 제거 후, 해당 사용자가 어떤 권한을 보유하고 있는지 확인하려면 SHOW GRANTS를 사용합니다:

SHOW GRANTS FOR 'user2'@'192.168.1.100';

출력 예시:

+-----------------------------------------------------------+
| Grants for user2@192.168.1.100                            |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user2'@'192.168.1.100'             |
+-----------------------------------------------------------+

USAGE는 해당 계정이 현재 아무 권한도 가지고 있지 않음을 나타냅니다.

권한 제거와 보안의 관계
MySQL REVOKE 명령어를 통해 불필요한 권한을 정리하면 다음과 같은 보안 강화를 기대할 수 있습니다:

  • 데이터 유출 가능성을 감소시킴.
  • 민감한 데이터 접근을 제한함.
  • 비인가된 작업 수행 방지.

REVOKE 관련 추가 팁

  • 권한과 계정의 분리: REVOKE 명령은 권한만 제거하며, 계정을 삭제하지 않습니다. 계정을 삭제하려면 DROP USER를 사용해야 합니다.
  • 정기적인 권한 점검: SHOW GRANTS를 활용하여 주기적으로 권한을 검토하고, 불필요한 권한을 제거하는 것이 좋습니다.

공식 가이드 문서
MySQL REVOKE에 대한 공식 문서: https://dev.mysql.com/doc/refman/8.0/en/revoke.html

반응형