๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‡ฉ๐Ÿ‡ฆ๐Ÿ‡น๐Ÿ‡ฆ๐Ÿ‡ง๐Ÿ‡ฆ๐Ÿ‡ธ๐Ÿ‡ช

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ๋ณด์•ˆ, ๊ถŒํ•œ ๋ถ€์—ฌ grant, revoke, role

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ–์ง€ ๋ชปํ•œ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•  ์˜๋ฌด๊ฐ€ ์žˆ์Œ

DBMS์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆ

- ํ—ˆ๊ฐ€๋ฐ›์ง€ ์•Š์€ ์‚ฌ์šฉ์ž, ์ฆ‰ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ์„ ์‚ฌ์ „์— ์ฐจ๋‹จ

โ€‹

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ์˜ ์‚ฌ์šฉ ๊ถŒํ•œ

โœ” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ํŠน์ • ๊ฐ์ฒด์— ๋Œ€ํ•ด ํŠน์ • ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒ๋ฆฌ

- ํŠน์ • ๊ฐ์ฒด : ํ…Œ์ด๋ธ”, ํ•„๋“œ, ๋ทฐ, ์ €์žฅ ํ”„๋กœ์‹œ์ € ๋“ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์„ฑ ์š”์†Œ

โ€‹

๊ถŒํ•œ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์˜ ์ข…๋ฅ˜

- ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ด€๋ จ ์—ฐ์‚ฐ (DML)

์˜ˆ) SQL์˜ select, insert, delete, update ๋“ฑ

- ์Šคํ‚ค๋งˆ ๊ด€๋ จ ์—ฐ์‚ฐ (DDL)

์˜ˆ) create table, alter table, drop table, create index ๋“ฑ

โ€‹

๊ถŒํ•œ์— ๋”ฐ๋ฅธ ์‚ฌ์šฉ์ž ๋ถ„๋ฅ˜

โ—ฝ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž(DBA)

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋ชจ๋“  ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ€์ง

- ๊ฐ์ฒด์— ๋Œ€ํ•œ ์—ฐ์‚ฐ, ๊ฐ์ฒด์˜ ์‚ญ์ œ์™€ ๋ณ€๊ฒฝ ํฌํ•จ

- ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•ด๋‹น ๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ํšŒ์ˆ˜ ๊ฐ€๋Šฅ

โ€‹

โ—ฝ ๊ฐ์ฒด ์†Œ์œ ์ž(owner)

- ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž

- ์ƒ์„ฑํ•œ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋ชจ๋“  ๊ถŒํ•œ์„ ์†Œ์œ 

- ํ•ด๋‹น ๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ถŒํ•œ์˜ ๋ถ€์—ฌ๋‚˜ ํšŒ์ˆ˜๋„ ํฌํ•จ

โ€‹

โ—ฝ ๊ธฐํƒ€ ์‚ฌ์šฉ์ž

- ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ผ์ฒด์˜ ์‚ฌ์šฉ๊ถŒํ•œ์ด ์—†์Œ

- ๋‹ค๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๋‚˜ ๊ฐ์ฒด ์†Œ์œ ์ž๋กœ๋ถ€ํ„ฐ ์ผ๋ถ€ ๋˜๋Š” ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ณ„๋„๋กœ ๋ถ€์—ฌ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ

โ€‹

๊ถŒํ•œ ๋ถ€์—ฌ์˜ ์˜ˆ

SQL์—์„œ์˜ ๊ถŒํ•œ ์ œ์–ด - GRANT

โœ” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ช…๋ น

ํ˜•์‹ : grant <๊ถŒํ•œ ๋ฆฌ์ŠคํŠธ> on <๊ฐ์ฒด๋ช…> to <์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ>

<๊ถŒํ•œ ๋ฆฌ์ŠคํŠธ> : select, insert, delete, update, references ์ค‘ ํ•œ ๊ฐœ ์ด์ƒ

<์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ> : ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›๋Š” ์‚ฌ์šฉ์ž๋“ค์˜ ๋ฆฌ์ŠคํŠธ

