Á¦ 4°­ mysql¿¡ »õ·Î¿î »ç¿ëÀÚ ±ÇÇÑ Ãß°¡Çϱâ

  Ãâó : http://gwangcom.co.kr

 
 Á¦ 4°­ mysql¿¡ »õ·Î¿î »ç¿ëÀÚ ±ÇÇÑ Ãß°¡Çϱâ

µÎ°¡Áö ¹æ¹ýÀ¸·Î »ç¿ëÀÚ¸¦ Ãß°¡ÇÒ ¼ö ÀÖ´Ù : GRANT ¹® »ç¿ë ¶Ç´Â mysql ½ÂÀÎ Å×À̺í Á÷Á¢ Á¶ÀÛ. GRANT ¹®À» »ç¿ëÇÏ´Â °ÍÀÌ ´õ ¼±È£µÇ´Â ¹æ¹ýÀÌ´Ù.

 ¾Æ·¡ÀÇ ¿¹Á¦´Â »õ·Î¿î »ç¿ëÀÚ¸¦ ¼³Á¤Çϱâ À§ÇØ ¾î¶»°Ô mysql Ŭ¶óÀ̾ðÆ®¸¦ »ç¿ëÇÏ´ÂÁö º¸¿©ÁØ´Ù.
ÀÌ ¿¹Á¦´Â ÀÌÀü¿¡ ¼³¸íÇß´ø°Í°ú °°ÀÌ ±âº»°ª¿¡ µû¶ó ±ÇÇÑÀ» ¼³Á¤ÇÏ´Â °ÍÀ¸·Î °¡Á¤ÇÑ´Ù.  
ÀÌ°ÍÀº ¼³Á¤À» ¹Ù²Ù±â À§ÇØ  mysqld°¡ ½ÇÇàµÇ°í ÀÖ´Â °°Àº  ½Ã½ºÅÛ¿¡ ÀÖ¾î¾ß ÇÑ´Ù´Â  °ÍÀ» ¸»ÇÑ´Ù.  
(**ÃʱⰪÀº localhost¿¡¼­¸¸ Á¢¼Ó °¡´ÉÇϹǷÎ**)
¶ÇÇÑ mysql root »ç¿ëÀÚ·Î  Á¢¼ÓÇØ¾ß ÇÏ°í root »ç¿ëÀÚ´Â mysql µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ insert ±ÇÇÑ°ú  reload °ü¸®ÀÚ ±ÇÇÑÀÌ ÀÖ¾î¾ß ÇÑ´Ù.
root »ç¿ëÀÚÀÇ ºñ¹Ð¹øÈ£¸¦  ¹Ù²Ù¾úÀ¸¸é, ¾Æ·¡¿Í °°ÀÌ mysql ¸í·ÉÇà »óÅ¿¡¼­ ºñ¹Ð¹øÈ£¸¦ ¸í½ÃÇØ¾ß ÇÑ´Ù.

 GRANT ¹®À» ÀÌ¿ëÇØ »õ·Î¿î »ç¿ëÀÚ¸¦ Ãß°¡ÇÒ ¼ö ÀÖ´Ù:

shell> mysql --user=root mysql

mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost

        IDENTIFIED BY 'something' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"

        IDENTIFIED BY 'something' WITH GRANT OPTION;

mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;

mysql> GRANT USAGE ON *.* TO dummy@localhost;

 

À§ GRANT ¹®¿¡¼­´Â ¼¼ ¸íÀÇ »ç¿ëÀÚ¸¦ ¼³Á¤ÇÑ´Ù:

