MySQL에서 뷰 조회(SELECT) 권한만 부여하기
MySQL에서 특정 사용자에게 뷰(View)를 조회할 수 있는 권한만 부여하려면 GRANT SELECT 구문을 사용합니다. 기본 문법은 다음과 같습니다.
GRANT SELECT ON 데이터베이스명.뷰이름 TO '사용자명'@'호스트';
권한을 부여하기 전에 먼저 대상 뷰의 이름과 사용자 계정 정보를 확인해야 합니다. 아래 단계별로 살펴보겠습니다.
1단계: 데이터베이스의 모든 뷰 목록 확인
먼저 해당 데이터베이스에 존재하는 모든 뷰의 이름을 조회합니다. 다음 문법을 사용하세요.
SHOW FULL TABLES IN 데이터베이스명 WHERE TABLE_TYPE LIKE 'VIEW';
예를 들어 'test'라는 데이터베이스의 모든 뷰를 조회하는 쿼리는 다음과 같습니다.
mysql> SHOW FULL TABLES IN test WHERE TABLE_TYPE LIKE 'VIEW';
실행 결과는 아래와 같습니다.
+-------------------------------+------------+
| Tables_in_test | Table_type |
+-------------------------------+------------+
| empidandempname_view | VIEW |
| empinfoview | VIEW |
| lookuptable | VIEW |
| view_student | VIEW |
| viewemployeeidandemployeename | VIEW |
+-------------------------------+------------+
5 rows in set (0.00 sec)
2단계: 사용자명과 호스트 정보 확인
다음으로 mysql.user 테이블에서 등록된 모든 사용자명과 호스트를 조회합니다.
mysql> select user,host from mysql.user;
실행 결과는 다음과 같습니다.
+------------------+-----------+
| user | host |
+------------------+-----------+
| Manish | % |
| User2 | % |
| mysql.infoschema | % |
| mysql.session | % |
| mysql.sys | % |
| root | % |
| Adam Smith | localhost |
| User1 | localhost |
| am | localhost |
+------------------+-----------+
9 rows in set (0.00 sec)
3단계: 뷰 조회 권한 부여
이제 사용자명과 호스트를 지정하여 권한을 부여합니다. 여기서는 'test' 데이터베이스의 'viewemployeeidandemployeename' 뷰에 대한 SELECT 권한을 'Adam Smith'@'localhost' 사용자에게 부여해 보겠습니다.
mysql> GRANT SELECT ON test.viewemployeeidandemployeename TO 'Adam Smith'@'localhost';
Query OK, 0 rows affected (0.18 sec)
'Query OK' 메시지가 출력되면 권한 부여가 성공적으로 완료된 것입니다. 이후 해당 사용자는 이 뷰를 조회(SELECT)할 수 있지만, INSERT, UPDATE, DELETE와 같은 다른 작업은 수행할 수 없습니다. 필요하다면 REVOKE 구문으로 언제든 권한을 회수할 수도 있습니다.