:meta-keywords: cubrid authorization, cubrid dba, cubrid user :meta-description: CUBRID has two types of users by default: DBA and PUBLIC. DBA and DBA members can create, drop and alter users by using SQL statements. *********** ì‚¬ìš©ìž ê´€ë¦¬ *********** ë°ì´í„°ë² ì´ìФ ì‚¬ìš©ìž =================== ì‚¬ìš©ìž ì´ë¦„ 작성 ì›ì¹™ì€ :doc:`identifier` ì ˆì„ ì°¸ê³ í•œë‹¤. CUBRID는 기본ì 으로 **DBA** 와 **PUBLIC** ë‘ ì¢…ë¥˜ì˜ ì‚¬ìš©ìžë¥¼ ì œê³µí•œë‹¤. ì²˜ìŒ ì œí’ˆì„ ì„¤ì¹˜í–ˆì„ ë•Œì—는 비밀번호가 ì„¤ì •ë˜ì–´ 있지 않다. * ëª¨ë“ ì‚¬ìš©ìžëŠ” **PUBLIC** 사용ìžì—게 ë¶€ì—¬ëœ ê¶Œí•œì„ ì†Œìœ í•œë‹¤. ë°ì´í„°ë² ì´ìŠ¤ì˜ ëª¨ë“ ì‚¬ìš©ìžëŠ” **PUBLIC** ì˜ ë©¤ë²„ê°€ ëœë‹¤. 사용ìžì—게 ê¶Œí•œì„ ë¶€ì—¬í•˜ëŠ” ë°©ë²•ì€ **PUBLIC** 사용ìžì— 대한 ê¶Œí•œì„ ë¶€ì—¬í•˜ëŠ” 것ì´ë‹¤. * **DBA** 는 ë°ì´í„°ë² ì´ìФ 관리ìžë¥¼ 위한 ê¶Œí•œì„ ì†Œìœ í•œë‹¤. **DBA** 는 ìžë™ìœ¼ë¡œ ëª¨ë“ ì‚¬ìš©ìžì™€ ê·¸ë£¹ì˜ ë©¤ë²„ê°€ ëœë‹¤. 즉, **DBA** 는 ëª¨ë“ í…Œì´ë¸”ì— ëŒ€í•œ ì ‘ê·¼ ê¶Œí•œì„ ê°–ëŠ”ë‹¤. ë”°ë¼ì„œ **DBA** 와 **DBA** ì˜ ë©¤ë²„ì—게 명시ì 으로 ê¶Œí•œì„ ë¶€ì—¬í• í•„ìš”ëŠ” 없다. ë°ì´í„°ë² ì´ìФ 사용ìžëŠ” ê³ ìœ í•œ ì´ë¦„ì„ ê°–ëŠ”ë‹¤. ë°ì´í„°ë² ì´ìФ 관리ìžëŠ” **cubrid createdb** ìœ í‹¸ë¦¬í‹°ë¥¼ ì´ìš©í•˜ì—¬ ì¼ê´„ì 으로 사용ìžë¥¼ ìƒì„±í• 수 있다(ìžì„¸í•œ ë‚´ìš©ì€ :ref:`cubrid-utilities` 참조). ë°ì´í„°ë² ì´ìФ 사용ìžëŠ” ë™ì¼í•œ ê¶Œí•œì„ ê°–ëŠ” 멤버를 ì†Œìœ í• ìˆ˜ 없다. 사용ìžì—게 ê¶Œí•œì´ ë¶€ì—¬ë˜ë©´ 해당 사용ìžì˜ ëª¨ë“ ë©¤ë²„ëŠ” ìžë™ìœ¼ë¡œ ë™ì¼í•œ ê¶Œí•œì„ ì†Œìœ í•œë‹¤. .. note:: CUBRID 11.3 ë²„ì „ë¶€í„° **DBA** ì˜ ë©¤ë²„ë„ ì‹œìŠ¤í…œ 카탈로그 ê°€ìƒ í´ëž˜ìФì—서 ëª¨ë“ ì‚¬ìš©ìžì˜ ê°ì²´ë¥¼ ì¡°íšŒí• ìˆ˜ 있다. .. _create-user: CREATE/ALTER/DROP USER ====================== **DBA** 와 **DBA** ì˜ ë©¤ë²„ëŠ” SQL ë¬¸ì„ ì‚¬ìš©í•˜ì—¬ 사용ìžë¥¼ ìƒì„±, 변경, ì‚ì œí• ìˆ˜ 있다. :: CREATE USER user_name [PASSWORD password] [GROUPS user_name [{, user_name } ... ]] [MEMBERS user_name [{, user_name } ... ]] [COMMENT 'comment_string']; ALTER USER user_name PASSWORD password; DROP USER user_name; * *user_name*: ìƒì„±, ì‚ì œ, ë³€ê²½í• ì‚¬ìš©ìž ì´ë¦„ì„ ì§€ì •í•œë‹¤. * *password*: ìƒì„± í˜¹ì€ ë³€ê²½í• ì‚¬ìš©ìžì˜ 비밀번호를 ì§€ì •í•œë‹¤. * *comment_string*: 사용ìžì— 대한 커멘트를 ì§€ì •í•œë‹¤. 다ìŒì€ ì‚¬ìš©ìž *Fred* 를 ìƒì„±í•˜ê³ 비밀번호를 변경한 í›„ì— *Fred* 를 ì‚ì œí•˜ëŠ” ì˜ˆì œì´ë‹¤. .. code-block:: sql CREATE USER Fred; ALTER USER Fred PASSWORD '1234'; DROP USER Fred; 다ìŒì€ 사용ìžë¥¼ ìƒì„±í•˜ê³ ìƒì„±ëœ 사용ìžì— 멤버를 추가하는 ì˜ˆì œì´ë‹¤. ë‹¤ìŒ ë¬¸ìž¥ì„ í†µí•´ *company* 는 *engineering*, *marketing*, *design* ì„ ë©¤ë²„ë¡œ 가지는 ê·¸ë£¹ì´ ëœë‹¤. *marketing* ì€ *smith*, *jones* 를, *design* ì€ *smith* 를, *engineering* ì€ *brown* ì„ ë©¤ë²„ë¡œ 가지는 ê·¸ë£¹ì´ ëœë‹¤. .. code-block:: sql CREATE USER company; CREATE USER engineering GROUPS company; CREATE USER marketing GROUPS company; CREATE USER design GROUPS company; CREATE USER smith GROUPS design, marketing; CREATE USER jones GROUPS marketing; CREATE USER brown GROUPS engineering; 다ìŒì€ 위와 ë™ì¼í•œ ê·¸ë£¹ì„ ìƒì„±í•˜ëŠ” 예ì´ì§€ë§Œ **GROUPS** ëŒ€ì‹ **MEMBERS** ë¬¸ì„ ì‚¬ìš©í•˜ëŠ” ì˜ˆì œì´ë‹¤. .. code-block:: sql CREATE USER smith; CREATE USER brown; CREATE USER jones; CREATE USER engineering MEMBERS brown; CREATE USER marketing MEMBERS smith, jones; CREATE USER design MEMBERS smith; CREATE USER company MEMBERS engineering, marketing, design; 사용ìžì˜ 커멘트 --------------- 사용ìžì— 대한 커멘트는 다ìŒê³¼ ê°™ì´ ì§€ì •í•œë‹¤. .. code-block:: sql CREATE USER designer GROUPS dbms, qa COMMENT 'user comment'; 사용ìžì— 대한 커멘트는 ALTER USER ë¬¸ì„ ì‚¬ìš©í•˜ì—¬ 다ìŒê³¼ ê°™ì´ ë³€ê²½ì´ ê°€ëŠ¥í•˜ë‹¤. .. code-block:: sql ALTER USER DESIGNER COMMENT 'new comment'; ë‹¤ìŒ êµ¬ë¬¸ìœ¼ë¡œ 사용ìžì— 대한 커멘트를 확ì¸í• 수 있다. .. code-block:: sql SELECT name, comment FROM db_user; .. _granting-authorization: GRANT ===== CUBRIDì—서 권한 ë¶€ì—¬ì˜ ìµœì†Œ 단위는 í…Œì´ë¸”ì´ë‹¤. ìžì‹ ì´ ë§Œë“ í…Œì´ë¸”ì— ë‹¤ë¥¸ 사용ìž(그룹)ì˜ ì ‘ê·¼ì„ í—ˆìš©í•˜ë ¤ë©´ 해당 사용ìž(그룹)ì—게 ì ì ˆí•œ ê¶Œí•œì„ ë¶€ì—¬í•´ì•¼ 한다. ê¶Œí•œì´ ë¶€ì—¬ëœ ê·¸ë£¹ì— ì†í•œ ëª¨ë“ ë©¤ë²„ëŠ” ê°™ì€ ê¶Œí•œì„ ì†Œìœ í•˜ë¯€ë¡œ ëª¨ë“ ë©¤ë²„ì—게 개별ì 으로 ê¶Œí•œì„ ë¶€ì—¬í• í•„ìš”ëŠ” 없다. **PUBLIC** 사용ìžê°€ ìƒì„±í•œ (ê°€ìƒ) í…Œì´ë¸”ì€ ëª¨ë“ ì‚¬ìš©ìžì—게 ì ‘ê·¼ì´ í—ˆìš©ëœë‹¤. **GRANT** ë¬¸ì„ ì‚¬ìš©í•˜ì—¬ 사용ìžì—게 ì ‘ê·¼ ê¶Œí•œì„ ë¶€ì—¬í• ìˆ˜ 있다. :: GRANT operation [ { ,operation } ... ] ON [schema_name.]table_name [ { , [schema_name.]table_name } ... ] TO user [ { ,user } ... ] [ WITH GRANT OPTION ] ; * *operation*: ê¶Œí•œì„ ë¶€ì—¬í• ë•Œ 사용 가능한 ì—°ì‚°ì„ ë‚˜íƒ€ë‚¸ë‹¤. * **SELECT**: í…Œì´ë¸” ì •ì˜ ë‚´ìš©ì„ ì½ì„ 수 ìžˆê³ ì¸ìŠ¤í„´ìŠ¤ 조회가 가능. 가장 ì¼ë°˜ì ì¸ ìœ í˜•ì˜ ê¶Œí•œ. * **INSERT**: í…Œì´ë¸”ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í• 수 있는 권한. * **UPDATE**: í…Œì´ë¸”ì— ì´ë¯¸ 존재하는 ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìˆ˜ì •í• ìˆ˜ 있는 권한. * **DELETE**: í…Œì´ë¸”ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ì‚ì œí• ìˆ˜ 있는 권한. * **ALTER**: í…Œì´ë¸”ì˜ ì •ì˜ë¥¼ ìˆ˜ì •í• ìˆ˜ ìžˆê³ , í…Œì´ë¸”ì˜ ì´ë¦„ì„ ë³€ê²½í•˜ê±°ë‚˜ ì‚ì œí• ìˆ˜ 있는 권한. * **INDEX**: 검색 ì†ë„ì˜ í–¥ìƒì„ 위해 ì¹¼ëŸ¼ì— ì¸ë±ìŠ¤ë¥¼ ìƒì„±í• 수 있는 권한. * **EXECUTE**: í…Œì´ë¸” 메서드 í˜¹ì€ ì¸ìŠ¤í„´ìŠ¤ 메서드를 í˜¸ì¶œí• ìˆ˜ 있는 권한. * **ALL PRIVILEGES**: 앞서 설명한 7가지 ê¶Œí•œì„ ëª¨ë‘ í¬í•¨. * *schema_name*: í…Œì´ë¸” í˜¹ì€ ë·°ì˜ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì„ ì§€ì •í•œë‹¤. ìƒëžµí•˜ë©´ 현재 ì„¸ì…˜ì˜ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì„ ì‚¬ìš©í•œë‹¤. * *table_name*: ê¶Œí•œì„ ë¶€ì—¬í• í…Œì´ë¸” í˜¹ì€ ë·°ì˜ ì´ë¦„ì„ ì§€ì •í•œë‹¤. * *user*: ê¶Œí•œì„ ë¶€ì—¬í• ì‚¬ìš©ìžë‚˜ ê·¸ë£¹ì˜ ì´ë¦„ì„ ì§€ì •í•œë‹¤. ë°ì´í„°ë² ì´ìФ 사용ìžì˜ ë¡œê·¸ì¸ ì´ë¦„ì„ ìž…ë ¥í•˜ê±°ë‚˜ 시스템 ì •ì˜ ì‚¬ìš©ìžì¸ **PUBLIC** ì„ ìž…ë ¥í• ìˆ˜ 있다. **PUBLIC** ì´ ëª…ì‹œë˜ë©´ ë°ì´í„°ë² ì´ìŠ¤ì˜ ëª¨ë“ ì‚¬ìš©ìžëŠ” 부여한 ê¶Œí•œì„ ê°€ì§„ë‹¤. * **WITH GRANT OPTION**: **WITH GRANT OPTION** ì„ ì´ìš©í•˜ë©´ ê¶Œí•œì„ ë¶€ì—¬ë°›ì€ ì‚¬ìš©ìžê°€ ë¶€ì—¬ë°›ì€ ê¶Œí•œì„ ë‹¤ë¥¸ 사용ìžì—게 ë¶€ì—¬í• ìˆ˜ 있다. 다ìŒì€ *smith* (*smith* ì˜ ëª¨ë“ ë©¤ë²„ í¬í•¨)ì—게 *olympic* í…Œì´ë¸”ì˜ ê²€ìƒ‰ ê¶Œí•œì„ ë¶€ì—¬í•œ ì˜ˆì œì´ë‹¤. .. code-block:: sql GRANT SELECT ON olympic TO smith; 다ìŒì€ *brown* 와 *jones* (ë‘ ì‚¬ìš©ìžì— ì†í•œ ëª¨ë“ ë©¤ë²„)ì—게 *nation* ê³¼ *athlete* í…Œì´ë¸”ì— ëŒ€í•´ **SELECT**, **INSERT**, **UPDATE**, **DELETE** ê¶Œí•œì„ ë¶€ì—¬í•œ ì˜ˆì œì´ë‹¤. .. code-block:: sql GRANT SELECT, INSERT, UPDATE, DELETE ON nation, athlete TO brown, jones; 다ìŒì€ ëª¨ë“ ì‚¬ìš©ìž(public)ì—게 *tbl1*, *tbl2* í…Œì´ë¸”ì— ëŒ€í•´ ëª¨ë“ ê¶Œí•œì„ ë¶€ì—¬í•˜ëŠ” ì˜ˆì œì´ë‹¤. .. code-block:: sql CREATE TABLE tbl1 (a INT); CREATE TABLE tbl2 (a INT); GRANT ALL PRIVILEGES ON tbl1, tbl2 TO public; ë‹¤ìŒ **GRANT** ë¬¸ì€ *brown* ì—게 *record*, *history* í…Œì´ë¸”ì— ëŒ€í•œ 검색 ê¶Œí•œì„ ë¶€ì—¬í•˜ê³ *brown* ì´ ë‹¤ë¥¸ 사용ìžì—게 검색 ê¶Œí•œì„ ë¶€ì—¬í•˜ëŠ” ê²ƒì„ í—ˆìš©í•˜ë„ë¡ **WITH GRANT OPTION** ì ˆì„ ì‚¬ìš©í•œ ì˜ˆì œì´ë‹¤. ì´í›„ *brown* ì€ ë‹¤ë¥¸ 사용ìžì—게 ìžì‹ ì´ ë°›ì€ ê¶Œí•œ ë‚´ì—서 ê¶Œí•œì„ ë¶€ì—¬í• ìˆ˜ 있다. .. code-block:: sql GRANT SELECT ON record, history TO brown WITH GRANT OPTION; .. note:: * ê¶Œí•œì„ ë¶€ì—¬í•˜ëŠ” 사용ìžëŠ” 권한 부여 ì „ì— ë‚˜ì—´ëœ ëª¨ë“ í…Œì´ë¸”ì˜ ì†Œìœ ìžì´ê±°ë‚˜, **WITH GRANT OPTION** ì„ ê°€ì§€ê³ ìžˆì–´ì•¼ 한다. * ë·°ì— ëŒ€í•œ **SELECT**, **UPDATE**, **DELETE**, **INSERT** ê¶Œí•œì„ ë¶€ì—¬í•˜ê¸° ì „ì— ë·°ì˜ ì†Œìœ ìžëŠ” ë·°ì˜ ì§ˆì˜ ëª…ì„¸ë¶€ì— í¬í•¨ë˜ì–´ 있는 ëª¨ë“ í…Œì´ë¸”ì— ëŒ€í•´ì„œ **SELECT** 권한과 **GRANT** ê¶Œí•œì„ ê°€ì ¸ì•¼ 한다. **DBA** 사용ìžì™€ **DBA** ê·¸ë£¹ì— ì†í•œ 멤버는 ìžë™ì 으로 ëª¨ë“ í…Œì´ë¸”ì— ëŒ€í•œ ëª¨ë“ ê¶Œí•œì„ ê°€ì§„ë‹¤. * **TRUNCATE** ë¬¸ì„ ìˆ˜í–‰í•˜ë ¤ë©´ **ALTER**, **INDEX**, **DELETE** ê¶Œí•œì´ í•„ìš”í•˜ë‹¤. .. _revoking-authorization: REVOKE ====== **REVOKE** ë¬¸ì„ ì‚¬ìš©í•˜ì—¬ ê¶Œí•œì„ í•´ì§€í• ìˆ˜ 있다. 사용ìžì—게 ë¶€ì—¬ëœ ê¶Œí•œì€ ì–¸ì œë“ ì§€ 해지가 가능하다. 한 사용ìžì—게 ë‘ ì¢…ë¥˜ ì´ìƒì˜ ê¶Œí•œì„ ë¶€ì—¬í–ˆë‹¤ë©´ 권한 중 ì¼ë¶€ ë˜ëŠ” ì „ë¶€ë¥¼ í•´ì§€í• ìˆ˜ 있다. ë˜í•œ í•˜ë‚˜ì˜ **GRANT** 문으로 여러 사용ìžì—게 여러 í…Œì´ë¸”ì— ëŒ€í•œ ê¶Œí•œì„ ë¶€ì—¬í•œ 경우ë¼ë„ ì¼ë¶€ 사용ìžì™€ ì¼ë¶€ í…Œì´ë¸”ì— ëŒ€í•´ ì„ íƒì ì¸ ê¶Œí•œ 해지가 가능하다. ê¶Œí•œì„ ë¶€ì—¬í•œ 사용ìžì—게서 권한(**WITH GRANT OPTION**)ì„ í•´ì§€í•˜ë©´, ê¶Œí•œì„ í•´ì§€ë‹¹í•œ 사용ìžë¡œë¶€í„° ê¶Œí•œì„ ë°›ì€ ì‚¬ìš©ìžë„ ê¶Œí•œì„ í•´ì§€ë‹¹í•œë‹¤. :: REVOKE operation [{, operation}] ON [schema_name.]table_name [{, [schema_name.]table_name}] FROM user [{, user}] ; * *operation*: ê¶Œí•œì„ ë¶€ì—¬í• ë•Œ ë¶€ì—¬í• ìˆ˜ 있는 ì—°ì‚°ì˜ ì¢…ë¥˜ì´ë‹¤(ìžì„¸í•œ ë‚´ìš©ì€ :ref:`granting-authorization` 참조). * *schema_name*: í…Œì´ë¸” í˜¹ì€ ë·°ì˜ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì„ ì§€ì •í•œë‹¤. ìƒëžµí•˜ë©´ 현재 ì„¸ì…˜ì˜ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì„ ì‚¬ìš©í•œë‹¤. * *table_name*: ê¶Œí•œì„ ë¶€ì—¬í• í…Œì´ë¸” í˜¹ì€ ë·°ì˜ ì´ë¦„ì„ ì§€ì •í•œë‹¤. * *user*: ê¶Œí•œì„ ë¶€ì—¬í• ì‚¬ìš©ìžë‚˜ ê·¸ë£¹ì˜ ì´ë¦„ì„ ì§€ì •í•œë‹¤. 다ìŒì€ *smith*, *jones* 사용ìžì—게 *nation*, *athlete* ë‘ í…Œì´ë¸”ì— ëŒ€í•´ **SELECT**, **INSERT**, **UPDATE**, **DELETE** ê¶Œí•œì„ ë¶€ì—¬í•˜ëŠ” ì˜ˆì œì´ë‹¤. .. code-block:: sql GRANT SELECT, INSERT, UPDATE, DELETE ON nation, athlete TO smith, jones; 다ìŒì€ *jones* ì—게 조회 ê¶Œí•œë§Œì„ ë¶€ì—¬í•˜ê¸° 위해 **REVOKE** ë¬¸ìž¥ì„ ìˆ˜í–‰í•˜ëŠ” ì˜ˆì œì´ë‹¤. 만약 *jones* ê°€ 다른 사용ìžì—게 ê¶Œí•œì„ ë¶€ì—¬í–ˆë‹¤ë©´ ê¶Œí•œë°›ì€ ì‚¬ìš©ìž ë˜í•œ 조회만 가능하다. .. code-block:: sql REVOKE INSERT, UPDATE, DELETE ON nation, athlete FROM jones; 다ìŒì€ *smith* ì—게 부여한 ëª¨ë“ ê¶Œí•œì„ í•´ì§€í•˜ê¸° 위해 **REVOKE** ë¬¸ì„ ìˆ˜í–‰í•˜ëŠ” ì˜ˆì œì´ë‹¤. ì´ ë¬¸ìž¥ì´ ìˆ˜í–‰ë˜ë©´ *smith* 는 *nation*, *athlete* í…Œì´ë¸”ì— ëŒ€í•œ ì–´ë– í•œ ì—°ì‚°ë„ í—ˆìš©ë˜ì§€ 않는다. .. code-block:: sql REVOKE ALL PRIVILEGES ON nation, athlete FROM smith; .. _change-owner: ALTER ... OWNER =============== ë°ì´í„°ë² ì´ìФ 관리ìž(**DBA**) ë˜ëŠ” **DBA** ê·¸ë£¹ì˜ ë©¤ë²„ëŠ” 다ìŒì˜ 질ì˜ë¥¼ 통해 í…Œì´ë¸”, ë·°, 트리거, Java ì €ìž¥ 함수/í”„ë¡œì‹œì €ì˜ ì†Œìœ ìžë¥¼ ë³€ê²½í• ìˆ˜ 있다. :: ALTER (TABLE | CLASS | VIEW | VCLASS | TRIGGER | PROCEDURE | FUNCTION) [schema_name.]name OWNER TO user_id; * *schema_name*: ê°ì²´ì˜ 스키마 ì´ë¦„ì„ ì§€ì •í•œë‹¤. ìƒëžµí•˜ë©´ 현재 ì„¸ì…˜ì˜ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì„ ì‚¬ìš©í•œë‹¤. * *name*: ì†Œìœ ìžë¥¼ ë³€ê²½í• ìŠ¤í‚¤ë§ˆ ê°ì²´ì˜ ì´ë¦„ * *user_id*: ì‚¬ìš©ìž ID .. code-block:: sql ALTER TABLE test_tbl OWNER TO public; ALTER VIEW test_view OWNER TO public; ALTER TRIGGER test_trigger OWNER TO public; ALTER FUNCTION test_function OWNER TO public; ALTER PROCEDURE test_procedure OWNER TO public; .. _authorization-method: ì‚¬ìš©ìž ê¶Œí•œ 관리 메서드 ======================= ë°ì´í„°ë² ì´ìФ 관리ìž(**DBA**)는 ë°ì´í„°ë² ì´ìФ 사용ìžì— 대한 ì •ë³´ë¥¼ ì €ìž¥í•˜ëŠ” **db_user** ë˜ëŠ” 시스템 권한 í´ëž˜ìŠ¤ì¸ **db_authorizations** ì— ì •ì˜ëœ 권한 ê´€ë ¨ ë©”ì„œë“œë“¤ì„ í˜¸ì¶œí•˜ì—¬ ì‚¬ìš©ìž ê¶Œí•œì„ ì¡°íšŒ ë° ìˆ˜ì •í• ìˆ˜ 있다. í˜¸ì¶œí•˜ê³ ìž í•˜ëŠ” ë©”ì„œë“œì— ë”°ë¼ **db_user** ë˜ëŠ” **db_authorizations** í´ëž˜ìŠ¤ë¥¼ ëª…ì‹œí• ìˆ˜ 있으며, ë©”ì„œë“œì˜ ë¦¬í„´ ê°’ì„ ë³€ìˆ˜ì— ì €ìž¥í• ìˆ˜ 있다. ë˜í•œ, ì¼ë¶€ 메서드는 **DBA** 와 **DBA** ê·¸ë£¹ì˜ ë©¤ë²„ì— ì˜í•´ì„œë§Œ 호출ë 수 있ìŒì„ ìœ ì˜í•œë‹¤. .. note:: HA 환경ì—서 마스터 노드ì—ì„œì˜ ë©”ì„œë“œ í˜¸ì¶œì€ ìŠ¬ë ˆì´ë¸Œ ë…¸ë“œì— ë°˜ì˜ë˜ì§€ 않으므로 ì´ì— 주ì˜í•œë‹¤. :: CALL method_definition ON CLASS auth_class [ TO variable ] [ ; ] CALL method_definition ON variable [ ; ] **login() 메서드** **login** () 메서드는 **db_user** í´ëž˜ìŠ¤ì˜ í´ëž˜ìФ 메서드로서, 현재 ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•œ 사용ìžë¥¼ ë³€ê²½í•˜ê³ ìž í• ë•Œ 사용ëœë‹¤. 새로 ì ‘ì†í• ì‚¬ìš©ìž ì´ë¦„ê³¼ 비밀번호가 ì¸ìžë¡œ 주어지며, 문ìžì—´ 타입ì´ì–´ì•¼ 한다. 비밀번호가 없는 경우 ì¸ìžì— 공백 문ìž('')ì„ ìž…ë ¥í• ìˆ˜ 있다. **DBA** 나 **DBA** ê·¸ë£¹ì˜ ë©¤ë²„ëŠ” 비밀번호를 ìž…ë ¥í•˜ì§€ ì•Šê³ **login** () 메서드를 í˜¸ì¶œí• ìˆ˜ 있다. .. code-block:: sql -- 비밀번호가 없는 DBA 사용ìžë¡œ ì ‘ì†í•˜ê¸° CALL login ('dba', '') ON CLASS db_user; -- 비밀번호가 cubridì¸ user_1 사용ìžë¡œ ì ‘ì†í•˜ê¸° CALL login ('user_1', 'cubrid') ON CLASS db_user; **add_user() 메서드** **add_user** () 메서드는 **db_user** í´ëž˜ìŠ¤ì˜ í´ëž˜ìФ 메서드로서, 새로운 사용ìžë¥¼ ì¶”ê°€í• ë•Œ 사용ëœë‹¤. 새로 ì¶”ê°€í• ì‚¬ìš©ìž ì´ë¦„ê³¼ 비밀번호가 ì¸ìžë¡œ 주어지며, 문ìžì—´ 타입ì´ì–´ì•¼ 한다. ì´ë•Œ, ì¶”ê°€í• ì‚¬ìš©ìž ì´ë¦„ì€ ì´ë¯¸ 등ë¡ëœ ë°ì´í„°ë² ì´ìФ ì‚¬ìš©ìž ì´ë¦„ê³¼ 중복ë˜ì–´ì„œëŠ” 안 ëœë‹¤. 한편, **add_user** () 메서드는 **DBA** 사용ìžì™€ **DBA** ê·¸ë£¹ì— ì†í•œ 멤버만 í˜¸ì¶œí• ìˆ˜ 있다. .. code-block:: sql -- 비밀번호가 없는 user_2 추가하기 CALL add_user ('user_2', '') ON CLASS db_user; -- 비밀번호가 없는 user_3 ì¶”ê°€í•˜ê³ , 메서드 리턴 ê°’ì„ admin ë³€ìˆ˜ì— ì €ìž¥í•˜ê¸° CALL add_user ('user_3', '') ON CLASS db_user to admin; **drop_user() 메서드** **drop_user** () 메서드는 **db_user** í´ëž˜ìŠ¤ì˜ í´ëž˜ìФ 메서드로서, 기존 사용ìžë¥¼ ì‚ì œí• ë•Œ 사용ëœë‹¤. ì‚ì œí•˜ê³ ìž í•˜ëŠ” ì‚¬ìš©ìž ì´ë¦„ë§Œ ì¸ìžë¡œ 주어지며, 문ìžì—´ 타입ì´ì–´ì•¼ 한다. ì´ë•Œ, í´ëž˜ìŠ¤ì˜ ì†Œìœ ìžëŠ” ì‚ì œí• ìˆ˜ 없으므로, **DBA** 는 ê´€ë ¨ í´ëž˜ìŠ¤ì˜ ì†Œìœ ìžë¥¼ 변경한 후, 해당 사용ìžë¥¼ ì‚ì œí• ìˆ˜ 있다. **drop_user** () 메서드 ì—시 **DBA** 사용ìžì™€ **DBA** ê·¸ë£¹ì— ì†í•œ 멤버만 í˜¸ì¶œí• ìˆ˜ 있다. .. code-block:: sql -- user_2 ì‚ì œí•˜ê¸° CALL drop_user ('user_2') ON CLASS db_user; **find_user() 메서드** **find_user** () 메서드는 **db_user** í´ëž˜ìŠ¤ì˜ í´ëž˜ìФ 메서드로서, ì¸ìžë¡œ 주어진 사용ìžë¥¼ ê²€ìƒ‰í• ë•Œ 사용ëœë‹¤. ì°¾ê³ ìž í•˜ëŠ” ì‚¬ìš©ìž ì´ë¦„ì´ ì¸ìžë¡œ 주어지며, **TO** ë’¤ì— ì§€ì •ëœ ë³€ìˆ˜ì— ë©”ì„œë“œì˜ ë¦¬í„´ ê°’ì„ ì €ìž¥í•˜ì—¬ ë‹¤ìŒ ì§ˆì˜ ìˆ˜í–‰ 시 ë³€ìˆ˜ì— ì €ìž¥ëœ ê°’ì„ ì´ìš©í• 수 있다. .. code-block:: sql -- user_2를 찾아서 adminì´ë¼ëŠ” ë³€ìˆ˜ì— ì €ìž¥í•˜ê¸° CALL find_user ('user_2') ON CLASS db_user TO admin; **set_password() 메서드** **set_password** () 메서드는 ì‚¬ìš©ìž ì¸ìŠ¤í„´ìŠ¤ ê°ê°ì— 대해 í˜¸ì¶œí• ìˆ˜ 있는 ì¸ìŠ¤í„´ìŠ¤ 메서드로서, 사용ìžì˜ 비밀번호를 ë³€ê²½í• ë•Œ 사용ëœë‹¤. ì§€ì •ëœ ì‚¬ìš©ìžì˜ 새로운 비밀번호가 ì¸ìžë¡œ 주어진다. **DBA** 와 **DBA** ê·¸ë£¹ì˜ ë©¤ë²„ë¥¼ ì œì™¸í•œ ì¼ë°˜ 사용ìžëŠ” ìžì‹ ì˜ ë¹„ë°€ë²ˆí˜¸ë§Œ ë³€ê²½í• ìˆ˜ 있다. .. code-block:: sql -- user_4 를 ì¶”ê°€í•˜ê³ user_common ë³€ìˆ˜ì— ì €ìž¥í•˜ê¸° CALL add_user ('user_4', '') ON CLASS db_user to user_common; -- user_4ì˜ ë¹„ë°€ë²ˆí˜¸ë¥¼ 'abcdef'로 변경하기 CALL set_password('abcdef') on user_common; **change_owner() 메서드** **change_owner** () 메서드는 **db_authorizations** í´ëž˜ìŠ¤ì˜ í´ëž˜ìФ 메서드로서, í´ëž˜ìФ ì†Œìœ ìžë¥¼ ë³€ê²½í• ë•Œ 사용ëœë‹¤. ì†Œìœ ìžë¥¼ ë³€ê²½í•˜ê³ ìž í•˜ëŠ” í´ëž˜ìФ ì´ë¦„ê³¼ 새로운 ì†Œìœ ìžì˜ ì´ë¦„ì´ ê°ê° ì¸ìžë¡œ 주어진다. í…Œì´ë¸” ì´ë¦„ì€ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì„ ì ‘ë‘사로 사용해야 한다. ìƒëžµí•˜ë©´ 현재 ì„¸ì…˜ì˜ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì„ ì‚¬ìš©í•œë‹¤. ì´ë•Œ, ë°ì´í„°ë² ì´ìŠ¤ì— ì¡´ìž¬í•˜ëŠ” í´ëž˜ìŠ¤ì™€ ì†Œìœ ìžê°€ ì¸ìžë¡œ ì§€ì •ë˜ì–´ì•¼ 하며, ê·¸ë ‡ì§€ ì•Šì€ ê²½ìš° ì—러가 ë°œìƒí•œë‹¤. **change_owner** () 메서드는 **DBA** 와 **DBA** ê·¸ë£¹ì˜ ë©¤ë²„ë§Œ í˜¸ì¶œí• ìˆ˜ 있다. ì´ ë©”ì„œë“œì™€ ê°™ì€ ì—í• ì„ í•˜ëŠ” 질ì˜ë¡œ **ALTER ... OWNER** ê°€ 있다. ì´ì— 대한 ë‚´ìš©ì€ :ref:`change-owner` ì ˆì„ ì°¸ê³ í•œë‹¤. .. code-block:: sql -- user_1ì´ ì†Œìœ í•˜ê³ ìžˆëŠ” table_1ì˜ ì†Œìœ ìžë¥¼ user_4로 변경하기 CALL change_owner ('user_1.table_1', 'user_4') ON CLASS db_authorizations; ë‹¤ìŒ ì˜ˆì œëŠ” íŠ¹ì • ë°ì´í„°ë² ì´ìФ 사용ìžì˜ 존재 여부를 íŒë‹¨í•˜ê¸° 위해 시스템 í´ëž˜ìŠ¤ì¸ **db_user** ì— ë“±ë¡ëœ ë©”ì„œë“œì¸ **find_user** 를 호출하는 **CALL** ë¬¸ì˜ ìˆ˜í–‰ì„ ë³´ì—¬ì¤€ë‹¤. 첫 번째 ë¬¸ìž¥ì€ **db_user** í´ëž˜ìŠ¤ì— ì •ì˜ëœ í´ëž˜ìФ 메서드를 호출한다. ì°¾ê³ ìž í•˜ëŠ” ëŒ€ìƒ ì‚¬ìš©ìžê°€ ë°ì´í„°ë² ì´ìŠ¤ì— ë“±ë¡ë˜ì–´ ìžˆì„ ê²½ìš° xì—는 해당 í´ëž˜ìФ ì´ë¦„(여기ì—서는 **db_user**)ì´ ì €ìž¥ë˜ê³ , ì—†ì„ ê²½ìš°ì—” **NULL** ì´ ì €ìž¥ëœë‹¤. ë‘ ë²ˆì§¸ ë¬¸ìž¥ì€ ë³€ìˆ˜ xì— ì €ìž¥ëœ ê°’ì„ ì¶œë ¥í•˜ëŠ” 방법ì´ë‹¤. ì´ ì§ˆì˜ë¬¸ì—서 **DB_ROOT** 는 시스템 í´ëž˜ìŠ¤ë¡œì„œ, í•˜ë‚˜ì˜ ì¸ìŠ¤í„´ìŠ¤ë§Œì´ ì¡´ìž¬í•˜ì—¬ sys_date나 등ë¡ëœ ë³€ìˆ˜ì˜ ê°’ì„ ì¶œë ¥í•˜ëŠ” ë° ì‚¬ìš©í• ìˆ˜ 있다. ì´ëŸ¬í•œ ìš©ë„로 ì“°ì¼ ê²½ìš° **DB_ROOT** 는 ì¸ìŠ¤í„´ìŠ¤ê°€ í•˜ë‚˜ì¸ ë‹¤ë¥¸ í…Œì´ë¸”로 ëŒ€ì²´í• ìˆ˜ 있다. .. code-block:: sql CALL find_user('dba') ON CLASS db_user to x; :: Result ====================== db_user .. code-block:: sql SELECT x FROM db_root; :: x ====================== db_user **find_user** 메서드를 ì´ìš©í•˜ë©´ ê²°ê³¼ê°’ì´ **NULL** ì¸ì§€ ì•„ë‹Œì§€ì— ë”°ë¼ í•´ë‹¹ 사용ìžê°€ ë°ì´í„°ë² ì´ìŠ¤ì— ì¡´ìž¬í•˜ëŠ”ì§€ 여부를 íŒë‹¨í• 수 있다.