monty : ¾î´À °÷¿¡¼­µç ¼­¹ö¿¡ ¿¬°áÇÒ ¼ö ÀÖ´Â ¿ÏÀüÇÑ  ½´ÆÛÀ¯ÀúÀÌÁö¸¸ ºñ¹Ð¹øÈ£¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
¿ì¸®´Â monty@localhost ¿Í monty@"%"¸¦  »ç¿ëÇÑ GRANT ¹®¿¡ ´ëÇؼ­ ¹Ýµå½Ã ³íÀǸ¦ ÇØ¾ß ÇÑ´Ù.
localhost  ¸ñ·ÏÀ» Ãß°¡ÇÏÁö ¾ÊÀ¸¸é, mysql_install_db ¿¡ ÀÇÇØ »ý¼ºµÈ localhost ÀÇ ÀÍ¸í »ç¿ëÀÚ ¸ñ·Ï(µî·Ï?)ÀÌ ·ÎÄà ȣ½ºÆ®¿¡¼­ Á¢¼ÓÇÒ¶§  ¿ì¼±±ÇÀ» °®´Â´Ù.
¿Ö³ÄÇÏ¸é  ÁöÁ¤µÈ Host ÇÊµå °ªÀÌ ÀÖÀ¸¸ç Á¤¿­ ¼ø¼­¿¡¼­ ¸ÕÀú ¿À±â ¶§¹®ÀÌ´Ù.
(** ½ÂÀÎ Å×À̺íÀÇ Á¤¿­ ¼ø¼­°¡ ƯÁ¤ÇÑ Host¸¦ ÁöÁ¤ÇÑ °ÍºÎÅÍ ½ÃÀÛÇÏ´Â °ÍÀ» ±â¾ïÇÏÀÚ.

admin : ºñ¹Ð¹øÈ£ ¾øÀÌ localhost¿¡¼­ Á¢¼ÓÇÒ ¼ö ÀÖÀ¸¸ç reload¿Í process °ü¸®ÀÚ ±ÇÇÑÀ» ½ÂÀιÞÀº »ç¿ëÀÚ. ÀÌ°æ¿ì »ç¿ëÀÚ°¡ mysqladmin processlist »Ó¸¸ ¾Æ´Ï¶ó mysqladmin reload, mysqladmin refresh, mysqladmin flush-* ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Ù.
µ¥ÀÌÅͺ£À̽º¿Í  °ü·ÃµÈ ±ÇÇÑÀº ½ÂÀεÇÁö  ¾Ê¾Ò´Ù.

ÀÌ°ÍÀº Ãß°¡ÀûÀÎ GRANT ¹®À» »ç¿ëÇØ ³ªÁß¿¡ ½ÂÀÎÇÒ ¼ö ÀÖ´Ù.

dummy : ºñ¹Ð¹øÈ£¾øÀÌ ¿¬°áÇÒ ¼ö ÀÖÁö¸¸ ¿ÀÁ÷ localhost¿¡¼­¸¸  ¿¬°á °¡´ÉÇÑ »ç¿ëÀÚ.
±ÇÇÑ À¯Çü(privilege type)ÀÌ USAGE À̱⠶§¹®¿¡  ÀüüÀûÀÎ ±ÇÇÑÀÌ 'N'·Î ¼³Á¤µÇ¾î ÀÖ´Ù.
USAGE ´Â ¾Æ¹«·± ±ÇÇѵµ ¼³Á¤ÇÏÁö  ¾Ê´Â´Ù. ³ªÁß¿¡ µ¥ÀÌÅͺ£À̽º¿Í °ü·ÃµÈ ±ÇÇÑÀ» ½ÂÀÎÇÒ ¼ö ÀÖ´Ù. 

¶ÇÇÑ µ¿ÀÏÇÑ »ç¿ëÀÚ Á¢±Ù Á¤º¸¸¦ INSERT ¹®À» ÅëÇØ Á÷Á¢ Ãß°¡ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ°æ¿ì¿¡´Â ¼­¹ö°¡ ½ÂÀÎ Å×À̺íÀ» ´Ù½Ã Àеµ·Ï ¾Ë·ÁÁÖ¾î¾ß  ÇÑ´Ù.(**FLUSH PRIVILEGES »ç¿ë**)

shell> mysql --user=root mysql

mysql>                INSERT                 INTO                user

VALUES('localhost','monty',PASSWORD('something'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')

mysql> INSERT INTO user VALUES('%','monty',PASSWORD('something'),

        'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')

mysql> INSERT INTO user SET Host='localhost',User='admin', Reload_priv='Y', Process_priv='Y';

mysql> INSERT INTO user (Host,User,Password) VALUES('localhost','dummy',");

mysql> FLUSH PRIVILEGES;

mysql ¹öÀü¿¡  µû¶ó À§¿¡¼­  'Y'  °ªÀÌ ´Ù¸¦  ¼ö ÀÖ´Ù´Â   °ÍÀ» ±â¾ïÇÏÀÚ.

3.22.11 ¹öÀü ÀÌÈÄ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â È®ÀåµÈ INSERT ¹®Àº  ¿©±â¼­ admin »ç¿ëÀÚ¿¡°Ô »ç¿ëµÇ¾ú´Ù.

½´ÆÛÀ¯Àú¸¦ ¼³Á¤Çϱâ À§ÇØ ±ÇÇÑÇʵ带 'Y'·Î ÇÑ user Å×ÀÌºí  ¸ñ·Ï¸¸ ¸¸µé¸é µÈ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ. db ³ª host Å×ÀÌºí ¸ñ·ÏÀº ÇÊ¿ä¾ø´Ù.  (** °ü¸®ÀÚ ±ÇÇÑÀº db³ª host Å×À̺í°ú´Â ÀüÇô °ü·ÃÀÌ ¾ø´Ù. db´Â Á¢¼ÓÇÒ  ¼ö ÀÖ´Â µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇØ »ó¼¼ÇÏ°Ô ¼³Á¤ÇÏ°í host Å×À̺íÀº dbÅ×À̺íÀ»  Á» ´õ Á¤±³ÇÏ°Ô ¼³Á¤Çϱâ À§ÇØ ÇÊ¿äÇÑ °ÍÀÌ´Ù. °ü¸®ÀÚ ±ÇÇÑÀº ¿ÀÁ÷  user Å×ÀÌºí¸¸ °ü·ÃµÇ¾îÀÖ´Ù **)

¸¶Áö¸· INSERT ¹®(dummy »ç¿ëÀÚ)¿¡¼­´Â user Å×À̺íÀÇ ±ÇÇÑ Ä÷³ÀÌ ¸íÈ®ÇÏ°Ô ¼³Á¤µÇÁö ¾Ê¾Ò´Ù. ¿Ö³Ä¸é ÀÌ Ä÷³ÀÇ ±âº»°ªÀº 'N'·Î µÇ¾î  Àֱ⠶§¹®ÀÌ´Ù.

´ÙÀ½ÀÇ   ¿¹Á¦¿¡¼­´Â  custom   À̶ó´Â   »ç¿ëÀÚ¸¦  Ãß°¡ÇÑ´Ù.   customÀº localhost,   server.domain,   whitehouse.gov¿¡¼­  Á¢¼ÓÇÒ   ¼ö   ÀÖ´Ù. localhost¿¡¼­´Â   bankaccount  µ¥ÀÌÅͺ£À̽º¿¡¸¸   Á¢¼ÓÇÒ   ¼ö  ÀÖÀ¸¸ç whitehouse.gov¿¡¼­´Â expenses µ¥ÀÌÅͺ£À̽º¿¡, ¸ðµç ¼¼  È£½ºÆ®»ó¿¡¼­´Â customer µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÏ±æ ¿øÇÑ´Ù. ¸ðµç ¼¼ È£½ºÆ®»ó¿¡¼­  stupid¶ó´Â ºñ¹Ð¹øÈ£¸¦ »ç¿ëÇÏ±æ ¿øÇÑ´Ù.
GRANT ¹®À» ÀÌ¿ë ÀÌ·¯ÇÑ »ç¿ëÀÚ ±ÇÇÑÀ» ¼³Á¤Çϱâ À§ÇØ ´ÙÀ½ÀÇ ¸í·ÉÀ» ½ÇÇàÇÏÀÚ:

 

shell> mysql --user=root mysql

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

        ON bankaccount.*

        TO custom@localhost

        IDENTIFIED BY 'stupid';

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

        ON expenses.*

        TO custom@whitehouse.gov

        IDENTIFIED BY 'stupid';

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

        ON customer.*

        TO custom@'%'

        IDENTIFIED BY 'stupid';

½ÂÀÎ Å×À̺íÀ» Á÷Á¢ ¼öÁ¤ÇØ »ç¿ëÀÚ ±ÇÇÑÀ» ¼³Á¤ÇÏ·Á¸é ´ÙÀ½ÀÇ ¸í·ÉÀ» »ç¿ëÇÏÀÚ. (¸¶Áö¸·¿¡ FLUSH PRIVILEGES ¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ):

 

shell> mysql --user=root mysql

mysql> INSERT INTO user (Host,User,Password)

        VALUES('localhost','custom',PASSWORD('stupid'));

mysql> INSERT INTO user (Host,User,Password)

        VALUES('server.domain','custom',PASSWORD('stupid'));

mysql> INSERT INTO user (Host,User,Password)

        VALUES('whitehouse.gov','custom',PASSWORD('stupid'));

mysql> INSERT INTO db

       (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,

        Create_priv,Drop_priv)

        VALUES

        ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db

       (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,

        Create_priv,Drop_priv)

        VALUES

       ('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db

       (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,

        Create_priv,Drop_priv)

        VALUES('%','customer','custom','Y','Y','Y','Y','Y','Y');

mysql> FLUSH PRIVILEGES;

óÀ½ÀÇ ¼¼°¡Áö INSERT ¹®Àº custom »ç¿ëÀÚ°¡ ºñ¹Ð¹øÈ£¸¦  »ç¿ëÇÏ¿© ´Ù¾çÇÑ È£½ºÆ®¿¡¼­ Á¢¼ÓÇÒ ¼ö ÀÖµµ·Ï user Å×ÀÌºí ¸ñ·ÏÀ» Ãß°¡ÇÑ´Ù.  ±×·¸Áö¸¸ ±×¿¡°Ô ¾î¶°ÇÑ Æ۹̼ǵµ ½ÂÀÎÇÏÁö ¾Ê´Â´Ù. (¸ðµç ±ÇÇÑÀº ±âº»°ªÀ¸·Î  'N' ÀÌ´Ù) ´ÙÀ½ÀÇ ¼¼°¡Áö INSERT ¹®Àº ÀûÀýÇÑ È£½ºÆ®¿¡¼­ Á¢¼ÓÀ» ÇÒ  ¶§, custom ¿¡°Ô bankaccount, expenses, customer µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ±ÇÇÑÀ»  ½ÂÀÎÇÏ´Â db Å×ÀÌºí ¸ñ·ÏÀ» Ãß°¡ÇÑ´Ù. ÀϹÝÀûÀ¸·Î ½ÂÀÎ Å×À̺íÀ»  Á÷Á¢ ¼öÁ¤ÇÏ¿´À¸¸é, º¯°æµÈ ±ÇÇÑÀ» Àû¿ëÇϱâ À§ÇØ ¼­¹ö°¡ ½ÂÀÎ Å×À̺íÀ»  ´Ù½Ã Àеµ·Ï ÇØ ÁÖ¾î¾ß ÇÑ´Ù.

ƯÁ¤ÇÑ »ç¿ëÀÚ°¡ ƯÁ¤ÇÑ µµ¸ÞÀÎÀÇ ½Ã½ºÅÛ¿¡¼­ Á¢¼ÓÇÒ ¼ö  ÀÖµµ·Ï ¼³Á¤ÇÏ°íÀÚ ÇÑ´Ù¸é, ´ÙÀ½°ú °°ÀÌ GRANT ¹®À» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù:

 

mysql> GRANT ...

        ON *.*

        TO myusername@"%.mydomainname.com"

        IDENTIFIED BY 'mypassword';

½ÂÀÎ Å×À̺íÀ» Á÷Á¢ ¼öÁ¤ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù:

 

mysql> INSERT INTO  user VALUES ('%.mydomainname.com',  'myusername',PASSWORD('mypassword'),...);

mysql> FLUSH PRIVILEGES;

~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~

 

½ÂÀÎ Å×À̺íÀ» ´Ù·ç±â À§ÇØ xmysqladmin, mysql_webadmin, xmysql  ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. http://www.mysql.com/Contrib ¿¡¼­ ÀÌ·¯ÇÑ  À¯Æ¿¸®Æ¼¸¦ ãÀ» ¼ö ÀÖ´Ù.