My SQL °­ÁÂ 1

 ¼Ò°³¿Í Ư¡ ¹× ¼³Ä¡

ÇãÁ¤¼ö

ÀÌ ±ÛÀº ¸®´ª½º¿ùµå(http://www.linuxlab.co.kr) '99³â 5¿ùÈ£ ±â»çÀÌ´Ù. ´Ù¸¥ °÷¿¡ °Ô½ÃÇÒ ¼ö ÀÖÀ¸³ª ¸®´ª½º¿ùµå ±â»çÀÓÀ» ¹àÇô¾ß ÇÏ°í ¼öÁ¤Çؼ­´Â ¾ÈµÈ´Ù.

1. µé¾î °¡´Â ¸».

1997³â °Ü¿ï, ÇÊÀÚ´Â SQLÀ» ¹è¿ì±â À§ÇØ DB ¼­¹ö¸¦ ã°í ÀÖ¾ú´Ù. ¿©·¯ ÀâÁö¿Í Ã¥À» ã¾Æ º¸¾Ò´Âµ¥, ±×¶§¸¸ Çصµ mSQL°ú PostgreSQL¿¡ ´ëÇÑ ³»¿ë¹Û¿¡ ¾ø¾ú´Ù. Æò¼Ò ÀÏ¹Ý »ç¶÷µé°ú ´Ù¸¥ »îÀ» »ì°í ½Í¾ú´ø ÇÊÀÚ´Â ÀÏ¹Ý »ç¶÷µéÀÌ ¸¹ÀÌ ¾²Áö ¾Ê´Â DB ¼­¹ö¸¦ ã´Ù°¡ ¿ì¿¬È÷ MySQLÀ» ¾Ë°Ô µÇ¾ú°í, MySQL¿¡ ¹ÝÇØ ¹ö·È´Ù. 1997³â ¸¸Çصµ MySQLÀº mSQLÀ̳ª, PostgreSQLº¸´Ù´Â »ç¿ëÀÚ°¡ Àû¾ú´Ù(¿ì¸® ³ª¶ó¿¡¼­¸¸ ±×·±Áö´Â ¸ð¸£Áö¸¸). ¸î ´Þ Àü ¸®´ª½º Àú³Î¿¡¼­ °¢ ºÐ¾ßº°·Î ¾î¶² ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ °¡Àå ¸¹Àº »ç¿ëÀÚ¸¦ È®º¸Çß³ª Á¶»ç¸¦ ÇÑ ÀûÀÌ ÀÖ´Ù. DB ºÐ¾ß¿¡¼­´Â MySQLÀÌ 1µîÀ» Çß´Ù. ¾ÆÀÌ·¯´ÏÄà ÇÏ°Ôµµ ´Ù¸¥ »ç¶÷ÀÌ ¸¹ÀÌ ¾È ¾²´Â DB ¼­¹ö¸¦ »ç¿ëÇϱâ À§ÇØ MySQLÀ» ½è¾ú´Âµ¥, Áö±ÝÀº °¡Àå ¸¹Àº »ç¿ëÀÚ¸¦ È®º¸ÇÏ¿´´Ù. ÀÌ ±Û¿¡¼­´Â MySQLÀÇ Æ¯Â¡°ú ¼³Ä¡ ¹æ¹ý, ¼³Á¤ ¹æ¹ý, CAPI¸¦ ÀÌ¿ëÇÏ¿© ÀÀ¿ë ÇÁ·Î±×·¥°ú ¿¬µ¿Çϱâ, PHP3¸¦ ÀÌ¿ëÇÏ¿© ¿¬µ¿ÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æ º»´Ù. À̹ø ±â»ç¿¡¼­´Â MySQLÀÇ Æ¯Â¡°ú ¼³Ä¡ ¹æ¹ý, ¼³Á¤ ¹æ¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æ º»´Ù.

2. MySQL ÀÇ Æ¯Â¡

MySQLÀÇ ¸Þ´º¾óÀ» º¸¸é MySQLÀÇ Æ¯Â¡ÀÌ ¾à 30°¡Áö Á¤µµ ³ª¿Í ÀÖ´Ù. ¿ä¾àÇØ º¸¸é ´ÙÀ½°ú °°´Ù.

* Ä¿³Î thread¸¦ ÀÌ¿ëÇÑ Multi thread¸¦ Áö¿øÇϹǷÎ, CPU°¡ ¿©·¯ °³ÀÏ °æ¿ì À̵é CPU¸¦ Àß È°¿ëÇÒ ¼ö ÀÖ´Ù.
* ´Ù¾çÇÑ Ç÷§ÆûÀ» Áö¿øÇÑ´Ù.( Windows NTµµ Áö¿øÇÑ´Ù. )

* ¾ÆÁÖ Å« µ¥ÀÌŸ º£À̽ºµµ ´Ù·ê ¼ö ÀÖ´Ù. MySQLÀ» ¸¸µç ȸ»ç´Â 5õ¸¸°³ÀÇ ·¹Äڵ带 °¡Áø µ¥ÀÌŸ º£À̽ºµµ »ç¿ëÇÏ°í ÀÖ´Ù.
* ´Ù¾çÇÑ ³ª¶ó¸»·Î ¿¡·¯ ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÑ´Ù.
* ÃÖÀûÈ­µÈ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ´Ù. 

ÇÏÁö¸¸, MySQLÀÇ °¡Àå Å« Ư¡À» µé¶ó°í Çϸé, ºü¸¥ ¼Óµµ¸¦ µé ¼ö ÀÖ´Ù. ¾Æ·¡¿¡ MySQL°ú ¿À¶óŬÀÇ ¼Óµµ¸¦ ºñ±³ÇØ ³õÀº º¥Ä¡ ¸¶Å© °á°ú°¡ ÀÖ´Ù.

À§ ±×¸²¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ, MySQLÀº ¸Å¿ì ºü¸£´Ù. http://www.tcx.se/benchmark.html ¿¡ °¡¸é ´Ù¸¥ Á¦Ç°°úµµ ºñ±³ÇØ ³õÀº ÀÚ·á°¡ ¸¹ÀÌ ÀÖÀ¸´Ï, °ü½ÉÀÖ´Â µ¶ÀÚ´Â Á÷Á¢ È®ÀÎÇϱ⠹ٶõ´Ù.

±×·¸´Ù¸é, ¿Ö MySQLÀÌ ´Ù¸¥ Á¦Ç°¿¡ ºñÇؼ­ ºü¸¥Áö ±Ã±ÝÇÏÁö ¾Ê´Â°¡? MySQLÀº ¼Óµµ Çâ»óÀ» À§Çؼ­ ÀϺη¯ ¸î °¡Áö ANSI SQLÀ» ±¸ÇöÇÏÁö ¾Ê´Ù. ¹Ù·Î, Transaction°ú TriggerÀÌ´Ù. Transaction°ú Trigger´Â ½Ã½ºÅÛÀÇ ÀÚ¿øÀ» ¸¹ÀÌ ¼Ò¸ðÇÔÀ¸·Î ¼Óµµ¸¦ ¶³¾îÁö°Ô ÇÑ´Ù. MySQLÀº Transaction°ú Trigger¸¦ ÀϺη¯ ±¸ÇöÇÏÁö ¾Ê¾Ò´Ù.

2.1 MySQL¿¡¼­ Áö¿øÇÏÁö ¾Ê´Â SQL ±â´É.

´ÙÀ½Àº ¾ÆÁ÷ MySQLÀÌ Áö¿øÇÏ´Â ¾Ê´Â ±â´ÉµéÀÌ´Ù.

Sub-select
SELECT * FROM table1 WHERE id IN( SELECT id FROM table2) ; ¿Í °°Àº °ÍÀº ¾ÆÁ÷ MySQL¿¡¼­ Áö¿øÇÏÁö ¾Ê´Â´Ù. ´Ù¸¸, INSERT .. SELECT .. ¿Í REPLACE .. SELECT ¸¸ÀÌ Áö¿øµÈ´Ù. sub-select´Â 3.23.0 ¹öÀü¿¡¼­ »ç¿ë°¡´ÉÇÒ °ÍÀ̶ó°í ÇÑ´Ù. *

SELECT INTO TABLE
MySQLÀº SELECT .. INTO TABLEÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù. SELECT .. INTO OUTFILE ¸¸À» Áö¿øÇÑ´Ù.

Transaction
¾Õ¿¡¼­µµ ¸»Çß´Ù½ÃÇÇ MySQLÀº TransactionÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù. TransactionÀº ½Ã½ºÅÛÀÇ ÀÚ¿øÀ» ¸¹ÀÌ ¼Ò¸ðÇÔÀ¸·Î ÀüüÀûÀÎ ¼Óµµ¸¦ ´À¸®°Ô ÇÑ´Ù. µû¶ó¼­, MySQLÀº TransactionÀ» ±¸ÇöÇÏÁö ¾Ê°í, ´ë½Å¿¡ LOCK TABLES/UNLOCK TABLES¸¦ ÀÌ¿ëÇÏ¿© Transaction°ú °°Àº ÀÏÀ» ÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´´Ù.

Stored Procedure¿Í Trigger
Stored Procedure´Â ¾ÕÀ¸·Î Áö¿øÇÒ °èȹÀÌÁö¸¸, Trigger´Â ¼Óµµ¸¦ ¶³¾îµå¸®°í, º°·Î ÇÊ¿ä ¾ø´Â Äõ¸®¶ó¼­ ¾ÕÀ¸·Îµµ Áö¿øÇÒ °èȹÀÌ ¾ø´Ù.

Foreign Key

View

3. MySQLÀÇ ¼³Ä¡

¾Æ½±°Ôµµ MySQLÀÇ ¶óÀ̼¾½º ¹æ½Ä ¶§¹®¿¡ ·¹µåÇÞ °°Àº ¸®´ª½º ¹èÆ÷ÆÇ¿¡´Â MySQLÀÌ Æ÷ÇԵǾî ÀÖÁö ¾Ê´Ù. MySQLÀÇ ¶óÀ̼¾½º ¹æ½ÄÀº ºñ»ó¾÷¿ëÀ¸·Î MySQLÀÌ ¾²ÀÏ °æ¿ì ¹«·áÀÌ°í, »ó¾÷ÀûÀ¸·Î ¾²ÀÏ °æ¿ì, ¶óÀ̼¾½º¸¦ ±¸ÀÔÇØ¾ß ÇÑ´Ù. Win 95, Win 98, Win NT¿ë MySQLÀº »ó¾÷ÀûÀÌµç ºñ»ó¾÷ÀûÀÌµç ¶óÀ̼¾½º¸¦ ±¸ÀÔÇØ¾ß ÇÑ´Ù. http://www.tcx.se/download.html ¿¡¼­ MySQLÀ» ±¸ÇÒ ¼ö ÀÖ´Ù.

¹èÆ÷µÇ´Â Çü½ÄÀº ¼Ò½º ÄÚµå, ¹ÙÀ̳ʸ®, RPMÀÌ´Ù. ÀÌ ±ÛÀÌ ¾²¿© Áö°í ÀÖ´Â Áö±ÝÀÇ ÃֽŠ¹öÀüÀº 3.22.20aÀÌ´Ù.

3.1 ¼Ò½º ÄÚµå·Î ¼³Ä¡Çϱâ.

Ãʺ¸ÀÚµéÀº ÄÄÆÄÀÏÀ» µÎ·Á¿ö ÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ÇÏÁö¸¸ ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº autoconf¿Í automake¸¦ ÀÌ¿ëÇÏ¿© ¹èÆ÷µÇ¹Ç·Î ÄÄÆÄÀÏÇϱⰡ ½±´Ù. ¸Þ´º¾ó¿¡ ³ª¿Â´ë·Î Àß µû¶ó°£´Ù¸é ½ÇÆоøÀÌ ´Ü Çѹø¿¡ ¼³Ä¡¸¦ ¸¶Ä¥ ¼ö ÀÖ´Ù. °¡Àå ±âº»ÀûÀÎ °úÁ¤Àº ´ÙÀ½°ú °°´Ù.

% gzip -d mysql-Version.tar.gz
 
% tar xvf mysql-Version.tar
 
% cd mysql-Version

ÀÌÁ¦ ½ÇÁ¦ ¼³Ä¡ ´Ü°èÀÌ´Ù.

% configure 
 
% make
 
% make check
 
% make install
 
% cd scripts
 
% mysql_install_db

¸î ÁÙ¸¸ Ä¡¸é ¼³Ä¡°¡ ´Ù ³¡³­´Ù. °¢ ´Ü°è´Â ´ÙÀ½°ú °°Àº ÀÏÀ» ÇÑ´Ù.

configure : °¢ÀÚÀÇ È¯°æ¿¡ ¸Â°Ô MakefileÀ» »ý¼ºÇÑ´Ù.
make : ÄÄÆÄÀÏÀ» ÇÑ´Ù.
make check : ÄÄÆÄÀÏÀÌ Á¦´ë·Î µÇ¾ú´ÂÁö °Ë»çÇÏ´Â ´Ü°èÀÌ´Ù. (²À ÇÒ ÇÊ¿ä´Â ¾ø´Ù.)
make install : ¸¸µé¾îÁø ½ÇÇà ÆÄÀÏÀ» ¿øÇÏ´Â µð·ºÅ丮¿¡ ¼³Ä¡ÇÑ´Ù.
mysql_install_db : MySQLÀÇ ±ÇÇÑ¿¡ ´ëÇÑ Å×À̺íÀ» »ý¼ºÇÑ´Ù.

MySQLÀ» óÀ½ ¼³Ä¡ÇßÀ» ¶§¸¸ ÇÊ¿äÇÑ °úÁ¤ÀÌ°í, ÀÌÀü ¹öÀüÀÇ MySQL¿¡¼­ ¾÷±×·¹À̵带 ÇÏ°í ½Í´Ù¸é mysql_fix_ privilege_tables¸¦ ½ÇÇà½ÃÅ°¸é µÈ´Ù.

µû·Î MySQLÀÌ ¼³Ä¡µÉ µð·ºÅ丮¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Ù¸é, ±âº»ÀûÀÎ µð·ºÅ丮´Â /usr/local/ÀÌ µÈ´Ù. MySQLÀ» ¼³Ä¡ÇÒ ½Ã½ºÅÛÀÌ ÀÚ½ÅÀÌ ½´ÆÛ À¯ÀúÀÎ ½Ã½ºÅÛÀ̶ó¸é »ó°ü¾ø°ÚÀ¸³ª, Çб³ ¼­¹ö¿¡ ¼³Ä¡ÇÑ´Ù¸é, °æ¿ì´Â ´ëºÎºÐ /usr/local/¿¡ ¼³Ä¡ÇÒ ±ÇÇÑÀÌ ¾øÀ» °ÍÀÌ´Ù. À̶§, MySQLÀ» ¼³Ä¡ÇÒ µð·ºÅ丮¸¦ ÁöÁ¤ÇØ ÁÙ ¼ö ÀÖ´Ù.

% configure --prefix=¿øÇÏ´Â µð·ºÅ丮

ÀÌ·¸°Ô Çϸé MySQLÀÌ ÀÚ½ÅÀÌ ÁöÁ¤ÇÑ µð·ºÅ丮¿¡ ¼³Ä¡µÈ´Ù. MySQLÀÌ ¼³Ä¡µÈ µð·ºÅ丮ÀÇ bin µð·ºÅ丮¿¡ ½ÇÇà ÆÄÀÏÀÌ ¼³Ä¡µÇ°í, include/mysql¿¡ Çì´õ ÆÄÀÏÀÌ ¼³Ä¡µÈ´Ù. lib/mysql¿¡ ¶óÀ̺귯¸®µéÀÌ ¼³Ä¡µÇ°í, libexec¿¡ MySQLÀÇ µ¥¸óÀÎ mysqld°¡ ¼³Ä¡µÈ´Ù. var¿¡´Â ½ÇÁ¦ µ¥ÀÌŸµéÀÌ ¼³Ä¡µÈ´Ù.

3.2 ¹ÙÀ̳ʸ® ¹èÆ÷ÆÇÀ¸·Î ¼³Ä¡Çϱâ.

ÀÏ´Ü ¹ÙÀ̳ʸ® ¹èÆ÷ÆÇÀ» À§ÀÇ È¨ÆäÀÌÁö¿¡¼­ ¹ÞÀº ÈÄ¿¡

% gzip -d mysql-Version-OS.tar.gz
 
% tar xvf mysql-Version-OS
 
% ln -s mysql-Version-OS mysql
 
% cd mysql% scripts/mysql_install_db

ÀÌ·¸°Ô ÇÏ¸é ¼³Ä¡°¡ ³¡³­´Ù.

3.3 rpmÀ¸·Î ¼³Ä¡Çϱâ.

rpmÀº ¼Ò½º ÄÚµå rpm°ú ¹ÙÀ̳ʸ® rpmÀÌ ÀÖ´Ù. rpmÀÌ ¼Ò½º Äڵ带 ´ã°í ÀÖ´Ù¸é,

% rpm -i MySQL-Version.src.rpm
 
% cd /usr/src/redhat/SOURCES

ÀÌÈÄ¿¡´Â ¼Ò½º ÄÚµå·Î ¼³Ä¡Çϱ⠰úÁ¤À» ÇÏ¸é µÈ´Ù.

¹ÙÀ̳ʸ®ÀÇ °æ¿ì MySQL-Version.i386.rpm, MySQL-client-Version.i386.rpm MySQL-bench-Version.i386.rpm, MySQL-devel-Version.i386.rpm ÀÇ 4 °³ÀÇ ÆÄÀÏÀÌ ÇÊ¿äÇÏ´Ù. rpmÀ» ÀÌ¿ëÇÏ¿© À§ÀÇ 4 °³ ÆÄÀÏÀ» ¼³Ä¡ÇÏ¸é µÈ´Ù. À̶§ /var/lib/mysql¿¡ ½ÇÁ¦ µ¥ÀÌŸµéÀÌ ÀúÀåµÈ´Ù. ºÎÆýÿ¡ ÀÚµ¿À¸·Î µ¥¸óÀ» ½ÇÇà½ÃÅ°´Â ÆÄÀÏÀ» ÀÚµ¿À¸·Î ¸¸µé¾î ÁØ´Ù.

3.4 MySQL »ç¿ëÇϱâ.

¼³Ä¡°¡ ¿Ï·áµÆÀ¸´Ï, ÀÌÁ¦ MySQLÀ» »ç¿ëÇØ º¸ÀÚ. ¸ÕÀú ¾î¶² ½ÇÇà ÆÄÀÏÀÌ ¸¸µé¾î Á³´ÂÁö »ìÆì º¸ÀÚ. ¸¹Àº ½ÇÇà ÆÄÀÏÀÌ ÀÖÁö¸¸,¸¹ÀÌ ¾²ÀÌ´Â ½ÇÇà ÆÄÀϸ¸ Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°´Ù.

1) mysql

