MySQL GRANT는 사용자의 권한을 설정하거나 수정하는 데 사용되는 명령어입니다. 이 명령어는 데이터베이스 관리에서 필수적인 도구로, 사용자에게 특정 권한을 부여하거나 필요에 따라 세부적으로 제한할 수 있습니다. 이를 통해 데이터베이스 보안을 강화하고, 역할에 맞는 권한을 설정하여 효율적인 관리가 가능합니다.
GRANT의 주요 기능
- 권한 부여
특정 사용자에게 데이터베이스, 테이블, 뷰, 프로시저 등의 권한을 부여할 수 있습니다. - 세부적인 권한 설정
SELECT, INSERT, UPDATE, DELETE와 같은 작업에 대해 세부적인 설정이 가능합니다. - 호스트별 접근 제어
특정 IP나 호스트 이름을 지정하여 사용자 접근을 제한할 수 있습니다. - 관리 작업 간소화
복잡한 권한 설정을 단일 명령어로 간단히 처리할 수 있습니다.
GRANT 기본 문법
GRANT 권한목록 ON 대상 TO '사용자'@'호스트' [IDENTIFIED BY '비밀번호'] [WITH GRANT OPTION];
- 권한목록: 부여할 권한(예: SELECT, INSERT, UPDATE, DELETE 등).
- 대상: 권한을 적용할 데이터베이스나 테이블.
- 사용자: 권한을 부여받을 사용자 이름.
- 호스트: 사용자의 접근을 허용할 IP 또는 호스트 이름.
- IDENTIFIED BY: 사용자의 비밀번호 설정.
- WITH GRANT OPTION: 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 옵션.
권한 부여의 실제 예제
전체 권한 부여
특정 데이터베이스에 대한 모든 권한을 부여하려면 다음과 같이 작성합니다:
GRANT ALL PRIVILEGES ON my_database.* TO 'user1'@'localhost' IDENTIFIED BY 'password123';
위 명령어는 my_database 데이터베이스의 모든 권한을 user1 사용자에게 부여합니다.
특정 권한만 부여
특정 작업에 대한 권한만 부여하려면:
GRANT SELECT, INSERT ON my_database.* TO 'user2'@'192.168.1.100' IDENTIFIED BY 'securepassword';
이 경우, user2는 SELECT와 INSERT 작업만 수행할 수 있습니다.
특정 테이블에 권한 부여
데이터베이스 내 특정 테이블에 대해 권한을 부여하려면:
GRANT UPDATE ON my_database.customers TO 'user3'@'%';
위 명령은 customers 테이블에서만 UPDATE 권한을 부여합니다. IP 제한 없이 모든 호스트에서 접근 가능합니다.
GRANT OPTION 활용
사용자가 다른 사용자에게 권한을 부여할 수 있도록 하려면 WITH GRANT OPTION을 추가합니다:
GRANT ALL PRIVILEGES ON my_database.* TO 'admin_user'@'localhost' WITH GRANT OPTION;
이 명령은 admin_user가 부여받은 권한을 다른 사용자에게 부여할 수 있도록 합니다.
권한 확인 방법
권한이 제대로 설정되었는지 확인하려면 SHOW GRANTS 명령어를 사용합니다:
SHOW GRANTS FOR 'user1'@'localhost';
출력 예시:
+---------------------------------------------------------------------------------------------------+
| Grants for user1@localhost |
+---------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON `my_database`.* TO 'user1'@'localhost' IDENTIFIED BY PASSWORD '********' |
+---------------------------------------------------------------------------------------------------+
권한 제거 방법
만약 사용자의 권한을 제거하려면 REVOKE 명령어를 사용합니다. 예를 들어:
REVOKE SELECT, INSERT ON my_database.* FROM 'user2'@'192.168.1.100';
이 명령은 user2에게서 SELECT와 INSERT 권한을 제거합니다.
GRANT의 실제 활용 예시
다음은 회사의 역할에 따라 권한을 설정하는 예제입니다:
1. 읽기 전용 사용자의 권한 부여
GRANT SELECT ON company_db.* TO 'reader_user'@'192.168.1.150' IDENTIFIED BY 'readonlypass';
2. 전체 관리자 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'%' IDENTIFIED BY 'adminpass' WITH GRANT OPTION;
3. 특정 테이블 접근 권한 부여
GRANT INSERT, UPDATE ON sales_db.orders TO 'sales_user'@'localhost';
공식 가이드 문서
MySQL GRANT에 대한 공식 문서: https://dev.mysql.com/doc/refman/8.0/en/grant.html
'DB' 카테고리의 다른 글
[MySQL] DROP EVENT 완벽 가이드 사용법(이벤트 삭제) (0) | 2025.01.08 |
---|---|
[MySQL] ALTER EVENT 완벽 가이드 사용법(이벤트수정) (0) | 2025.01.08 |
[MySQL] CREATE EVENT 완벽 가이드 사용법(스케줄링) (0) | 2025.01.08 |
[MySQL] REVOKE 완벽 가이드 사용법(권한 제거) (0) | 2025.01.08 |
[MySQL] SHOW CREATE 완벽 가이드 사용법(객체 생성 스크립트 보기) (0) | 2025.01.08 |
[MySQL] SET FOREIGN_KEY_CHECKS 완벽 가이드 사용법(외래 키 제약 조건 활성/비활성) (0) | 2025.01.08 |
[MySQL] ALTER DATABASE 완벽 가이드 사용법(데이터베이스 설정 변경) (0) | 2025.01.08 |
[MySQL] CREATE TEMPORARY TABLE 완벽 가이드 사용법(임시테이블) (0) | 2025.01.08 |