베하. 엄팀입니다. 지난 포스팅은 즐거우셨나요?
이번 포스팅의 주제는 'MySQL CRUD 권한 설정'입니다.
MySQL은 세계에서 가장 많이 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이죠.
그럼 CRUD란 무엇인고 하니~
CRUD란 Create, Read, Update, Delete의 약자입니다.
생성하고, 읽고, 수정하고, 삭제하는 행위를 일컫는 단어이죠.
오늘은 이러한 CRUD 작업 권한을 MySQL의 User별로 설정하는 방법을 알아볼게요.
1. User 생성
우선 실습에 필요한 User 3개를 생성해보겠습니다.
create user [User명];
MySQL에서 User를 생성하기 위한 명령어입니다.
짜잔. 오늘 실습을 도와줄 강아지 럭키, 까미, 윰뚜입니다.
강아지들이 잘 왔는지 확인해볼게요.
use mysql;
해당 명령어를 실행하여 MySQL 생성시 자동으로 만들어지는 'mysql' 데이터베이스에 접근합니다.
select user form user;
select 명령어로 'user' Table의 'user' Field를 확인합니다.
생성된 User를 확인할 수 있습니다.
2. Database 생성
User를 생성하였으니, 실습에 필요한 Database를 생성해볼게요.
create database [Database명];
해당 명령어로 Database를 생성할 수 있습니다.
오늘 실습에 사용될 'doghouse' Database입니다.
해당 Database를 사용하기 위해 use 명령어로 접근해줄게요.
3. Table 생성 및 Field 입력
실습에 사용될 간단한 Table들을 생성합니다.
create table [Table명](Field명 FieldType, ...)
해당 명령어로 Table을 생성합니다.
'lucky_table', 'ggami_table', 'yumddoo_table' 이렇게 3개의 Table들을 생성하였습니다.
Primary Key는 'name' Field로 설정하였습니다.
Table이 잘 생성되었나 확인해볼까요?
describe [Table명];
해당 명령어로 Table의 구조를 간단하게 파악할 수 있습니다.
잘 생성되었네요!
이젠 생성된 Field에 데이터를 입력해줄 차례입니다.
insert into [Table명](Field명, ...) values(데이터값, ...)
해당 명령어로 지정된 Table의 Field에 데이터를 입력해줄 수 있습니다.
4. 권한 부여
이제 이번 포스팅에서 가장 중요한 권한 부여를 할 차례입니다.
grant [권한] on [Database명].[Table명] to [User명]@[Host명];
해당 명령어로 특정 User가 지정된 Database 및 Table에서 수행할 수 있는 권한을 지정할 수 있습니다.
여담으로, User 생성시 별도 Host 지정이 없을 경우, '%' Host로 지정됩니다.
설정해준 권한을 정리해보겠습니다.
lucky : 'doghouse' Database의 모든 Table(*)에 대한 모든 권한
ggami : 'doghouse' Database의 'ggami_table' Table에 대한 모든 권한
yumddoo : 'doghouse' Database의 'yumddo_table' Table에 대한 select 권한
럭키는 저희집 강아지니까 제일 많은 권한을 줬습니다.
이제 설정한 권한들을 적용해주겠습니다.
flush privileges;
해당 명령어로 grant로 설정한 권한들을 메모리에 반영해줍니다. 꼭 실행해주세요.
설정된 권한들을 확인해볼게요.
show grants for [User명]@[Host명];
해당 명렁어로 User에게 적용된 권한을 확인할 수 있습니다.
잘 적용되었습니다. 이제 마지막 단계로 넘어가봅시다.
5. 확인
이제 설정한 권한들이 잘 적용됐는지 확인해볼 시간입니다.
먼저 'lucky' User로 접속하여 확인해보겠습니다.
'lucky' User는 모든 Table들을 select 할 수 있었습니다. CRUD 권한 중의 Read 권한이죠.
'lucky_table' Table의 Field 또한 delete가 가능했습니다. CRUD 권한 중의 Delete 권한입니다.
다음은 'ggami' User의 권한 확인입니다.
'ggami' User에겐 'ggami_table' Table에 대한 모든 권한을 할당하였기에 'lucky_table'과 'yumddoo_table'의 select는 하지 못하는 모습입니다.
'ggami_table' Table의 Field는 delete가 가능한 결과를 확인할 수 있습니다.
마지막으로 'yumddoo' User의 권한 확인입니다.
'yumddoo' User에겐 'yumddoo_table' Table에 대한 select 권한만 할당하였기에 위와 같은 결과를 확인할 수 있었습니다.
select 권한만 할당하였기 때문에 delete 또한 하지 못하는 결과입니다.
오늘의 포스팅, 어떠셨나요.
오늘 배운 것은 MySQL을 사용할 시, 고객측 혹은 팀내에서 각각의 User에 대한 개별 권한 적용이 필요할 때 수행해야 하는 작업이었습니다.
포스팅을 마치고 보니 CRUD 권한 중 Read와 Delete만 확인을 했었는데, Create와 Update까지 확인하였다면 더 좋은 포스팅이 되었을 것 같아 아쉽네요.
오늘 고생한 강아지들에게 뜨거운 갈채를 부탁드리며 오늘의 포스팅은 마무리하도록 하겠습니다.
베빠!
'Database' 카테고리의 다른 글
[SQL] MySQL Window 함수 rank() over 대체하기 (0) | 2023.05.25 |
---|---|
SQLyog 데이터(csv) 가져오기 (0) | 2023.05.24 |
Airflow Executor (0) | 2023.05.23 |
Airflow Operator와 Task (0) | 2023.05.19 |
[SQL] 쿼리 사용시 주의사항 (0) | 2023.05.19 |
댓글