SQL ½©·Î¼­, client ÇÁ·Î±×·¥ÀÌ´Ù. MySQL¿¡ Á¢¼ÓÇÏ¿©, Äõ¸®¸¦ ¼öÇàÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¾ÕÀ¸·Î ¸¹ÀÌ »ç¿ëÇÏ°Ô µÉ °ÍÀÌ´Ù.

2) mysqladmin

MySQLÀ» °ü¸®ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. µ¥ÀÌŸ º£À̽º¸¦ ¸¸µé°í, »èÁ¦ÇÏ°í, ±ÇÇÑ¿¡ ´ëÇÑ Å×À̺íÀ» ´Ù½Ã ÀÐ¾î µéÀÌ´Â ÀÏÀ» ÇÑ´Ù.

3) mysqld

MySQL µ¥¸óÀÌ´Ù. MySQLÀ» »ç¿ëÇϱâ À§Çؼ­ Ç×»ó ½ÇÇà ÁßÀ̾î¾ß ÇÑ´Ù.

4) mysqlshow

MySQL¾È¿¡ ¾î¶² µ¥ÀÌŸ º£À̽ºµéÀÌ ÀÖ´ÂÁö, ±× µ¥ÀÌŸ º£À̽ºµé¿¡´Â ¾î¶² Å×À̺íÀÌ ÀÖ´ÂÁö, Å×ÀÌºí¿¡´Â ¾î¶² Ä÷³ÀÌ ÀÖ´ÂÁö¸¦ º¸¿© ÁØ´Ù.

