본문 바로가기

MySQL

MySQL 사용자 생성 후 권한 부여 및 권한취소

mysql 등 각종 DBMS 에서는 사용자 계정을 만들고 그 계정에 권한을 부여 하여 사용해야 한다. 

물론 게으린 DBA는 root 계정이나 시스템 계정을 사용하기도 하나 이것은 절대로 권장하지 않는다. (한때 MS-SQL 에서 SA 계정에 암호를 넣지 않아 많은 문제가 있었다. )

MS-SQL 등 상용 DBMS의 책들을 보면 사용자 계정생성과 권한부여 및 취소에 무척 많은 내용을 할당하고 있는 걸 보면 중요한 내용임에 틀림없다.


아래 내용을 통해 사용자 계정과 그 권한 부여 및 취소에 대해 알아 본다. 


■ 사용자 생성 및 권한 부여

 

사용자 생성은 UPDATE 문으로도 할 수 있다. 그러나 GRANT 문을 사용하면 더 편리하다.

 

GRANT [부여할 권한] ON [대상DB명] to [사용자명] identified by '비밀번호'

 

▷ test 데이타베이스에 sysop 란 사용자에 모든 권한을 부여한다.

 

- 권한 부여 하기

 

GRANT all privileges ON test.* to sysop@"localhost" identified by '비밀번호' ;

 

- 권한 부여 확인 하기

 

mysql -E -u사용자계정 -p

use mysql ;

select * from user where user = 'sysop' ; 

 

※ mysql -E 로 접속하는 이유는 쿼리결과를 세로로 보기 위해서 임.

 

SHOW GRANTS FOR '사용자계정'@'%' ; 


※ SHOW GRANTS FOR 를 이용해 사용자계정에 대한 권한을 볼 수 있다.  


▷ test 데이타베이스에 admin 이라는 계정을 만들고 select, insert,update, delete, create, drop 권한 부여

 

GRANT select,insert,update,delete,create,drop ON test.* to admin@"localhost" identified by '비번' ;

 

※ GRANT 권한

 GRANT 권한

 설명

 ALL

 모든 권한 부여

 ALTER

 ALTER TABLE 사용 허락

 CREATE

 CREATE TABLE 허락

 CREATE TEMPORARY TABLES

 CREATE TEMPORARY TABLES 허락

 SELECT, DELETE, UPDATE, DROP

 조회,수정,삭제 권한 허락

 EXCUTE

 

 FILE

 SELECT.. INTO OUTFILE

 LOAD DATA INFILE 사용 허락

 INDEX

 CREATE INDEX , DROP INDEX 허락

 LOCK TABLES

 SELECT 권한있을 때 LOCK TABLES 허락

 PROCESS  SHOW FULL PROCESSLIST 허락
 SHUTDOWN   SHUTDOWN 허락
 SHOW DATABASES  SHOW DATABASES 허락
 RELOAD

 FLUSH 허락

 

 

■ 사용자 권한 취소

 

REVOKE 는 부여된 권한을 취소한다.

 

REVOKE [취소할권한] ON [대상명] FROM [사용자명] ;

 

▷ test 데이타베이스의 sysop 계정에 대해 부여된 모든 권한을 취소한다.

 

REVOKE ALL ON test.* FROM sysop@localhost ;

 

 

■ 권한 변경 적용하기

 

권한을 부여 한 후 FLUSH PRIVILEGES ; 명령어를 어떨 때 사용해야 하는지 헛갈리곤 한다.

 

▷ INSERT, UPDATE 를 이용해서 권한을 부여한 경우

    → FLUSH PRIVILEGES ; 사용해야 권한 적용 됨.

 

▷ GRANT, REVOKE, SET PASSWORD 사용한 경우

    → 즉시 권한 부여 됨.