본문 바로가기
MySQL Admin Guide/MySQL Ver.5.1 Admin Guide

5장 ACCOUNT , 권한 관리 (2) GRANT 하기

by 모모레 2009. 4. 22.

1. GRANT
앞에서도 설명한 것처럼 CREATE USER를 통해 계정을 생성하면 그 계정은 MySQL에 접근할 권한 밖에 가지고 있지 않기 때문에 어떤 작업도 할 수가 없다. 그러면, 먼가 작업을 하도록 하려면 어떻게 해야 하는가?? 바로 계정에 권한을 부여해야 한다. 그럼 이제는 권한을 부여하는 방법을 알아보도록 하자.

2. 계정에 권한 부여하기
계정에 권한을 부여하기 위해 GRANT 구문을 사용한다. GRANT 구문은 다음과 같이 사용이 가능하다.

GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user [IDENTIFIED BY [PASSWORD] 'password']
        [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
    [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
    [WITH with_option [with_option] ...]

object_type:
    TABLE
  | FUNCTION
  | PROCEDURE

priv_level:
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name

with_option:
    GRANT OPTION
  | MAX_QUERIES_PER_HOUR count
  | MAX_UPDATES_PER_HOUR count
  | MAX_CONNECTIONS_PER_HOUR count
  | MAX_USER_CONNECTIONS count

ssl_option:
    SSL
  | X509
  | CIPHER 'cipher'
  | ISSUER 'issuer'
  | SUBJECT 'subject'

굉장히 복잡해 보이지만 하나 하나 따져보면 그리 복잡하지 않다. grant는 결국 다음을 뜻한다.

구문 grant all on *.* to 'root'@'localhost' identified by 'aaa' with grant option
localhost에서 root라는 user를 사용하는 계정에 대해 전체 오브젝트에 대해서 모든 권한을 주는데 패스워드는 aaa로 설정하고 다른 계정에 권한을 줄수있는 권한까지 포함시키도록 한다.

위의 예제는 계정에 모든 권한을 주는 grant문으로서 설치시 생성되는 'root'@'localhost' 계정에 대한 내용에 패스워드 부분만 추가한 것이다. 위 처럼 Grant문을 실행하게 되면 Admin용 계정으로 사용할 수 있게 된다.

3. 예제를 통한 Grant 실습하기
그러면 이제 여러가지 예제를 통해 Grant 구문을 공부해 보도록 하자.

구문 grant select, insert, update, delete on bbs.* to 'jeff'@'123.2.3.4'
123.2.3.4 서버에서 jeff user로 접근하는 계정에 대해 bbs 데이터베이스의 모든 오브젝트에 대해 select, insert, update, delete할 수 있게 권한을 부여한다.
구문 grant select, insert, update, delete on bbs.* to 'jeff'@'123.2.3.4'
123.2.3.4 서버에서 jeff user로 접근하는 계정에 대해 bbs 데이터베이스의 모든 오브젝트에 대해 select, insert, update, delete할 수 있게 권한을 부여한다.
구문 grant select, insert on bbs.tb1 to 'jeff'@'testdb'
testdb 서버에서 jeff user로 접근하는 계정에 대해 bbs 데이터베이스의 tb1 테이블에 대해 select, insert 할 수 있게 권한을 부여한다.
구문 grant create routine, execute, alter routine on bbs.* to 'mary'@'testdb'
testdb 서버에서 mary user로 접근하는 계정에 대해 bbs 데이터베이스에 stored routine을 생성하고 삭제하고 alter할 수 있는 작업을 할 수 있고, stored routine을 실행할  수 있게 권한을 부여한다.
구문 grant select on bbs.* to 'jeff'@'192.168.%'
192.168로 시작하는 서버에서 jeff user로 접근하는 계정에 대해 bbs 데이터베이스의 모든 오브젝트에 대해  select할 수 있게 권한을 부여한다.