5) safe_mysqld

mysqld¸¦ Á»´õ ¾ÈÀüÇÏ°Ô ½ÇÇà½ÃÅ°´Â ½ºÅ©¸³Æ® ÆÄÀÏÀÌ´Ù.

6) isamchk

Å×ÀÌºí¿¡ ¹®Á¦°¡ ÀÖÀ» ¶§ ¹®Á¦Á¡À» °íÄ¡±âµµ ÇÏ°í, Å×À̺íÀ» ÃÖÀûÈ­ÇÑ´Ù.

MySQLÀÇ »ç¿ëÇϱâ À§Çؼ­ µ¥¸óÀÌ ½ÇÇà ÁßÀ̾î¾ß ÇÑ´Ù°í, ¼³¸íÀ» Çß´Ù. µ¥¸óÀ» ½ÇÇà½ÃÅ°´Â ¹æ¹ýÀº

% safe_mysqld
 
ȤÀº 
 
% mysqld 

ÀÌ´Ù. MySQLÀº 3306¹ø Æ÷Æ®¸¦ »ç¿ëÇÑ´Ù. Ȥ½Ã ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼­ ¸ÕÀú 3306¹øÀ» ¾²°í ÀÖÀ¸¸é µ¥¸óÀÌ ¿¡·¯¸¦ ³»¸é¼­ ½ÇÇàÀÌ ¾È µÈ´Ù. À̶§´Â