โ—ฝ <์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ>์—๊ฒŒ <๊ฐ์ฒด๋ช…>์— ๋Œ€ํ•œ <๊ถŒํ•œ ๋ฆฌ์ŠคํŠธ>๋ฅผ ์‹คํ–‰ํ•  ๊ถŒ๋ฆฌ๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค๋Š” ์˜๋ฏธ

โ€‹

์˜ˆ) ์‚ฌ์šฉ์ž kim์—๊ฒŒ student ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด select ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌ

grant select on student to kim

์˜ˆ) kim์—๊ฒŒ student ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ select์™€ delete ๊ถŒํ•œ์„ ๋™์‹œ์— ๋ถ€์—ฌ

grant select, delete on student to kim

references ๊ถŒํ•œ

- ํ…Œ์ด๋ธ”์„ ์™ธ๋ž˜ํ‚ค๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ

โœ” ๊ถŒํ•œ์ด ์—†์œผ๋ฉด kim์ด ์ƒ์„ฑํ•œ student ํ…Œ์ด๋ธ”์€ department ํ…Œ์ด๋ธ”์„ ์™ธ๋ž˜ํ‚ค๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์Œ

โ€‹

references ๊ถŒํ•œ ๋ถ€์—ฌ ์˜ˆ

grant references (dept_id) on department to kim

- dept_id๋Š” ํ…Œ์ด๋ธ” department์˜ ๊ธฐ๋ณธํ‚ค

- kim์€ department ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค๋ฅผ ํฌํ•จํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅ

โ€‹

๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌ

- <์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ>์— public ์‚ฌ์šฉ

โ€‹

์˜ˆ) student์— ๋Œ€ํ•ด ๋ชจ๋“  ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ select ๊ถŒํ•œ์„ ๋ถ€์—ฌ

grant select on student to public

๋ชจ๋“  ์ข…๋ฅ˜์˜ ๊ถŒํ•œ์„ ํ•˜๋‚˜์˜ ๋ช…๋ น์œผ๋กœ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

- all privileges๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ

โ€‹

์˜ˆ) student ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ถŒํ•œ์„ lee์—๊ฒŒ ๋ถ€์—ฌ

grant all privileges on student to lee

 

WITH GRANT OPTION

โœ” ๋ถ€์—ฌ๋ฐ›์€ ๊ถŒํ•œ์„ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „ํŒŒํ•  ์ˆ˜ ์žˆ๋Š” ํŠน๋ณ„ํ•œ ์˜ต์…˜

โ€‹

์˜ˆ) student ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ select ๊ถŒํ•œ์„ kim์—๊ฒŒ ๋ถ€์—ฌํ•จ๊ณผ ๋™์‹œ์— ์ด ๊ถŒํ•œ์„ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์‹œ ์ „ํŒŒํ•  ์ˆ˜ ์žˆ๋Š” ์ž๊ฒฉ๊นŒ์ง€ ๋ถ€์—ฌ

grant select on student to kim with grant option

 

REVOKE

โœ” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•œ ๊ถŒํ•œ์„ ํšŒ์ˆ˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น

ํ˜•์‹ : revoke <๊ถŒํ•œ๋ฆฌ์ŠคํŠธ> on <๊ฐ์ฒด๋ช…> from <์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ>

โ—ฝ <์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ>์— ์†ํ•œ ์‚ฌ์šฉ์ž๋“ค๋กœ๋ถ€ํ„ฐ <๊ฐ์ฒด๋ช…>์— ๋Œ€ํ•œ <๊ถŒํ•œ๋ฆฌ์ŠคํŠธ> ์—ฐ์‚ฐ๋“ค์˜ ์‹คํ–‰ ๊ถŒํ•œ์„ ํšŒ์ˆ˜

โ€‹

์˜ˆ) kim์—๊ฒŒ ๋ถ€์—ฌ๋˜์—ˆ๋˜ student ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ select ๊ถŒํ•œ์„ ํšŒ์ˆ˜

revoke select on student from kim

 

ROLE

- ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•  ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ๋‹ค๋ฉด, ๋ฐ˜๋ณต์ ์œผ๋กœ grant๋ฌธ์ด๋‚˜ revoke์„ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ, ๋‹จ์ˆœ ๋ฐ˜๋ณต ์ž‘์—…์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๊ถŒํ•œ๋ณ„๋กœ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์„ ๋งŒ๋“ค์–ด ๊ทธ๋ฃน์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”

โœ” ๊ถŒํ•œ์— ๋”ฐ๋ฅธ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน

โœ” ๋กค์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๋งŒ์ด ์ƒ์„ฑ ๊ฐ€๋Šฅ

ํ˜•์‹ : create role <๋กค์ด๋ฆ„>

โ€‹

์˜ˆ) ์‚ฌ์›๊ณผ ์ž„์›์— ๋Œ€ํ•œ ๋กค์„ ์ƒ์„ฑ

create role employee
create role manager

 

๋กค์— ์‚ฌ์šฉ์ž ๋ฐฐ์ •

ํ˜•์‹ : grant <๋กค๋ฆฌ์ŠคํŠธ> to <์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ>

โ€‹

์˜ˆ) ์‚ฌ์šฉ์ž lee์™€ kim์€ ์‚ฌ์›, chang๊ณผ choi๋Š” ์ž„์›์ผ ๊ฒฝ์šฐ

grant employee to lee, kim
grant manager to chang, choi

 

๋กค์— ๊ถŒํ•œ์„ ๋ถ€์—ฌ

grant๋ฌธ๊ณผ ํ˜•์‹์€ ๋™์ผ

โ€‹

์˜ˆ) employee์—๊ฒŒ๋Š” student ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด select ์—ฐ์‚ฐ ํ—ˆ์šฉํ•˜๊ณ , manager์—๊ฒŒ๋Š” select์™€ insert ์—ฐ์‚ฐ ํ—ˆ์šฉ

grant select on student to employee
grant select, insert on student to manager

 

๋กค์— ๋ถ€์—ฌ๋œ ๊ถŒํ•œ์„ ํšŒ์ˆ˜

revoke๋ฌธ๊ณผ ํ˜•์‹ ๋™์ผ

โ€‹

์˜ˆ) manager์—๊ฒŒ ๋ถ€์—ฌ๋œ insert ๊ถŒํ•œ์„ ํšŒ์ˆ˜

revoke insert on student from manager

 

๋ฐฐ์ •๋œ ๋กค์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ๋ฐฐ์ œ

ํ˜•์‹ : revoke <๋กค๋ฆฌ์ŠคํŠธ> from <์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ>

โ€‹

์˜ˆ) ์‚ฌ์šฉ์ž choi๋ฅผ manager๋กœ๋ถ€ํ„ฐ ๋ฐฐ์ œ

revoke manager from choi

 

๋กค ์‚ญ์ œ

ํ˜•์‹ : drop role <๋กค ์ด๋ฆ„>

โ€‹

๋ทฐ๋ฅผ ์ด์šฉํ•œ ๊ถŒํ•œ ์ œ์–ด

- ํŠน์ • ํ…Œ์ด๋ธ”์—์„œ ์ผ๋ถ€ ํ•„๋“œ ํ˜น์€ ์ผ๋ถ€ ๋ ˆ์ฝ”๋“œ๋“ค์— ๋Œ€ํ•ด์„œ๋งŒ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•  ๊ฒฝ์šฐ ์ด ๋ถ€๋ถ„๋“ค์„ ๋ทฐ๋กœ ์ •์˜

- ์ •์˜๋œ ๋ทฐ์— ๋Œ€ํ•ด ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ  ์‹ค์ œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ฐจ๋‹จ

- ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ์ถ”๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ์ˆ˜๋‹จ ์ œ๊ณต

- ํ•„๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ๋ถ€ ๋ ˆ์ฝ”๋“œ๋“ค์— ๋Œ€ํ•ด์„œ๋„ ์ ‘๊ทผ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅ

โ€‹