제품 여행

CUBRID GRANT ALL TABLES

by 윤준수 posted Jun 25, 2019

CUBRID GRANT....

큐브리드에서는 GRANT ... ON ALL TABLES 구문을 아쉽게도 제공 하지 않습니다.

현재는 수동으로 GRANT 구문을 작성하여, 사용하여야 합니다. 

"이러한 불편함을 자동으로 작성해주면 어떨까" 라는 생각으로 스크립트를 작성하였습니다.

 

HOW to do GRANT ... ON ALL TABLES .....?

$ sh cub_grant.sh

--------------------------------------------------------------------------------------------------------

CUBRID DBMS, auto-generator for grant all tables
usage : 
                sh cub_grant.sh <dbname> <grantee user> <grantor user> <grantor user password> <option>

        <option>
                -view : grantee user all grant view
                -dml : default SELECT, DELETE, UPDATE, INSERT
                -ddl : default ALTER, INDEX, EXECUTE
                -all : ALL PRIVILEGES(dml+ddl)

        <file creation info>
                default path : .
                -dml : ./GRANT_DML.sql
                -ddl : ./GRANT_DDL.sql
                -all : ./GRANT_ALL.sql

--------------------------------------------------------------------------------------------------------

 

1. Linux 환경에서만 사용 가능합니다.
2. bash 스크립트로 작성 되었습니다.

3. CUBRID 엔진 소유 계정으로 위치에 상관 없이 (rwx 권한 필요) 수행이 가능 합니다.


사용 방법 : sh cub_grant.sh

             - <dbname> : 사용하고자 하는 데이터 베이스 명

             - <grantee user> : 권한을 부여할 유저명

             - <grantor user> : 부여할 권한의 오너 유저명

             - <grantor user password> : 부여할 권한의 오너 유저의 암호
 

     <option>

             -view : grantee user의 권한 정보 확인

             -dml : grantor user의 모든 테이블의 DML GRANT 생성

             -ddl : grantor user의 모든 테이블의 DDL GRANT 생성

             -all : grantor user의 모든 테이블의 ALL PRIVILEGES (DML+DDL) GRANT 생성

 

       생성 되는 파일 : 생성 위치는 스크립트 수행 디렉토리

             -dml : GRANT_DML.sql

             -ddl : GRANT_DDL.sql

             -all : GRANT_ALL.sql

 

 

$ cat cub_grant.sh |more

--------------------------------------------------------------------------------------------------------

  1 #!/bin/bash
  2 ## encoding : utf-8
  3 ## Create by, CUBRID INC
  4 
  5 ## User Configuration Parameters
  6 FILE_PATH="."
  7 GRANT_DML="SELECT, DELETE, UPDATE, INSERT"
  8 GRANT_DDL="ALTER, INDEX, EXECUTE"
  9 GRANT_ALL="ALL PRIVILEGES"
 10 ##
 11 
 12 
 13 ## Tool Configuration Parameters
 14 DB_NM=$1
 15 GRANTEE_USER=$2
 16 GRANTOR_USER=$3
 17 GRANTOR_USER_PSW=$4
 18 GRANT_OPTION=$5
 19 ##

--------------------------------------------------------------------------------------------------------

 

1. 스크립트 상단의 User Configuration Parameters를 수정하여, 원하는데로 수정이 가능 합니다.

             - FILE_PATH : GRANT 파일이 생성 되는 기본 경로를 변경할 수 있스빈다.

             - GRANT_DML : DML 중 일부만 필요하다면, "SELECT, INSERT" 와 같이 수정이 가능 합니다.

             - GRANT_DDL : DDL 중 일부만 필요하다면, "ALTER,INDEX" 와 같이 수정이 가능 합니다.

             - GRANT_ALL : 변경할 필요 없음

 

 

$ ls -rlth

--------------------------------------------------------------------------------------------------------
합계 20K
-rw-rw-r-- 1 cubrid cubrid  341  6월 25 13:45 GRANT_ALL.sql
-rw-rw-r-- 1 cubrid cubrid  469  6월 25 13:45 GRANT_DML.sql
-rw-rw-r-- 1 cubrid cubrid  397  6월 25 13:45 GRANT_DDL.sql
-rw-rw-r-- 1 cubrid cubrid 7.5K  6월 25 13:48 cub_grant.sh

-------------------------------------------------------------------------------------------------------

< 옵션에 따라 위와 같이 파일이 생성 됩니다. >

1. GRANT_DML.sql

                 GRANT SELECT, DELETE, UPDATE, INSERT ON  tbl1   TO  DBA ;

                 GRANT SELECT, DELETE, UPDATE, INSERT ON  tbl2   TO  DBA ;

                 GRANT SELECT, DELETE, UPDATE, INSERT ON  [data]  TO  DBA ;
                 GRANT SELECT, DELETE, UPDATE, INSERT ON  [add]  TO  DBA ;
                 GRANT SELECT, DELETE, UPDATE, INSERT ON  [primary]  TO  DBA ;
 

2. GRANT_DDL.sql
                 GRANT ALTER, INDEX, EXECUTE ON  tbl1   TO  DBA ;
                 GRANT ALTER, INDEX, EXECUTE ON  tbl2   TO  DBA ;
                 GRANT ALTER, INDEX, EXECUTE ON  [data]  TO  DBA ;
                 GRANT ALTER, INDEX, EXECUTE ON  [add]  TO  DBA ;
                 GRANT ALTER, INDEX, EXECUTE ON  [primary]  TO  DBA ;
 

3. GRANT_ALL.sql
                 GRANT ALL PRIVILEGES ON  tbl1   TO  DBA ;
                 GRANT ALL PRIVILEGES ON  tbl2   TO  DBA ;
                 GRANT ALL PRIVILEGES ON  [data]  TO  DBA ;
                 GRANT ALL PRIVILEGES ON  [add]  TO  DBA ;
                 GRANT ALL PRIVILEGES ON  [primary]  TO  DBA ;

< 347개의 예약어를 테이블 명으로 사용하는 경우 아래와 같이 테이블 명 앞뒤로 대괄호가 추가 되어 작성 됩니다. >


1. 예약어가 아닌 경우
                 GRANT SELECT, DELETE, UPDATE, INSERT ON test_tbl TO  dev_user ;
 

2. 예약어인 경우

                 GRANT SELECT, DELETE, UPDATE, INSERT ON  [primary]  TO  dev_user ;​



첨부 파일에 스크립트가 첨부 되어 있습니다. cub_grant.sh

 

향후 버전에 GRANT .... ON ALL TABLES 기능이 추가 되겠죠...?