% mysqld -P 3333

ó·³ »ç¿ëÇÒ Æ÷Æ® ¹øÈ£¸¦ ÁöÁ¤ÇØ ÁÙ ¼ö ÀÖ´Ù.
¸Å¹ø ºÎÆýø¶´Ù µ¥¸óÀ» ¼Õ¼ö ½ÇÇà½ÃÅ°±â ±ÍÂú´Ù¸é, safe_mysqld¸¦ /etc/rc.d/rc.local¿¡ ÇÑÁÙ Ãß°¡ÇØÁÖ¸é ºÎÆýø¶´Ù ÀÚµ¿À¸·Î ½ÇÇàµÈ´Ù. (rpmÀ¸·Î ¼³Ä¡ÇÑ »ç¶÷Àº ÀÚµ¿À¸·Î µÇ¾î ÀÖ´Ù.)

3.5 ±ÇÇÑ ¼³Á¤°ú »õ·Î¿î »ç¿ëÀÚ Ãß°¡Çϱâ.

MySQL ¼³Ä¡ ´Ü°è¿¡¼­ mysql_install_db ´Ü°è°¡ ±ÇÇÑ¿¡ ´ëÇÑ Å×À̺íÀ» ¼³Ä¡ÇÏ´Â ´Ü°è¶ó°í ÇÏ¿´´Ù. MySQLÀ» óÀ½ ¼³Ä¡Çϸé root¸¸ÀÌ MySQLÀ» »ç¿ëÇϵµ·Ï ±ÇÇÑÀÌ Á־ ÀÖ´Ù. ÀÏ´Ü ¾î¶² µ¥ÀÌŸ º£À̽ºµéÀÌ ÀÖ´ÂÁö º¸ÀÚ.

