카테고리 없음
MySQL - 사용자가 특정 테이블에만 접근할 수 있도록 설정
phin09
2025. 7. 12. 21:18
분산 시스템 개발을 하다보면 여러 서버가 동일한 DB를 공유하는 상태로 만들 수도 있습니다.
설계에 따라 여러 서버가 각각의 목적에 따라 동일한 DB의 일부 테이블을 조회하거나 데이터를 수정할 수 있는데요,
필요한 정보만 사용할 수 있게끔 서버에 부여한 DB 계정에 권한 설정을 해둘 수 있습니다.
mysql> create table table01 (id int unsigned primary key, name varchar(20));
mysql> create table table02 (id int unsigned primary key, classroom varchar(10))
mysql> show tables;
+---------------------+
| Tables_in_common_db |
+---------------------+
| table01 |
| table02 |
+---------------------+
2 rows in set (0.00 sec)
시스템 계정으로 접속한 상태에서 샘플 테이블을 만들고
mysql> create user 'user01'@'%'
-> require none
-> account unlock;
이렇게 극악무도하게 날림으로 만든 사용자를 대상으로 (따라했다면 끝나고 삭제)
table01 조회만 가능한 상태로 설정하면
mysql> grant select on common_db.table01 to 'user01'@'%';
user01로 접속한 상태에서는
mysql> show tables;
+---------------------+
| Tables_in_common_db |
+---------------------+
| table01 |
+---------------------+
1 row in set (0.00 sec)
mysql> insert into table01 (id, name) values (1, kim);
ERROR 1142 (42000): INSERT command denied to user 'user01'@'localhost' for table 'table01'
mysql> show grants;
+-------------------------------------------------------+
| Grants for user01@% |
+-------------------------------------------------------+
| GRANT USAGE ON *.* TO `user01`@`%` |
| GRANT SELECT ON `common_db`.`table01` TO `user01`@`%` |
+-------------------------------------------------------+
2 rows in set (0.00 sec)
이런식으로 table01에 대해 주어진 권한 한정으로만 사용할 수 있습니다.