% mysqlshow -u root
 
+-----------+ 
 
| Databases |
 
+-----------+ 
 
| mysql     |
 
| test      |
 
+-----------+

¡®-u root¡¯°¡ ¹Ù·Î  root·Î »ç¿ëÀ» ÇÑ´Ù´Â ¿É¼ÇÀÌ´Ù.
MySQLÀ» óÀ½ ¼³Ä¡Çϸé mysql, test¶ó´Â µÎ °³ÀÇ µ¥ÀÌŸ º£À̽º°¡ ¼³Ä¡µÈ´Ù. mysql¿¡ ¾î¶² Å×À̺íÀÌ ÀÖ´ÂÁö º¸ÀÚ.

% mysqlshow -u root mysql
 
Database: mysql
 
+--------------+
 
| columns_priv |
 
| db           |
 
| func         |
 
| host         |
 
| tables_priv  |
 
| user         |
 
+--------------+

6 °³ÀÇ Å×À̺íÀÌ ÀÖ´Ù. ÀÌ Áß user Å×À̺íÀÌ »ç¿ëÀÚ¿¡ °üÇÑ Å×À̺íÀÌ´Ù. ÀÌÁ¦ mysqlÀ̶ó´Â Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥À» ÀÌ¿ëÇؼ­ MySQLÀ» »ç¿ëÇØ º¸ÀÚ.

% mysql -u root
 
mysql> 

mysql µ¥ÀÌŸ º£À̽º¸¦ »ç¿ëÇϱâ À§Çؼ­ ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

mysql> use mysql

±×·³ ´ÙÀ½°ú °°ÀÌ ÇÏ¿©, mysql µ¥ÀÌŸ º£À̽ºÀÇ user Å×ÀÌºí¿¡ ¾î¶² ·¹Äڵ尡 ÀÖ´ÂÁö º¸ÀÚ.

mysql> select * from user ;
 
+-------------+-------+----------------+-------------+-
 
| Host        | User  | password       | Select_priv |
 
+-------------+-------+----------------+-------------+-
 
| localhost   | root  |                |     Y       |
 
| inos.ml.org | root  |                |     Y       |
 
| localhost | |       |                |     N       |
 
| inos.ml.org |       |                |     N       |
 
+-------------+-------+----------------+-------------+-
 
7 rows in set (0.00 sec) 

À§¿Í ºñ½ÁÇÏ°Ô ³ª¿ÔÀ» °ÍÀÌ´Ù. SQL ¾ð¾î¸¦ Àß ¸ð¸£´Â µ¶ÀÚ¸¦ À§ÇØ ¼³¸íÇÏÀÚ¸é ¡®SELECT ... ¡¯´Â Å×À̺í·Î ºÎÅÍ Ä÷³À» ¸®ÅÏÇ϶ó´Â Äõ¸®ÀÌ´Ù. ¸ðµç Äõ¸®ÀÇ ³¡Àº ¡®;¡¯ ȤÀº ¡®\g¡¯·Î ³¡³­´Ù. XXX_priv´Â XXX¿¡ ´ëÇÑ ±ÇÇÑÀ» ³ªÅ¸³½´Ù. Áï Select_priv°¡ ¡®Y¡¯ÀÌ¸é ±× »ç¿ëÀÚ´Â select Äõ¸®¸¦ ¼öÇàÇÒ ¼ö ÀÖÀ½À» ³ªÅ¸³½´Ù.

| Host        | User  | password         | Select_priv |
 
+-------------+-------+------------------+-------------+-
 
| localhost   | root  |                  |    Y        |

À§´Â localhostÀÇ root°¡ Æнº¿öµå´Â ¾ø°í, ¸ðµç ±ÇÇÑÀÌ ÁÖ¾îÁ® ÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³½´Ù. ÇÏÁö¸¸ ¾î¶°ÇÑ À¯Àú¶óµµ

% mysql -u root

¸¸ Çϸé MySQL¿¡ ´ëÇÑ ¸ðµç ±ÇÇÑÀ» °¡Áú ¼ö ÀÖÀ¸¹Ç·Î ¸Å¿ì À§ÇèÇÏ´Ù. ¾ÏÈ£¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.

mysql> UPDATE user SET password = password(¡®»õ·Î¿î¾ÏÈ£¡¯)
 
> WHERE user=¡¯root¡¯ ;

Äõ¸®°¡ ±æ´Ù¸é µÎ ÁÙ¿¡ ³ª´²¼­ ½áµµ µÈ´Ù. Äõ¸®ÀÇ ³¡À» ³ªÅ¸³»´Â¡¯;¡¯ ¸¸ ÀÖÀ¸¸é µÈ´Ù.

UPDATE´Â Ä÷³ÀÇ °ªÀ» º¯°æ½ÃÅ°´Â Äõ¸®ÀÌ´Ù. (´ÙÀ½ ±â»ç¿¡ SQL ¾ð¾î¿¡ ´ëÇÑ ¼³¸íÀÌ À̾î Áø´Ù.)MySQLÀº password¸¦ ¾Ïȣȭ ÇÑ´Ù. µû¶ó¼­ ¾ÏÈ£¸¦ ÁöÁ¤ÇÒ ¶§´Â password(¡®¾ÏÈ£¡¯) ó·³ password() ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¾ß ÇÑ´Ù.

ÀÌÁ¦ mysqlÀ» Àá½Ã Á¾·áÇÏ°í, ¾ÏÈ£°¡ Á¦´ë·Î µÇ¾ú´ÂÁö È®ÀÎÇØ º¸ÀÚ.

mysql> quit

±ÇÇÑ¿¡ ´ëÇÑ Å×À̺íÀ» º¯°æÇÏ¿´À» °æ¿ì¿¡´Â mysqladminÀ» ÀÌ¿ëÇÏ¿© ²À º¯°æµÈ ±ÇÇÑÀ» ´Ù½Ã ÀÐ¾î µé¿©¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

% mysqladmin -u reload

À§´Â ±ÇÇÑÀ» ´Ù½Ã ÀÐ¾î µéÀ̶õ ¸í·ÉÀÌ´Ù. À§¸¦ ¾ÈÇϸé, º¯°æµÇÁö ¾ÊÀº ³»¿ëÀ» °¡Áö°í ÀÖ°Ô µÈ´Ù. ´Ù½Ã mysqlÀ» ½ÇÇà½ÃÄÑ º¸ÀÚ. ÀÌÁ¦ ¾ÏÈ£°¡ ÀÖÀ¸¹Ç·Î -p ¿É¼ÇÀ» ºÙ¿©¾ß ÇÑ´Ù.

% mysql -u root -p
  Enter password:

3.6 »õ·Î¿î »ç¿ëÀÚ Ãß°¡Çϱâ

ÀÌÁ¦ »õ·Î¿î »ç¿ëÀÚ¸¦ Ãß°¡ÇØ º¸ÀÚ. »ç¿ëÀÚ°¡ root¸¸ ÀÖ´Â °æ¿ì´Â ¾ø°í, ¸ðµç »ç¿ëÀÚ°¡ ¸ðµç ±ÇÇÑÀ» °®´Â °æ¿ìµµ ¾ø´Ù. »ç¿ëÀÚ¿¡ µû¶ó¼­´Â SELECT¸¸ ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» ÁÙ ¶§µµ ÀÖ´Ù. »ç¿ëÀÚ¸¦ Ãß°¡ÇÏ·Á¸é, INSERT .. INTO¸¦ ÀÌ¿ëÇؼ­ MySQLÀÇ user Å×ÀÌºí¿¡ Ãß°¡¸¦ ÇÏ¸é µÈ´Ù.

% mysql -u root -p mysql
 
Enter password:
 
mysql> INSERT INTO user VALUES(¡®localhost¡¯,
 
¡®new-user¡¯, password(¡®newpasswd¡¯), ¡®Y¡¯,¡¯Y¡¯,¡¯
 
Y¡¯,¡¯Y¡¯,¡®Y¡¯,¡¯Y¡¯,¡¯Y¡¯,¡¯Y¡¯,¡¯Y¡¯,¡¯Y¡¯,¡¯Y¡¯,¡¯Y¡¯,¡¯Y¡¯,¡¯Y¡¯) ;
 
Query OK, 1 row affected (0.00 sec)

localhostÀÇ new-user¶ó´Â »ç¿ëÀÚ°¡ newpasswd¶ó´Â ¾ÏÈ£¿Í ¸ðµç ±ÇÇÑÀ¸·Î Ãß°¡µÇ¾ú´Ù. ¸ðµç ±ÇÇÑÀ» ÁÖ°í ½ÍÁö ¾Ê´Ù¸é, ÁÖ°í ½ÍÁö ¾ÊÀº ±ÇÇÑ ºÎºÐÀ» ¡®Y¡¯À¸·Î ÇÏ¸é µÈ´Ù.

¸¸¾à SELECT, INSERT, DELETE¿¡ ´ëÇÑ ±ÇÇѸ¸À» ÁÖ°í ½Í´Ù¸é

mysql> INSERT INTO user (host, user,password, Select_priv,
 
       Insert_priv, Delete_priv)
 
-> VALUES (¡®localhost¡¯, ¡®new-user¡¯,password(¡®newpasswd¡¯),
 
¡¯Y¡¯,¡¯Y¡¯,¡¯Y¡¯) ; 

ó·³ ÇÏ¸é ´Ù¸¥ ±ÇÇÑÀº ¸ðµÎ ÀÚµ¿À¸·Î ¡®N¡¯ÀÌ µÈ´Ù. »ç¿ëÀÚ Ãß°¡´Â INSERT¿Ü¿¡ GRANT¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù.

mysql> GRANT ALL PRIVILEGES ON *.* TO new-user@localhostI
 
DENTIFIED BY ¡®newpasswd¡¯ WITH GRANT OPTION ;

À§´Â localhostÀÇ new-user°¡ newpasswd¶ó´Â ¾ÏÈ£·Î ¸ðµç ±ÇÇÑÀ» °®´Â´Ù´Â °ÍÀ» ³ªÅ¸³½´Ù.

mysql> GRANT RELOAD, PROCESS ON *.* TO new-user@localhost ;

´Â localhostÀÇ new-user°¡ RELOAD¿Í PROCESSÀÇ ±ÇÇÑÀ» °®´Â´Ù´Â ³ªÅ¸³½´Ù.

INSERT¿Í GRANT Áß ¾î´À °ÍÀ» ½áµµ »ó°ü¾ø´Ù.

À§¿¡¼­ ±ÇÇÑÀÌ ¹Ù²î¸é mysqladmin reload¸¦ ÀÌ¿ëÇؼ­ ¹Ù²ï ±ÇÇÑÀ» Àû¿ëÇØ¾ß ÇÑ´Ù°í Çß´Ù. ÇÏÁö¸¸, ´ÙÀ½°ú °°ÀÌ ÇÒ ¼öµµ ÀÖ´Ù.

mysql> FLUSH PRIVILEGES ;

4. ¸¶Ä¡´Â ±Û

Áö±Ý±îÁö MySQLÀÇ Æ¯Â¡°ú ¼³Ä¡¹ý, ¼³Á¤ ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ º¸¾Ò´Ù. ´ÙÀ½ ½Ã°£¿¡´Â SQL ¾ð¾î¿¡ ´ëÇؼ­ °øºÎ¸¦ ÇÑ´Ù. ±ÛÀ» ÀÐÀ¸¸é¼­ ¸ð¸£´Â Á¡ÀÌ ÀÖ´Ù¸é ¼­½¿Ä¡ ¸»°í ÇÊÀÚ¿¡°Ô ¸ÞÀÏÀ» º¸³»Áֱ⠹ٶõ´Ù.

¸¶Áö¸·À¸·Î ¾ÏÈ£¸¦ ÀØ¾î ¹ö·ÈÀ» °æ¿ì, ¾î¶»°Ô ÇØ°áÇÒ Áö¿¡ ´ëÇؼ­ ¼³¸íÀ» ÇÏ°Ú´Ù. ¾ÏÈ£¸¦ Àؾî¹ö¸®°í¼­, ³­°¨ÇØ ÇÏ´Â »ç¶÷µéÀ» ¸¹ÀÌ ºÃ´Ù. °Ô Áß¿¡´Â ¾Æ¿¹ MySQLÀ» Áö¿ì°í »õ·Î ¼³Ä¡ÇÏ´Â »ç¶÷µµ ÀÖ´Ù. ½Ã°£ÀÌ ³²´Â »ç¶÷À̶ó¸é »õ·Î ¼³Ä¡Çصµ µÇ°ÚÁö¸¸, ½Ã°£ÀÌ ³²¾Æµµ Áß¿äÇÑ µ¥ÀÌŸ°¡ ÀÖÀ» °æ¿ì´Â »õ·Î ±òÁö ¸øÇÒ °ÍÀÌ´Ù. ÀÌ·± °æ¿ì ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.

¸ÕÀú MySQL µ¥¸óÀÌ ½ÇÇà ÁßÀ̶ó¸é, µ¥¸óÀÇ ½ÇÇàÀ» ÁßÁöÇÑ´Ù. ±×ÈÄ, µ¥¸óÀ» ´Ù½Ã ½ÇÇà½ÃÅ°´Âµ¥, ±ÇÇÑ¿¡ ´ëÇÑ °Ë»ç¸¦ ÇÏÁö ¾Ê°í ½ÇÇàÀ» ½ÃŲ´Ù.

% safe_mysqld -Sg &

-Sg°¡ ¹Ù·Î ±ÇÇÑ °Ë»ç¸¦ ÇÏÁö ¾Ê´Â´Ù´Â ¿É¼ÇÀÌ´Ù. ÀÌÁ¦ mysqlÀ» ÀÌ¿ëÇؼ­ ¾ÏÈ£¸¦ Á¦°ÅÇØ ÁÖ¸é µÈ´Ù. ±×ÈÄ mysqladmin reload¸¦ ÀÌ¿ëÇؼ­ ¹Ù²ï ±ÇÇÑÀ» Àû¿ëÇØÁÖ°í ´Ù½Ã µ¥¸óÀ» ½ÇÇà½ÃÅ°¸é µÈ´Ù.

[ ÇÊÀÚ¼Ò°³ ] ÇãÁ¤¼ö´ÔÀº ¼þ½Ç´ëÇб³ ÄÄÇ»ÅÍÇкο¡ ÀçÇÐÁßÀÌ¸ç ¸®´ª½º Æ÷Ä¿½º ÀÚ¿øºÀ»çÀڷεµ È°µ¿ÇÏ°í ÀÖ´Ù. ¸®´ª½º Ä¿³Î°ú µ¥ÀÌŸº£À̽º¿¡ °ü½ÉÀÌ ¸¹´Ù°í ÇÑ´Ù.