Oracle/MySQL °ü·Ã °Ô½ÃÆÇ

2002/08/05(10:34) from 210.117.182.162
ÀÛ¼ºÀÚ : °­ÁÙ±â (jkkang65@hanmail.net) Á¶È¸¼ö : 35321 , ÁÙ¼ö : 5962
Re: [MySQL] C API
## ¿øº» : mysql 3.21 Reference Manual PostScript ¸Å´º¾ó
(ÇöÀç ÃֽŠ¸Å´º¾óÀº 3.22 ·¹ÆÛ·±½º ¸Å´º¾óÀ̸ç 3.22.14b-gammaÀÔ´Ï´Ù.)

5, 6, 9, 10, 11, 12, 13, 15, 17, 18Àå ¹ø¿ª : ¹®ÅÂÁØ(taejun@hitel.net)
18Àå Áß C-API ºÎºÐ ¹ø¿ª : ±Ç¿ëÂù (golmong@cre.co.kr)


À̸ÞÀÏ : taejun@hitel.net, taejun@taejun.pe.kr
À¥ : http://taejun.pe.kr (Mysql °ü·Ã ÀÚ·á°¡ ¸ð¾ÆÁ® ÀÖ½À´Ï´Ù)

ÀڷḦ °øÀ¯Çϱâ ÆíÇϵµ·Ï ȨÆäÀÌÁö¸¦ ¿­¾ú½À´Ï´Ù.
¸¹ÀÌ ¾Ö¿ëÇØÁÖ½Ã¸é °¨»ç~ÇÏ°Ú½À´Ï´Ù.


°³ÀÎÀûÀÎ Áú¹®Àº °¢ Åë½Å¸ÁÀÇ ¸®´ª½º µ¿È£È¸³ª ÀÎÅͳÝÀ» Âü°íÇϼ¼¿ä.

**·Î ¹­ÀÎ °ÍÀº Á¦°¡ ÁÖ¸¦ ´Ü °ÍÀÔ´Ï´Ù.

¼³Ä¡¿Í °ü·ÃµÈ ºÎºÐÀº kldp.orgÀÇ database Ç׸ñ¿¡¼­ °ü·ÃµÈ Á¤º¸°¡ ÀÖÀ¸¹Ç·Î Âü°íÇÏ½Ã¸é µË´Ï´Ù.



0. ¸ñÂ÷
1. MySQL ÀÏ¹Ý Á¤º¸
2. MySQL ¸ÞÀϸµ ¸®½ºÆ® ¹× Áú¹® ¿äû ¹æ¹ý, ¿¡·¯(¹ö±×) ¾Ë¸®±â
3. ¶óÀ̼¾½Ì / mysql¿¡ ÁöºÒÇØ¾ß ÇÒ °æ¿ì
4. mysql ¼³Ä¡
5. mysqlÀÇ Ç¥ÁØ È£È¯¼º
6. mysql Á¢±Ù ±ÇÇÑ ½Ã½ºÅÛ
7. mysql ¾ð¾î ·¹ÆÛ·±½º
8. SQL ÁúÀÇ ¿¹Á¦
9. mysql ¼­¹ö ±â´É
10. mysqlÀÇ ÃÖ´ë ¼º´É Çâ»ó ¹æ¹ý
11. mysql º¥Ä¡¸¶Å©
12. mysql À¯Æ¿¸®Æ¼
13. Å×À̺í À¯Áöº¸¼ö ¹× ÆÄ¼Õ º¹±¸¿¡ isamchk »ç¿ëÇϱâ
14. mysql¿¡ »õ·Î¿î ±â´É Ãß°¡
15. mysql ODBC Áö¿ø
16. ÀϹÝÀûÀÎ ¹®Á¦ ¹× ¿¡·¯
17. ÀϹÝÀûÀÎ ¹®Á¦ ÇØ°á ¹æ¹ý
18. mysql Ŭ¶óÀ̾ðÆ® Åø°ú API
19. ´Ù¸¥ µ¥ÀÌÅͺ£À̽º¿Í ºñ±³

ºÎ·Ï A ; MYSQL »ç¿ëÀÚ
ºÎ·Ï B ; °³¹ß ÇÁ·Î±×·¥
ºÎ·Ï C ;MYSQL °³¹ßÀÚ
ºÎ·Ï D ; MYSQL ¹öÀü¾÷ ¿ª»ç
ºÎ·Ï E ; MYSQLÀÇ ¾Ë·ÁÁø ¿¡·¯ ¹× ¼³°è¿¡¼­ ºÎÁ·ÇÑ ºÎºÐ
ºÎ·Ï F ; MYSQL¿¡ Àå·¡ Ãß°¡ÇÒ³»¿ë(The TODO)
ºÎ·Ï G ; ´Ù¸¥ ½Ã½ºÅÛ¿¡ Æ÷ÆÃÇϱâ
ºÎ·Ï H ; MYSQL Á¤±ÔÇ¥Çö½Ä ¼³¸í
ºÎ·Ï I ; Unireg ¼³¸í
ºÎ·Ï J ; ºñMS ¿î¿µÃ¼Á¦¿¡¼­ MYSQL ¼­¹ö ¶óÀ̼¾½º
ºÎ·Ï K ; MS ¿î¿µÃ¼Á¦¿¡¼­ MYSQL ¶óÀ̼¾½º
SQL ¸í·É, ŸÀÔ, ÇÔ¼ö À妽º
°³³ä À妽º

1. MySQL ÀÏ¹Ý Á¤º¸
1.1 MYSQLÀº ¹«¾ùÀΰ¡?
1.2 ¸Å´º¾ó¿¡ °üÇÏ¿©
      1.2.1 ¸Å´º¾ó¿¡¼­ ¾²ÀÎ ±ÔÁ¤
1.3 MYSQL ¿ª»ç
1.4 ÁÖ¿äƯ¡
1.5 ¾ÈÁ¤¼º
1.6 2000³â ¹®Á¦
1.7 ÀϹÝÀûÀÎ SQL Á¤º¸ ¹× Âü°íÀÚ·á
1.8 °ü·Ã ¸µÅ©

2. MySQL ¸ÞÀϸµ ¸®½ºÆ® ¹× Áú¹® ¿äû ¹æ¹ý, ¿¡·¯(¹ö±×) ¾Ë¸®±â
2.1 mysql ¸ÞÀϸµ ¸®½ºÆ®
2.2 Áú¹®Çϱâ, ¹ö±× ¾Ë¸®±â
2.3 ¹ö±×³ª ¹®Á¦¸¦ ¾Ë¸®´Â ¹æ¹ý
      2.3.1 mysqlÀÌ ¼Õ»óµÇ¾úÀ»¶§
2.4 ¸ÞÀϸµ¸®½ºÆ®¿¡¼­ Áú¹® ´äº¯¿¡ ´ëÇÑ ¾È³»

3. ¶óÀ̼¾½Ì / mysql¿¡ ÁöºÒÇØ¾ß ÇÒ °æ¿ì
3.1 mysql ºñ¿ë
3.2 »ó¾÷ÀûÀÎ Áö¿ø ¹æ´Â ¹æ¹ý
      3.2.1 ±âº» À̸ÞÀÏ Áö¿ø
      3.2.2 È®Àå À̸ÞÀÏ Áö¿ø
      3.2.3 login Áö¿ø
      3.2.4 È®Àå login Áö¿ø

3.3 ¶óÀ̼¾½ÌÀ̳ª Áö¿ø¿¡ ÁöºÒÇÏ´Â ¹æ¹ý
3.4 ¶óÀ̼¾½Ì/Áö¿ø °ü·Ã Á¤º¸ ´ã´çÀÚ
3.5 »ç¿ëÀÚ ÀúÀÛ±Ç °ü·Ã
3.6 mysql¿¡ ¿ä±ÝÀ» ³»Áö ¾Ê°í »ó¾÷ÀûÀ¸·Î ÆǸÅÇÏ´Â °æ¿ì
3.7 mysqlÀ» »ç¿ëÇØ¾ß ¼³Á¤ÇÒ ¼ö ÀÖ´Â Á¦Ç°À» ÆǸÅÇÏ´Â °æ¿ì
3.8 mysqlÀ» »ç¿ëÇÏ¿© »ó¾÷ÀûÀÎ À¥ ¼­¹ö¸¦ ¿î¿µÇÏ´Â °æ¿ì
3.9 »ó¾÷¿ë Perl/Tcl/PHP/±âŸ ¾ÖÇø®ÄÉÀ̼ÇÀ» ÆǸÅÇÏ´Â °æ¿ì
3.10 ¾ÕÀ¸·ÎÀÇ ¶óÀ̼¾½Ì º¯È­

4. mysql ¼³Ä¡
4.1 mysql ±¸Çϱâ
4.2 mysql¿¡¼­ Áö¿øÇÏ´Â ¿î¿µÃ¼Á¦
4.3 »ç¿ëÇÒ ¼ö ÀÖ´Â mysql ¹öÀü
4.4 ¾÷µ¥ÀÌÆ® ¹æ¹ý ¹× ½Ã±â
4.5 ¼³Ä¡ °³°ý
4.6 ¹ÙÀ̳ʸ®·Î ¼³Ä¡Çϱâ
      4.6.1 Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ ¸¸µé±â
      4.6.2 ½Ã½ºÅÛ °ü·Ã Âü°í»çÇ×
              4.6.2.1 ¸®´ª½º
              4.6.2.2 HP-UX
4.7 ¼Ò½º·Î ¼³Ä¡Çϱâ
      4.7.1 ºü¸¥ ¼³Ä¡
      4.7.2 ÆÐÄ¡ Àû¿ëÇϱâ
      4.7.3 ÀÏ¹Ý ¼³Á¤ ¿É¼Ç
4.8 ÄÄÆÄÀÏ¿¡¼­ ¹®Á¦Á¡ÀÌ »ý±æ¶§
4.9 MIT-pthreads ÁÖÀÇ»çÇ×
4.10 ÆÞ ¼³Ä¡
      4.10.1 ÆÞ DBI/DBD ÀÎÅÍÆäÀ̽º »ç¿ë½Ã ¹®Á¦Á¡
4.11 ½Ã½ºÅÛ °ü·Ã Âü°í»çÇ×
      -¼Ö¶ó¸®½º, ¼Ö¶ó¸®½º x86, ¼±OS4, ¾ËÆÄ-DEC-À¯´Ð½º, ¾ËÆÄ-DEC-OSF1,
       SGI-IRIX, FreeBSD, BSD/OS 2, SCO, SCO Unixware 7.0, IBM-AIX, HP-UX
      -¸®´ª½º : ¸®´ª½º-x86, ·¹µåÇÞ 5.0/5.1, ¸®´ª½º-½ºÆÅ,¸®´ª½º-¾ËÆÄ,MkLinux
       ¸®´ª½º RPM
4.12 TcX ¹ÙÀ̳ʸ®
4.13 Win32 °ü·Ã»çÇ×
4.14 ¼³Ä¡ÈÄ ¼Â¾÷ ¹× Å×½ºÆ®
      4.14.1 mysql_install_db ½ÇÇà½Ã ¹®Á¦Á¡
      4.14.2 mysql ¼­¹ö ½ÇÇà½Ã ¹®Á¦Á¡
      4.14.3 ÀÚµ¿ ½ÃÀÛ/Á¤Áö ½ÃÅ°±â
      4.14.5 ¿É¼Ç ÆÄÀÏ
4.15 ¾÷±×·¹À̵å/´Ù¿î±×·¹À̵åÇÒ¶§ÀÇ ÁÖÀÇ»çÇ×
      4.15.1 3.21¿¡¼­ 3.22·Î ¾÷±×·¹À̵å
      4.15.2 3.20¿¡¼­ 3.21·Î ¾÷±×·¹À̵å
      4.15.3 ´Ù¸¥ ¾ÆÅ°ÅØÃÄ·Î ¾÷±×·¹À̵å

5. mysqlÀÇ Ç¥ÁØ È£È¯¼º
5.1 mysqlÀÇ ANSI SQL92 È®Àå ºÎºÐ
5.2 mysql¿¡¼­ ºüÁø ±â´É
      5.2.1 sub-selects
      5.2.2 SELECT INTO TABLE
      5.2.3 Æ®·£Àè¼Ç
      5.2.4 ÀúÀå ÇÁ·Î½ÃÁ®/Æ®¸®°Å
      5.2.5 ¿Ü·¡Å°
              5.2.5.1 ¿Ü·¡Å° »ç¿ëÇÏÁö ¾Ê´Â ÀÌÀ¯
      5.2.6 ºä
      5.2.7 '--' ·Î ÁÖ¼®¹® ½ÃÀÛ
5.3 mysql¿¡¼­ µû¸£°í Àִ ǥÁØ
5.4 BLOB/TEXT ŸÀÔÀÇ Á¦ÇÑ»çÇ×
5.5 COMMIT-ROLLBACK ¾øÀÌ »ç¿ëÇÏ´Â ¹æ¹ý

6. mysql Á¢±Ù ±ÇÇÑ ½Ã½ºÅÛ
6.1 Á¢±Ù ±ÇÇÑ ½Ã½ºÅÛÀ̶õ ¹«¾ùÀΰ¡
6.2 mysql ¼­¹ö¿¡ ¿¬°áÇϱâ
      6.2.1 ºñ¹Ð¹øÈ£¸¦ ¾ÈÀüÇÏ°Ô À¯ÁöÇϱâ
6.3 mysql¿¡¼­ Á¦°øÇÏ´Â ±ÇÇÑ
6.4 ±ÇÇÑ ½Ã½ºÅÛ ÀÛµ¿ ¹æ½Ä
6.5 Á¢±Ù Á¦¾î 1 : ¿¬°É ÀÎÁõ
6.6 Á¢±Ù Á¦¾î 2 : ¿äû ÀÎÁõ
6.7 ±ÇÇѺ¯°æ½Ã Àû¿ë ¹æ¹ý
6.8 Ãʱâ mysql ±ÇÇÑ ¼³Á¤
6.9mysql¿¡ »õ·Î¿î »ç¿ëÀÚ ±ÇÇÑ Ãß°¡
6.10 ºñ¹Ð¹øÈ£ ¼³Á¤ ¹æ¹ý
6.11 Á¢±Ù ±ÝÁö ¿¡·¯°¡ ³ª´Â ÀÌÀ¯
6.12 Å©·¢Ä¿¿¡ ´ëºñÇÏ¿© mysqlÀ» ¾ÈÀüÇÏ°Ô ¸¸µå´Â ¹æ¹ý

7. mysql ¾ð¾î ·¹ÆÛ·±½º
7.1 ¹®ÀÚ : ¹®ÀÚ¿­°ú ¼ýÀÚ ±â·ÏÇϱâ
      7.1.1 ¹®ÀÚ¿­
      7.1.2 ¼ýÀÚ
      7.1.3 NULL °ª
      7.1.4 µ¥ÀÌÅͺ£À̽º, Å×À̺í, À妽º, Ä÷³, ¾Ë¸®¾Æ½º À̸§
              7.1.4.1 À̸§¿¡¼­ ´ë¼Ò¹®ÀÚ ±¸º°
7.2 Ä÷³ ŸÀÔ
      7.2.1 Ä÷³ ŸÀÔ ÀúÀå ¿ä±¸·®
      7.2.2 ¼ýÀÚ Å¸ÀÔ
      7.2.3 ³¯Â¥/½Ã°£ ŸÀÔ
              7.2.3.1 DATETIME, DATE, TIMESTAMP ŸÀÔ
              7.2.3.2 TIME ŸÀÔ
              7.2.3.3 YEAR ŸÀÔ
      7.2.4 ¹®ÀÚ¿­ ŸÀÔ
              7.2.4.1 CHAR, VARCHAR ŸÀÔ
              7.2.4.2 BLOB, TEXT ŸÀÔ
              7.2.4.3 ENUM ŸÀÔ
              7.2.4.4 SET ŸÀÔ
      7.2.5 Ä÷³¿¡ ÀûÀýÇÑ Å¸ÀÔ °í¸£±â
      7.2.6 Ä÷³ À妽º
      7.2.7 ´ÙÁß Ä÷³ À妽º
      7.2.8 ´Ù¸¥ µ¥ÀÌÅͺ£À̽º ¿£ÁøÀÇ Ä÷³ ŸÀÔ »ç¿ë
7.3 SELECT ¿Í WHERE ¹®¿¡¼­ÀÇ ÇÔ¼ö(functions)
      7.3.1 ±×·ì(Group)À¸·Î ¹­´Â ±â´É
      7.3.2 »ê¼ú¿¬»êÀÚ
      7.3.3 ºñÆ®(Bit) ÇÔ¼ö
      7.3.4 ³í¸®(logical) ¿¬»êÀÚ
      7.3.5 ºñ±³ ¿¬»êÀÚ
      7.3.6 ¹®ÀÚ¿­ ºñ±³ ÇÔ¼ö
      7.3.7 È帧 Á¦¾î(control flow) ÇÔ¼ö
      7.3.8 »ê¼ú ÇÔ¼ö
      7.3.9 ¹®ÀÚ¿­ ÇÔ¼ö
      7.3.10 ³¯Â¥/½Ã°£ ÇÔ¼ö
      7.3.11 ±âŸ ÇÔ¼ö
      7.3.12 GROUP BY ¹®¿¡¼­ »ç¿ëÇÏ´Â ÇÔ¼ö
7.4 CREATE DATABASE
7.5 DROP DATABASE
7.6 CREATE DATABASE
      7.6.1 ÀÚµ¿ Ä÷³ º¯È¯
7.7 ALTER TABLE
7.8 OPTIMIZE TABLE
7.9 DROP TABLE
7.10 DELETE
7.11 SELECT
7.12 JOIN
7.13 INSERT
7.14 REPLACE
7.15 LOAD DATA INFILE
7.16 UPDATE
7.17 USE
7.18 FLUSH(ij½¬ »èÁ¦)
7.19 KILL
7.20 SHOW(Å×À̺í, Ä÷³ Á¤º¸ ¾ò±â)
7.21 EXPLAIN(SELECT °ü·Ã Á¤º¸ ¾ò±â)
7.22 DESCRIBE(Ä÷³ Á¤º¸ ¾ò±â)
7.23 LOCAK TABLES/UNLOCK TABLES
7.24 SET OPTION
7.25 GRANT / REVOKE
7.26 CREATE INDEX(ȣȯ¼º ±â´É)
7.27 DROP INDEX(ȣȯ¼º ±â´É)
7.28 ÁÖ¼®
7.29 CREATE FUNCTION/DROP FUNCION
7.30 ¿¹¾àµÈ ¹®ÀÚ »ç¿ëÇÏ´Â °æ¿ì

8. SQL ÁúÀÇ ¿¹Á¦
      8.1 twin project¿¡¼­ÀÇ ÁúÀÇ
              8.1.1 Find all non-distributed twins
              8.1.2 Show a table on twin pair status

9. mysql ¼­¹ö ±â´É
      9.1 mysql¿¡¼­ Áö¿øÇÏ´Â ¾ð¾î
              9.1.1 µ¥ÀÌÅÍ¿Í Á¤¿­¿¡ »ç¿ëÇÏ´Â ¹®ÀÚ ¼Â
              9.1.2 »õ·Î¿î ¹®Àڼ Ãß°¡
              9.1.3 ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ Áö¿ø
      9.2 ¾÷µ¥ÀÌÆ® ·Î±×
      9.3 mysql Å×À̺í ÃÖ´ë Å©±â

10. mysqlÀÇ ÃÖ´ë ¼º´É Çâ»ó ¹æ¹ý
10.1 ¹öÆÛ Å©±â Á¶Á¤
10.2 ¸Þ¸ð¸® »ó¿ë ¹æ¹ý
10.3 ¼Óµµ Çâ»ó¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ÄÄÆÄÀÏ/¸µÅ© ¹æ¹ý
10.4 À妽º »ç¿ë¹æ¹ý
10.5 WHERE ¹®¿¡¼­ ÃÖÀûÈ­Çϱâ
10.6 Å×ÀÌºí ¿­°í ´Ý´Â ¹æ¹ý
      10.6.1 µ¥ÀÌÅͺ£À̽º¿¡¼­ ¸¹Àº ¼öÀÇ Å×À̺íÀ» ¸¸µé¶§ÀÇ ´ÜÁ¡
10.7 ¸¹Àº Å×À̺íÀ» ¿©´Â ÀÌÀ¯
10.8 µ¥ÀÌÅͺ£À̽º¿Í Å×ÀÌºí¿¡¼­ ½Éº¼¸µ ¸µÅ© »ç¿ë
10.9 Å×ÀÌºí¿¡ ¶ô °Å´Â ¹æ¹ý
10.10 Å×À̺íÀ» ºü¸£°í ÀÛ°Ô ¹è¿­ÇÏ´Â ¹æ¹ý
10.11 INSERT ¹®¿¡¼­ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ºÎºÐ
10.12 DELETE ¹®¿¡¼­ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ºÎºÐ
10.13 mysql¿¡¼­ ÃÖ´ë ¼Óµµ¸¦ ¾ò´Â ¹æ¹ý
10.14 ·Î¿ì Æ÷¸Ë°ú ´Ù¸¥ Á¡Àº ¹«¾ùÀΰ¡? ¾ðÁ¦ VARCHAR/CHARÀ» »ç¿ëÇØ¾ß Çϴ°¡?

11. mysql º¥Ä¡¸¶Å©

12. mysql À¯Æ¿¸®Æ¼
      12.1 ¼­·Î ´Ù¸¥ mysql ÇÁ·Î±×·¥ °³°ý
      12.2 ÅؽºÆ® ÆÄÀÏ¿¡¼­ µ¥ÀÌÅÍ °¡Á®¿À±â
      12.3 mysql ¾ÐÃà Àбâ Àü¿ë Å×ÀÌºí »ý¼º±â

13. Å×À̺í À¯Áöº¸¼ö ¹× ÆÄ¼Õ º¹±¸¿¡ isamchk »ç¿ëÇϱâ
      13.1 isamchk ¸í·É¾î »ç¿ë¹ý
      13.2 isamchk ¸Þ¸ð¸® »ç¿ë¹ý
      13.3 Å×À̺í À¯Áöº¸¼ö ¼³Á¤
      13.4 Å×ÀÌºí¿¡¼­ Á¤º¸ ¾ò±â
      13.5 ÆÄ¼Õ º¹±¸¿¡ isamchk »ç¿ëÇϱâ
              13.5.1 ¿¡·¯°¡ ³µÀ»¶§ Å×À̺í Á¡°Ë ¹æ¹ý
              13.5.2 Å×ÀÌºí º¹±¸ ¹æ¹ý
              13.5.3 Å×À̺í ÃÖÀûÈ­Çϱâ

14. mysql¿¡ »õ·Î¿î ±â´É Ãß°¡
      14.1 »õ·Î¿î »ç¿ëÀÚ Á¤ÀÇ ±â´É Ãß°¡
              14.1.1 UDF calling sequences
              14.1.2 Argument processing
              14.1.3 Return values and error handling
              14.1.4 »ç¿ëÀÚ Á¤ÀÇ ±â´É ÄÄÆÄÀÏ ¹× ¼³Ä¡Çϱâ

      14.2 »õ·Î¿î native ±â´É Ãß°¡

15. mysql ODBC Áö¿ø
      15.1 MyODBC°¡ Áö¿øÇÏ´Â ¿î¿µÃ¼Á¦
      15.2 MyODBC¿¡ ¹®Á¦°¡ ÀÖÀ»¶§
      15.3 MyODBC¿Í ÀÛµ¿ÇÏ´Â ÇÁ·Î±×·¥
      15.4 ODBC °ü¸®ÀÚ ÇÁ·Î±×·¥ ¼³Á¤ ¹æ¹ý
      15.5 ODBC¿¡¼­ AUTO_INCREMENT Ä÷³ÀÇ °ª °¡Á®¿À±â

16. ÀϹÝÀûÀÎ ¹®Á¦ ¹× ¿¡·¯
      16.1 mysql »ç¿ë½Ã ÀϹÝÀûÀÎ ¿¡·¯
              16.1.1 mysql ¼­¹ö°¡ ¸ÀÀÌ °£ °æ¿ì
              16.1.2 local mysql ¼­¹ö¿¡ Á¢¼ÓÀÌ ¾ÈµÇ´Â °æ¿ì
              16.1.3 Host '...' is blocked ¿¡·¯
              16.1.4 Out of Memory ¿¡·¯
              16.1.5 Packet too large ¿¡·¯
              16.1.6 The table is full ¿¡·¯
              16.1.7 Commands out of sync ¿¡·¯(Ŭ¶óÀ̾ðÆ®)
              16.1.8 Ignoring user ¿¡·¯
              16.1.9 Table 'xxx' doesn't exist ¿¡·¯
      16.2 mysql¿¡¼­ µð½ºÅ©°¡ ²Ë áÀ»¶§
      16.3 ÅؽºÆ® ÆÄÀÏ¿¡¼­ SQL ¹®Àå ½ÇÇàÇϱâ
      16.4 mysql¿¡¼­ Àӽà ÆÄÀÏÀ» ÀúÀåÇÏ´Â °÷
      16.5 /tmp/mysql.sockÀ» Áö¿öÁöÁö ¾Êµµ·Ï º¸È£ÇÏ´Â ¹æ¹ý
      16.6 Access denied ¿¡·¯
      16.7 ÀÏ¹Ý »ç¿ëÀÚ·Î mysql ½ÇÇàÇϱâ
      16.8 ÆÄÀÏ ÆÛ¹Ì¼Ç ¹®Á¦
      16.9 File not found
      16.10 DATE Ä÷³ »ç¿ëÇÒ¶§ ¹®Á¦
      16.11 °Ë»ö¿¡¼­ ´ë¼Ò¹®ÀÚ ±¸º°
      16.12 NULL °ª¿¡¼­ ¹®Á¦
      16.13 alias¿¡¼­ ¹®Á¦
      16.14 °ü·ÃµÈ Å×ÀÌºí¿¡¼­ ·¹Äڵ带 Áö¿üÀ»¶§
      16.15 ÇØ´çÇÏ´Â ·¹Äڵ尡 ¾øÀ»¶§ ¹®Á¦ ÇØ°á
      16.16 ALTER TABLE ¿¡¼­ ¹®Á¦

17. ÀϹÝÀûÀÎ ¹®Á¦ ÇØ°á ¹æ¹ý
      17.1 µ¥ÀÌÅͺ£À̽º º¹»ç
      17.2 µ¥ÀÌÅͺ£À̽º ¹é¾÷
      17.3 °°Àº ¸Ó½Å¿¡¼­ ¿©·¯°³ÀÇ mysql ¼­¹ö ½ÇÇàÇϱâ

18. mysql Ŭ¶óÀ̾ðÆ® Åø°ú API
      18.1 mysql C API
      18.2 C API Å×ÀÌŸŸÀÔ
      18.3 C API ÇÔ¼ö °³°ý
      18.4 C API ÇÔ¼ö ¼³¸í
              **»ý·«**
              18.4.47 mysql_query()°¡ ¼º°øÇߴµ¥µµ mysql_store_result()
                      °¡ NULLÀ» ¹ÝȯÇÏ´Â °æ¿ì
              18.4.48 ÁúÀÇ¿¡¼­ °á°ú ¾ò´Â ¹æ¹ý
              18.4.49 ¸¶Áö¸·À¸·Î ÀÔ·ÂµÈ unique ID ¾ò´Â ¹æ¹ý
              18.4.50 C API¿Í ¸µÅ©ÇÒ¶§ ¹®Á¦Á¡
              18.4.51 thread-safe Ŭ¶óÀ̾ðÆ® ¸¸µé±â
      18.5 mysql perl API
              18.5.1 DBI with DBD :: mysql
                      18.5.1.1 dbi ÀÎÅÍÆäÀ̽º
                      18.5.1.2 DBI/DBD Ãß°¡ Á¤º¸
      18.6MYSQL ÀÚ¹Ù ¿¬°á(JDBC)
      18.7 mysql PHP API
      18.8 MYSQL C++ API
      18.9 mysql Python API
      18.10 Mysql TCL API

19. ´Ù¸¥ µ¥ÀÌÅͺ£À̽º¿Í ºñ±³
      19.1 mSQL°úÀÇ ºñ±³
              19.1.1 mSQL ÅøÀ» mysql·Î ¿Å±â±â
              19.1.2 msql°ú mysql Ŭ¶óÀ̾ðÆ®/¼­¹ö Åë½Å ÇÁ·ÎÅäÄÝÀÇ Â÷ÀÌÁ¡
              19.1.3 msql 2.0°ú mysqlÀÇ SQL ¹® Â÷ÀÌÁ¡
      19.2 PostgreSQL°úÀÇ ºñ±³


ºÎ·Ï A ; MYSQL »ç¿ëÀÚ
ºÎ·Ï B ; °³¹ß ÇÁ·Î±×·¥
ºÎ·Ï C ;MYSQL °³¹ßÀÚ
ºÎ·Ï D ; MYSQL ¹öÀü¾÷ ¿ª»ç
ºÎ·Ï E ; MYSQLÀÇ ¾Ë·ÁÁø ¿¡·¯ ¹× ¼³°è¿¡¼­ ºÎÁ·ÇÑ ºÎºÐ
ºÎ·Ï F ; MYSQL¿¡ Àå·¡ Ãß°¡ÇÒ³»¿ë(The TODO)
ºÎ·Ï G ; ´Ù¸¥ ½Ã½ºÅÛ¿¡ Æ÷ÆÃÇϱâ
ºÎ·Ï H ; MYSQL Á¤±ÔÇ¥Çö½Ä ¼³¸í
ºÎ·Ï I ; Unireg ¼³¸í
ºÎ·Ï J ; ºñMS ¿î¿µÃ¼Á¦¿¡¼­ MYSQL ¼­¹ö ¶óÀ̼¾½º
ºÎ·Ï K ; MS ¿î¿µÃ¼Á¦¿¡¼­ MYSQL ¶óÀ̼¾½º
SQL ¸í·É, ŸÀÔ, ÇÔ¼ö À妽º
°³³ä À妽º
5. mysqlÀÇ Ç¥ÁØ È£È¯¼º

5.1 mysqlÀÇ ANSI SQL92 È®ÀåºÎºÐ
mysql¿¡´Â ´Ù¸¥ sql µ¥ÀÌÅͺ£À̽º¿¡¼­ ãÀ» ¼ö ¾ø´Â È®ÀåµÈ ºÎºÐÀÌ ÀÖ´Ù. ÀÌ·± ºÎºÐÀ» »ç¿ë
ÇÏ´Â °æ¿ì ÁÖÀÇÇØ¾ß ÇÑ´Ù. ¿Ö³Ä¸é  mysql¿¡¼­ »ç¿ëÇÑ Äڵ尡 ´Ù¸¥  SQL ¼­¹ö¿¡ Æ÷ÆÃÇÒ ¼ö
¾øÀ» ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. ¾î¶² °æ¿ì¿¡´Â /*! ... */ Çü½ÄÀÇ ÁÖ¼®¹®À» »ç¿ëÇÑ MYSQL È®ÀåÀ»
ÀÌ¿ëÇØ Æ÷Æð¡´ÉÇÑ Äڵ带 ¸¸µé ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾îº¸ÀÚ:

SELECT /*! STRAIGHT_JOIN */ col_name from table1,table2 WHERE ...

MYSQLÀÇ È®Àå ºÎºÐÀº ´ÙÀ½°ú °°´Ù:
- ÇʵåŸÀÔ MEDIUMINT, SET, ENUM , ±×¸®°í ´Ù¸¥ BLOB ¿Í TEXT ŸÀÔ.
- Çʵå¼Ó¼º AUTO_INCREMENT, BINARY, UNSIGNED and ZEROFILL.
- ¸ðµç ¹®ÀÚ¿­ ºñ±³´Â ±âº»ÀûÀ¸·Î  ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾ÊÀ¸¸ç ÇöÀçÀÇ  ¹®ÀÚ¼Â(±âº»ÀûÀ¸·Î
ISO-8859-1 Latin1)¿¡ ÀÇÇØ Á¤·Ä ¼ø¼­°¡ °áÁ¤µÈ´Ù. ÀÌ°ÍÀ» ¿øÇÏÁö ¾ÊÀ¸¸é  Ä÷³À» BINARY
¼Ó¼ºÀ¸·Î Á¤ÀÇÇØ¾ß Çϸç ÀÌ·± °æ¿ì¿¡´Â mysql ¼­¹ö È£½ºÆ®°¡ »ç¿ëÇÏ´Â ASCII ¼ø¼­¿¡ µû¶ó
¹®ÀÚ¿­À» ºñ±³ÇÑ´Ù.
- MYSQLÀº µ¥ÀÌÅͺ£À̽º¸¦ µð·ºÅ丮·Î ¸¸µé°í Å×À̺íÀº ÆÄÀÏÀ̸§À¸·Î ¸¸µç´Ù. ÀÌ°ÍÀº µÎ
°¡Áö¸¦ ÇÔÃàÇÏ°í ÀÖ´Ù:
  ¤· ÆÄÀÏÀ̸§ÀÇ ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏ´Â (´ëºÎºÐÀÇ  À¯´Ð½º ½Ã½ºÅÛ. ¸®´ª½ºµµ ¸¶Âù°¡Áö°ÚÁö
   ¿ë~) ¿î¿µ  ½Ã½ºÅÛ¿¡¼­´Â MYSQLÀÇ µ¥ÀÌÅͺ£À̽º À̸§°ú  Å×À̺í À̸§Àº ´ë¼Ò¹®ÀÚ¸¦
   ±¸º°ÇÑ´Ù. Å×À̺í À̸§À» ±â¾ïÇϴµ¥ ¹®Á¦°¡ ÀÖ´Ù¸é ¸ðµç °ÍÀ» ¼Ò¹®ÀÚ·Î ¸¸µéÀÚ.
  ¤· Å×À̺íÀÇ ¹é¾÷, À̸§¹Ù²Ù±â, ¿Å±â±â, »èÁ¦,  º¹»ç¸¦ À§ÇØ Ç¥ÁØ ½Ã½ºÅÛ ¸í·ÉÀ»  »ç¿ëÇÒ
   ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î Å×À̺íÀÇ À̸§À» ¹Ù²Ù·Á¸é  ÇØ´çÇÏ´Â Å×À̺íÀÇ `.ISD', `.ISM' and
   `.frm' ÆÄÀÏÀÇ À̸§À» ¹Ù²Ù¸é µÈ´Ù.
- SQL¹®¿¡¼­ db_name.tbl_name ¹®À» ÀÌ¿ëÇÏ¿©  ´Ù¸¥ µ¥ÀÌÅͺ£À̽ºÀÇ Å×ÀÌºí¿¡ Á¢±ÙÇÒ  ¼ö
ÀÖ´Ù. ÀϺΠSQL ¼­¹ö´Â °°Àº ±â´ÉÀ» Áö¿øÇÏÁö¸¸ ÀÌ°ÍÀ» User space¶ó°í ºÎ¸¥´Ù. MYSQLÀº
´ÙÀ½°ú  °°Àº  TABLESPACES¸¦  Áö¿øÇÏÁö  ¾Ê´Â´Ù  :  create  table  ralph.my_table...IN
my_tablespace.
- ¼öÄ¡(¼ýÀÚÇü) Ä÷³¿¡¼­ LIKE¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- SELECT¹®¿¡¼­   INTO OUTFILE  °ú  STRAIGHT_JOIN  À» »ç¿ëÇÒ   ¼ö ÀÖ´Ù.  7.11
[SELECT] Âü°í.
-EXPLIAN SELECT´Â Å×ÀÌºí¿¡¼­ ¾î¶»°Ô Á¶ÀÎÀÌ µÇ¾ú´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ º¸¿©ÁØ´Ù.
- Use of index names, indexes on a subpart of a field, and use of INDEX or KEY in a
CREATE TABLE statement. 7.6 [CREATE TABLE] Âü°í.
- ALTER TABLE¿¡¼­ CHANGE col_name, DROP col_name ¶Ç´Â DROP INDEX ¸¦ »ç¿ë
ÇÑ´Ù. 7.7 [ALTER TABLE] Âü°í.
- ALTER TABLE ¹®¿¡¼­ IGNORE »ç¿ë.
- ALTER TABLE ¹®¿¡¼­ ´ÙÁß ADD, ALTER, DROP or CHANGE »ç¿ë
- IF EXISTS Å°¿öµå¸¦ ÀÌ¿ëÇÑ DROP TABLE »ç¿ë.
- ÇÑ Å×À̺í À̻󿡼­ DROP TABLE »ç¿ë.
- LOAD DATA INFILE »ç¿ë. ´ëºÎºÐÀÇ °æ¿ì ÀÌ ¹®ÀåÀº  ¿À¶óŬÀÇ LOAD DATA INFILE
°ú ȣȯµÈ´Ù. 7.15 [LOAD DATA INFILE] Âü°í.
(** ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ ÇѲ¨¹ø¿¡ ÀÔ·ÂÇÒ ¶§ ÀÏÀÏÀÌ INSERT ¹®À» ÇÏ´Â  °Íº¸´Ù ¼Óµµ°¡ ºü
¸£´Ù. **)
- OPTIMIZE TABLE ¹® »ç¿ë.
- ¹®ÀÚ¿­Àº ''' ¸¸ÀÌ ¾Æ´Ï¶ó '"' ¶Ç´Â ''' ·Î ´ÝÀ» ¼ö ÀÖ´Ù.
- escape `\' ¹®ÀÚ »ç¿ë.
- SET OPTION ¹®. 7.24 [SET OPTION] Âü°í.
- GROUP BY ºÎºÐ¿¡¼­ ¸ðµç Ä÷³À» »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ·¯ÇÑ  ±â´ÉÀº ÀϹÝÀûÀÎ ÁúÀÇ°¡
¾Æ´Ñ ƯÁ¤ÇÑ ÁúÀÇ¿¡¼­ ¼º´ÉÀ» Çâ»ó½ÃŲ´Ù. 7.3.12 [GROUP BY Functions] Âü°í.
(** ANSI SQL¿¡¼­´Â ¿©·¯ Å×ÀÔ¹ÉÀ» ÀÌ¿ëÇÏ¿© GROUP  BY¸¦ »ç¿ëÇÒ ¶§ »ç¿ëÇÏ°íÀÚ ÇÏ´Â
¸ðµç Ä÷³¿¡ GROUP BY¸¦ ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô µÇ´Â °æ¿ì ºÒÇÊ¿äÇÑ ¿¬»êÀÌ ¼öÇàµÉ
¼ö Àִµ¥ MYSQL¿¡¼­´Â ÀÌ·¯ÇÑ °ÍÀ» ¾ø¾Ø °ÍÀÌ´Ù. 7.3.12¸¦ Âü°íÇÑ´Ù **)
- ´Ù¸¥ SQL ȯ°æÀ» »ç¿ëÇß´ø »ç¿ëÀÚ¸¦ À§ÇØ MYSQLÀº ¸¹Àº  ±â´É¿¡¼­ ¾Ë¸®¾Æ½º¸¦ Áö¿øÇÑ
´Ù. ¿¹¸¦ µé¾î ¸ðµç ¹®ÀÚ Æã¼ÇÀº ANSI SQL °ú ODBC ±¸¹®À» Áö¿øÇÑ´Ù.
- MYSQLÀº C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í °°Àº ³í¸®ÀûÀÎ OR °ú AND¸¦ ÀǹÌÇÏ´Â || ¿Í && ¸¦ ÀÎ
½ÄÇÑ´Ù. MYSQL¿¡¼­´Â || ¿Í OR ´Â °°Àº ¸»À̸ç && ¿Í AND µµ ¸¶Âù°¡ÁöÀÌ´Ù. ÀÌ·¯ÇÑ ¹Ì
¹¦ÇÑ ±¸¹®¶§¹®¿¡ MYSQLÀº string  concatenation(¹®ÀÚ¿­ ¿¬°ü, ¿¬°á?)À» À§ÇÑ  ANSI SQL
¿ÀÆÛ·¹ÀÌÅÍÀÎ || À» Áö¿øÇÏÁö ¾Ê´Â´Ù. ´ë½Å CONCAT()¸¦ »ç¿ëÇÑ´Ù. CONCAT() ´Â ¸¹Àº ÀÎ
ÀÚ°¡ À־ MYSQL ¿¡¼­ || ¿ÀÆÛ·¹ÀÌÅÍÀÇ »ç¿ëÀ» º¯È¯Çϱ⠽±´Ù.

MySQL understands the || and && operators to mean logical OR and AND, as in the C
programming language. In  MySQL, ||  and OR are  synonyms, as  are &&  and AND.
Because of this  nice syntax,  MySQL doesn't support  the ANSI  SQL operator  || for
string concatenation; use  CONCAT() instead.  Since CONCAT() takes  any number  of
arguments, it's easy to convert use of the || operator to MySQL.

- Æ÷ÆÃÀÌ °¡´ÉÇϵµ·Ï SQL CODE¿¡¼­  STRAIGHT_JOIN°°Àº MYSQL¸¸ÀÇ Å°¿öµå »ç¿ëÀ»
Áö¿øÇϱâ À§ÇØ ÀÌ·± Å°¿öµå¸¦ /* */ ÁÖ¼®¾È¿¡ ³»ÀåÇÒ ¼ö ÀÖ´Ù. ÁÖ¼®¹®¾ÈÀÇ ³»¿ëÀº '!' ·Î ½Ã
ÀÛÇÑ´Ù. ÀÌ·± °æ¿ì  MYSQL¿¡¼­´Â ÁÖ¼®¹®À» ´Ù¸¥  MYSQL ±¸¹®°ú °°ÀÌ  Çؼ®ÇÏÁö¸¸ ´Ù¸¥
SQL ¼­¹ö¿¡¼­´Â ÀÌ·¯ÇÑ È®Àå±â´ÉÀ» »ç¿ëÇÏÁö ¾Ê°í °Ç³Ê¶é ¼ö ÀÖ´Ù. ¿¹¸¦ º¸ÀÚ:

SELECT /*! STRAIGHT_JOIN */ * from table1,table2 WHERE ...

- ´ÙÀ½ÀÇ ±â´ÉÀ̳ª ¸í·É »ç¿ë:
  ¤· CREATE DATABASE or DROP DATABASE. 7.4 [CREATE DATABASE] Âü°í.
  ¤· MOD() ´ë½Å¿¡ % »ç¿ë. %´Â C ÇÁ·Î±×·¡¸Ó¸¦ À§ÇØ Áö¿øÇÏ¸ç ¶ÇÇÑ PostgresSQL°úÀÇ
   È£È¯¼ºÀ» À§ÇØ Áö¿øÇÑ´Ù.
  ¤· Ä÷³ ¹®¿¡¼­ =, <>, <= ,<, >=,>, <<, >>, AND, OR, LIKE »ç¿ë.
  ¤· LAST_INSERT_ID(). 18.4.49 [mysql_insert_id()] Âü°í.
  ¤· REGEXP or NOT REGEXP.
  ¤· Çϳª³ª Çϳª ÀÌ»óÀÇ ÀÎÀÚ¸¦ »ç¿ëÇÑ CONCAT() ³ª CHAR(). MYSQL¿¡¼­ ÀÌ·¯ÇÑ Æã
   ¼ÇÀº ¿©·¯°³ÀÇ ÀÎÀÚ¸¦ °¡Áú ¼ö ÀÖ´Ù.
  ¤·  BIT_COUNT(),   ELT(),  FROM_DAYS(),   FORMAT(), IF(),   PASSWORD(),
   ENCRYPT(), PERIOD_ADD(), PERIOD_DIFF(), TO_DAYS(), or WEEKDAY().
  ¤· ¼­ºê½ºÆ®¸µÀ» ¾ø¾Ö´Â µ¥ TRIM()  »ç¿ë.(Use of TRIM() to trim  substrings) ANSI
   SQL ¿¡¼­´Â ´ÜÀÏ ¹®ÀÚ Á¦°Å¸¸ Áö¿øÇÑ´Ù.
(** ²¨¾î¾ï~ Æ®¸²ÀÌ ¼ú¸Ô°í ÇÏ´Â Æ®¸²Àº ¾Æ´Ï¶ø´Ï´Ù... **)
¤· ±×·ì Æã¼Ç¿¡¼­ STD(), BIT_OR() and BIT_AND()
¤· DELET + INSERT ´ë½Å REPLACE »ç¿ë. 7.14 [REPLACE] Âü°í.
¤· FLUSH flush_option ¸í·É.


5.2 MYSQL¿¡¼­ ºüÁø ±â´É
´ÙÀ½ÀÇ ±â´ÉµéÀº ÇöÀç ¹öÀüÀÇ MYSQL¿¡  ºüÁ®ÀÖ´Ù. ´ÙÀ½ ¹öÀü¿¡¼­ÀÇ ¿ì¼±±ÇÀ» È®ÀÎÇ϶ó¸é
MYSQL TODO ¸ñ·ÏÀ»  Âü°íÇÏÀÚ(http://www.mysql.com/Manual_split/manual_Todo.html).
ÀÌ°ÍÀÌ °¡Àå ÃֽŠ¹öÀüÀÇ TODO ¸ñ·ÏÀÌ´Ù. ºÎ·Ï F [TODO] Âü°í.

5.2.1 Sub-selects
´ÙÀ½Àº Mysql¿¡¼­ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù:

SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);

Mysql¿¡¼­´Â ¿ÀÁ÷ INSERT ... SELECT ... and  REPLACE ... SELECT ... ¸¸À» Áö¿øÇÑ´Ù.
µ¶¸³ÀûÀÎ ¼­ºê-select ¹®Àº 3.23.0¿¡¼­ ¾Æ¸¶µµ »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.  ±×´ë½Å ÇöÀç IN() Æã
¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

5.2.2 SELECT INTO TABLE
MysqlÀº ¾ÆÁ÷  SELECT ...  INTO TABLE  ....À» Áö¿øÇÏÁö  ¾Ê´Â´Ù. ÇöÀç,  MysqlÀº ¿ÀÁ÷
SELECT ... INTO OUTFILE ..., ¸¸À» Áö¿øÇÏ¸ç ±âº»ÀûÀ¸·Î´Â µ¿ÀÏÇÏ´Ù.

5.2.3 Æ®·£Àè¼Ç(Transactions)
Æ®·£Àè¼ÇÀº Áö¿øµÇÁö  ¾Ê´Â´Ù. MysqlÀº  °ð atomic(¿øÀÚ¼º?)  ¿ÀÆÛ·¹À̼ÇÀ» Áö¿øÇÒ  °ÍÀ̸ç
atomic ¿ÀÆÛ·¹À̼ÇÀº rollbackÀÌ ¾ø´Â Æ®·£Àè¼Ç°ú ºñ½ÁÇÏ´Ù.  atomic ¿ÀÆÛ·¹À̼ÇÀ» »ç¿ëÇϸç
insert/select/¸ðµç ¸í·ÉÀÇ ±×·ìÀ» ½ÇÇàÇÒ ¼ö ÀÖÀ¸¸ç ¾î¶² ½º·¹µåµµ Ãæµ¹ÇÏÁö ¾ÊÀ» ¼ö ÀÖµµ·Ï
º¸ÀåÇØÁØ´Ù. ÀÌ ¹®¸Æ¿¡¼­ ÀϹÝÀûÀ¸·Î ·Ñ¹é(rollback)Àº  ÇÊ¿ä¾ø´Ù. ÇöÀç LOCK TABLES  ¿Í
UNLOCK TABLES ¸í·ÉÀ»  ÀÌ¿ëÇÏ¿© ´Ù¸¥  ½º·¹µå°¡ Ãæµ¹ÇÏ´Â °ÍÀ»  ¸·À» ¼ö  ÀÖ´Ù. 7.23
[Lock Tables] Âü°í.

5.2.4 ÀúÀå ÇÁ·Î½ÃÀú¿Í Æ®¸®°Å
ÀúÀå ÇÁ·Î½ÃÀú´Â ¼­¹ö¿¡¼­ ÄÄÆÄÀϵǰí ÀúÀåµÉ ¼ö ÀÖ´Â SQL ¸í·É ¼¼Æ®ÀÌ´Ù. ÀÌ·± ±â´ÉÀÌ ¼ö
ÇàµÇ¸é Ŭ¶óÀ̾ðÆ®´Â Àüü ÁúÀǸ¦ ´Ù½Ã ÇÒ ÇÊ¿ä°¡ ¾ø°í ¶ÇÇÑ ÀúÀå ÇÁ·Î½ÃÀú¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ
´Ù. ÀÌ·± ±â´ÉÀÌ ÀÖÀ¸¸é ÁúÀÇ´Â  Çѹø¸¸ Çؼ®µÇ°í ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®°£ÀÇ  ÁÖ°í¹Þ¾Æ¾ß ÇÏ´Â
µ¥ÀÌÅÍ°¡ ÁÙ¾îµé¹Ç·Î ¼Óµµ°¡ Çâ»óµÈ´Ù. ¶ÇÇÑ ¼­¹öÀÇ  Æã¼Ç ¶óÀ̺귯¸®¸¦ °¡ÁüÀ¸·Î¼­ °³³äÀû
ÀÎ ´Ü°è¸¦ Çâ»ó½Ãų  ¼ö ÀÖ´Ù. (???  You can also  raise the conceptual  level by  having
libraries of functions in the server.)

Æ®¸®°Å´Â Ưº°ÇÑ À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§ »ý±â´Â ÀúÀå ÇÁ·Î½ÃÁ®ÀÌ´Ù.  ¿¹¸¦ µé¾î Æ®·£Àè¼Ç Å×
ÀÌºí¿¡¼­ ·¹Äڵ尡 »èÁ¦µÇ°í ¸ðµç Æ®·£Àè¼ÇÀÌ Áö¿öÁú ¶§ »óÀÀÇÏ´Â Å×À̺íÀ» »èÁ¦ÇÒ ¼ö ÀÖ´Â
ÀúÀå ÇÁ·Î½ÃÀú¸¦ ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù.

¾ÕÀ¸·Î´Â ÀúÀå ÇÁ·Î½ÃÀú¸¦ Áö¿øÇÒ ¿¹Á¤ÀÌÁö¸¸ Æ®¸®°Å´Â ¾Æ´Ï´Ù. Æ®¸®°Å´Â ÇÊ¿äÇÏÁö ¾ÊÀº °æ
¿ì¿¡µµ »ç¿ëµÉ ¼ö À־ ÀϹÝÀûÀ¸·Î ¼Óµµ°¡ ´À·ÁÁø´Ù.

¾ðÁ¦ ÀúÀå ÇÁ·Î½ÃÀú¸¦ »ç¿ëÇÏ°Ô  µÉÁö´Â ¾ÕÀ¸·Î Mysql¿¡ Ãß°¡ÇÒ  ¸ñ·ÏÀÎ ºÎ·Ï F¸¦ Âü°íÇÏ
ÀÚ.(The TODO)

(** Àü¹ÝÀûÀ¸·Î Æ®·£Àè¼Ç ó¸®¿Í Æ®¸®°Å µîÀº µ¥ÀÌÅͺ£À̽ºÀÇ ¼Óµµ¸¦ ÀúÇϽÃŵ´Ï´Ù. Mysql
Àº ÀÌ·¸°Ô ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖ´Â ºÎºÐÀ» Á¦°ÅÇÏ¿©  ºü¸¥ ¼Óµµ¸¦ ³»´Â °ÍÀÌÁö¿ä. ÀÌ·¯
ÇÑ ºÎºÐÀÌ ÀڱⰡ »ç¿ëÇÏ´Â µ¥ÀÌÅͺ£À̽º¿¡¼­ ¾ó¸¶³ª Áß¿äÇÑ°¡ ÆÇ´ÜÀ» ÇØ º¸¾Æ¾ß ÇÒ °ÍÀÔ´Ï
´Ù. º¸Åë ¼ÒÇü DBMS¿¡¼­´Â ȸº¹°ú º´Çà¼öÇàÀ» Áö¿øÇÏÁö ¾Ê´Â °æ¿ì°¡ ¸¹´Ù. Áï º´Çà¼öÇàÀº
¹ß»ýÇÏÁö ¾ÊÀ¸¸ç, ȸº¹Àº »ç¿ëÀÚÀÇ ¹®Á¦·Î »ý°¢ÇÑ´Ù. ±×·¯¹Ç·Î »ç¿ëÀÚ°¡ µ¥ÀÌÅͺ£À̽ºÀÇ  ¿¹
ºñ »çº»À» ÁغñÇϸç, °íÀåÀÌ ¹ß»ýÇϸé ÀÛ¾÷À» ´Ù½Ã ÇØ¾ß ÇÑ´Ù. Æ®¸®°Å°°Àº °æ¿ì´Â ÀÚ·áÀÇ ¹«
°á¼ºÀ» º¸ÀåÇϱâ À§ÇØ ÇÊ¿äÇÑ °ÍÀÌ´Ù. **)

5.2.5 ¿Ü·¡Å°(Foreign Keys)
SQL ¹®¿¡¼­ ¿Ü·¡Å°´Â Å×À̺íÀ» Á¶ÀÎÇÒ ¶§  »ç¿ëÇÏÁö ¾ÊÁö¸¸ ´ëºÎºÐ ÂüÁ¶ ¹«°á¼ºÀ» È®ÀÎÇÒ
¶§ »ç¿ëÇÑ´Ù. SELECT ¹®¿¡¼­ ´ÙÁß Å×ÀÌºí¿¡¼­ ÀڷḦ °¡Á®¿À±æ ¿øÇϸé Å×À̺íÀ» Á¶ÀÎÇؼ­
ó¸®ÇÒ ¼ö ÀÖ´Ù.

SELECT * from table1,table2 where table1.id = table2.id

7.12 [JOIN] Âü°í.

Mysql¿¡¼­ ¿Ü·¡Å°(FOREIGN KEY) ¹®Àº ´Ù¸¥ SQL Á¦Ç°ÀÇ CREATE TABLE ¸í·É°úÀÇ È£
ȯ¼º ¶§¹®¿¡   Á¸ÀçÇÑ´Ù: ¿Ü·¡Å°´Â   ¾Æ¹«°Íµµ ÇÏÁö  ¾Ê´Â´Ù.  ON  DELETE  ...  °¡  ¾ø´Â
FOREIGN KEY ±¸¹®Àº ´ëºÎºÐ ¹®¼­ÀûÀÎ  ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù. ÀϺΠODBC  ¾ÖÇø®ÄÉÀ̼ÇÀº
ÀÌ°ÍÀ» ÀÚµ¿ÀûÀÎ WHERE ¹®À» ¸¸µé ¶§ »ç¿ëÇÒ °ÍÀÌ´Ù. ±×·¸Áö¸¸ ÀÌ°ÍÀº ´ëºÎºÐ »ý·«(¹«½Ã)
ÇÏ°í ³Ñ¾î°¡±â ½±´Ù. ¿Ü·¡Å°´Â ¶§·Î´Â Á¦¾àÁ¶°Ç üũ(constraint check)·Î »ç¿ëÀ» ÇÏÁö¸¸ ÀÌ
·¯ÇÑ Ã¼Å©´Â µ¥ÀÌÅÍ°¡ Å×ÀÌºí¿¡ Á¤È®ÇÑ ¼ø¼­·Î µé¾î°¥¶§´Â ºÒÇÊ¿äÇÏ´Ù. MysqlÀº ÀϺΠ¾ÖÇÃ
¸®ÄÉÀ̼ǿ¡¼­ ¿Ü·¡Å°°¡ Á¸ÀçÇÏ´Â °ÍÀ» ÇÊ¿ä·Î Çϱ⠶§¹®¿¡(Á¦´ë·Î ÀÛµ¿ÇÏµç  ¾ÈÇÏµç »ó°ü¾ø
ÀÌ) Áö¿øÇÏ´Â °ÍÀÏ »ÓÀÌ´Ù.

Mysql¿¡¼­ ¿Ü·¡Å°¸¦ °¡Áø Å×À̺íÀÇ ·¹Äڵ带  »èÁ¦ÇÒ ¶§ ¾ÖÇø®ÄÉÀ̼ǿ¡ ÀûÀýÇÑ DELETE
¹®À» Ãß°¡ÇÏ¿© ON DELETE ... °¡ ¼öÇàµÇ´Â °ÍÀ»  ¸·À½À¸·Î½á ¹®Á¦¸¦ ÇØ°áÇÒ ¼öÀÖ´Ù. °æÇè
»ó ÀÌ·¸°Ô ÇÏ´Â °ÍÀÌ ¿Ü·¡Å°¸¦ »ç¿ëÇÏ´Â °Í°ú °°ÀÌ ºü¸£¸ç(¾î¶²  °æ¿ì¿¡´Â ´õ ºü¸§) Æ÷ÆÃÇÏ
±â°¡ ´õ ÁÁ´Ù.

°¡±î¿î ½ÃÀϾȿ¡ ¿ì¸®´Â ¿Ü·¡Å° ±â´ÉÀ» È®ÀåÇÒ °ÍÀÌ´Ù. ±×·¡¼­ ÃÖ¼ÒÇÑ mysqldump¿Í ODBC
¿¡¼­ Á¤º¸°¡ ÀúÀåµÇ°í °Ë»öÇÒ ¼ö ÀÖµµ·Ï ÇÒ °ÍÀÌ´Ù.


5.2.5.1 ¿Ü·¡Å°¸¦ »ç¿ëÇÏÁö ¾Ê´Â ÀÌÀ¯

¿Ü·¡Å°¸¦ »ç¿ëÇÒ ¶§ ¾îµð¿¡¼­ Ãâ¹ßÇØ¾ß ÇÒÁö ¸ð¸£´Â ¸¹Àº ¹®Á¦°¡ ÀÖ´Ù:

- Foreign keyµéÀº »óȲÀ» ¸Å¿ì º¹ÀâÇÏ°Ô ¸¸µç´Ù. ¿Ö³ÄÇϸé, foreing keyÀÇ Á¤ÀÇ°¡ database¿¡
´ã°Ü¾ß ÇÏ°í, foreign key¸¦ ±¸ÇöÇÏ´Â °ÍÀº "ÀÚ¿¬½º·±" File »ç¿ë¹ý(data fileµéÀ» ¿Å±â°í,
º¹»çÇÏ°í, »èÁ¦ÇÏ´Â µî...)À» Á¦ÇÑÇÑ´Ù.
(** ¹®ÅÂÁØ´Ô ¿ªÁÖ: ¹ø¿ªÀÌ ÀÌ»óÇѵ¥ ¿Ü·¡Å°°¡ ÀÖÀ¸¸é ÂüÁ¶ ¹«°á¼º ±ÔÄ¢À» À§ÇØ ¿©·¯ °¡Áö
º¸»ó  ¿¬»êÀ» ÇÏ°Ô µÈ´Ù. ÀÌ°ÍÀ» ¶æÇÏ°í ÀÖ´Â µíÇÏ´Ù. **)

- INSERT ¿Í UPDATE ¹®Àº ¼Óµµ¿¡ ¸¹Àº ¿µÇâÀ»  ³¢Ä£´Ù. ±×¸®°í ÀÌ·± °æ¿ì º¸Åë ¿Ã¹Ù¸¥
¼ø¼­·Î ¿Ã¹Ù¸¥ Å×ÀÌºí¿¡ ·¹Äڵ带 »ðÀÔÇϱ⠶§¹®¿¡ ´ëºÎºÐ ¸ðµç ¿Ü·¡Å° üũ´Â »ç¿ëÇÒ ÇÊ¿ä
¾ø´Ù.

- ÇÑÂÊÀÇ ¿µÇâÀÌ Àüü µ¥ÀÌÅͺ£À̽º¿¡ ¿¬¼â ÀÛ¿ëÀ» Çϱ⠶§¹®¿¡ Å×ÀÌºí¿¡¼­ ¾÷µ¥ÀÌÆ®¸¦ ÇÒ
¶§ ¸Å¿ì ¸¹Àº Å×ÀÌºí¿¡¼­ ¶ôÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ÇÑ Å×ÀÌºí¿¡¼­ ¸ÕÀú ·¹Äڵ带 »èÁ¦ÇÏ°í ±×ÈÄ
¿¡ ´Ù¸¥ Å×ÀÌºí¿¡¼­ ·¹Äڵ带 »èÁ¦ÇÏ´Â °ÍÀÌ ÈξÀ ºü¸£´Ù.

- Table¸¦ ¿ÏÀüÈ÷ Áö¿ì°í, (backupÀ̳ª »õ·Î¿î source·ÎºÎÅÍ) ¸ðµç recordµéÀ» ´Ù½Ã º¹±¸ÇÏ´Â
¹æ¹ýÀ¸·Î TableÀ» º¹±¸ÇÒ ¼ö ¾ø´Ù.

- Foreign key¸¦ »ç¿ëÇÑ´Ù¸é, tableÀ» dump(backup)ÇÏ°í (±× dumpÇÑ ÀڷḦ) restoreÇÏ´Â µ¥
ÀÖ¾î ±× ÀÏ·ÃÀÇ ¼ø¼­¸¦ ÀûÀýÇÏ°Ô ÁöÄÑ¾ß ÇÑ´Ù.

- °¢°¢ÀÇ tableÀÇ Á¤ÀÇ°¡ ¾µ¸ðÀÖ°í ÀûÀýÇÏ´õ¶óµµ, (°¢ TableµéÀÌ »óÈ£ÂüÁ¶ÇÏ°Ô µÈ´Ù¸é) ´Ü¼øÇÑ
create¹®À¸·Î´Â Àç»ý¼ºÀÌ ºÒ°¡´ÉÇÑ circular definition(¼øȯÁ¤ÀÇ)°¡ ½±°Ô ¹ß»ýÇÑ´Ù.
(¿ªÀÚÁÖ: A¶ó´Â TableÀÌ BÀÇ ÀڷḦ ÂüÁ¶ÇÏ´Â foreign key¸¦ ´ã°í ÀÖ°í,
       B´Â C¿¡ ´ëÇÑ foreign key¸¦, C´Â A¿¡ ´ëÇÑ foreign key¸¦ ´ãµµ·Ï tableÀÌ ±¸¼ºµÈ´Ù¸é
       Çѹø¿¡ A,B,C tableÀ» »ý¼ºÇÒ ¼ö ¾ø´Ù. A,B,C¸¦ ¸¸µç´ÙÀ½ °¢°¢ÀÇ foreign key¸¦ ÁöÁ¤ÇØ
       ÁÖ´Â ¹æ¹ýÀ» ¾²°Ô µÈ´Ù.)

¿Ü·¡Å°ÀÇ ÁÁÀº Á¡Àº ´ÜÁö ´ÙÀ½¿Í °°´Ù. ODBC¿Í  Æ¯Á¤ÇÑ ´Ù¸¥ Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥¿¡¼­ ¾î
¶»°Ô Å×À̺íÀÌ ¿¬°áµÇ¾î ÀÖ´ÂÁö¸¦ º¼ ¼ö ÀÖ°í ¿¬°á ´ÙÀ̾î±×·¥À» º¸´Âµ¥ »ç¿ëÇÏ¸ç ¾ÖÇø®ÄÉ
À̼ÇÀ» ¸¸µå´Âµ¥ µ½´Â Á¡ÀÌ´Ù.
(¿ªÀÚÁÖ: ÀÌ ±ÛÀº foreign key¿¡ ´ëÇؼ­ ¸Å¿ì ºñÆÇÀûÀÌ´Ù. ÇÏÁö¸¸, ÀÌ°ÍÀº foreign keyÀÇ
       ÀϺΠ±â´ÉÀÏ»ÓÀÌ´Ù. ¹«¾ùº¸´Ùµµ client°¡ °¢ Table³» DATAÀÇ ¿¬°ü°ü°è¿¡ ´ëÇؼ­
       »©¸Ô¾ú´ÂÁö¿¡ ´ëÇؼ­ ÀÏÀÏÀÌ ½Å°æ¾²Áö ¾Ê°Ô ÇÏ°í, Ç×»ó ÀÚ·áÀÇ ¹«°á¼º(Á¤ÇÕ¼º[?])À»
       º¸ÀåÇÑ´Ù´Â °ÍÀº ¸Å¿ì Áß¿äÇÏ´Ù.

       Æ¯È÷, TableÀÌ 1~20°³°¡ ¾Æ´Ñ 100´ÜÀ§°¡ ³Ñ¾î°£´Ù¸é, client¿¡¼­ ÀÏÀÏÀÌ ½Å°æ¾²¸ç
       programingÇÏ´Â °Íµµ ÈûµéÁö¸¸, debuggingµµ ¿¹»óº¸´Ù Èûµé¾îÁø´Ù.
       °¢ table°£ÀÇ ¿¬°á°ü°è¸¦ Àß ¹®¼­È­ÇÑ´Ù¸é programmerµéÀÌ foreign key·Î °íÅë¹Þ±â
       º¸´Ù´Â °ü·Ã TableÀ» checkÇØ¾ß µÇ´Â ¼ö°í¸¦ ´ú°ÔµÈ´Ù.

       foreign key°¡ ±âÇǵǴ ÁÖµÈ ÀÌÀ¯´Â table³»ÀÇ Data¸¦ ¼öÁ¤ÇÏ´Â °ÍÀÌ ½±Áö ¾Ê±â
       ¶§¹®ÀÌ´Ù. ÇöÀå ½Ç¹«ÀÚÀÇ ³í¸®¿¡ ¾î±ß³ª´Â ¿äûÀ» ó¸®ÇÏ´Â µ¥ À־
       foreign key¸¸Å­ °ÅÃßÀ彺·± ³ðµµ ¾øÀ¸¸®¶ó. )

Mysql¿¡¼­´Â °ð ¿Ü·¡Å° Á¤ÀǸ¦ ÀúÀåÇÒ ¼ö ÀÖµµ·Ï Çؼ­ Ŭ¶óÀ̾ðÆ®°¡ ¾î¶»°Ô ¿ø·¡ÀÇ ¿¬°áÀÌ
¸¸µé¾îÁ³´ÂÁö¿¡ ´ëÇؼ­ Áú¹®ÇÏ°í ´äÀ» ¹ÞÀ» ¼ö ÀÖµµ·Ï ÇÒ °ÍÀÌ´Ù. ÇöÀçÀÇ  '.frm' ÆÄÀÏ Æ÷¸Ë
Àº ¾ÆÁ÷ ÀÌ°ÍÀ» Áö¿øÇÏÁö ¸øÇÏ°í ÀÖ´Ù.


5.2.6 ºä

MysqlÀº ºä¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. ±×·¸Áö¸¸ TODO(ÀÌÈÄ °³¼± ¸ñ·Ï)¿¡ ÀÖ´Ù.
MySQL doesn't support views, but this is on the TODO.

5.2.7 `--'À» »ç¿ëÇÑ ÁÖ¼®

ÀϺΠ´Ù¸¥ SQL µ¥ÀÌÅͺ£À̽º´Â '--'  ·Î ÁÖ¼®À» ½ÃÀÛÇÑ´Ù. mysql ¸í·É  ¶óÀÎ µµ±¸°¡ '--'·Î
½ÃÀÛÇÏ´Â ¸ðµç ÁÙÀ» Á¦°ÅÇÒ Áö¶óµµ MysqlÀº  '#'À» ÁÖ¼® ¹®ÀÇ ½ÃÀÛÀ¸·Î »ç¿ëÇÑ´Ù.  »ç¿ëÀÚ´Â
¶ÇÇÑ C ¸í·É  ½ºÅ¸ÀÏÀÎ /*  this is  a comment  */ ¸¦  mysql¿¡¼­ »ç¿ëÇÒ  ¼ö ÀÖ´Ù.  7.28
[Comment] Âü°í.

MysqlÀº '--'¸¦ Áö¿øÇÏÁö  ¾ÊÀ» °ÍÀÌ´Ù;  '--'Àº Åðº¸ÇÑ  ÁÖ¼®¹® ÇüÅ·ΠÀÚµ¿À¸·Î  »ý¼ºµÇ´Â
SQL ÁúÀÇ¿¡¼­ ¸¹Àº ¹®Á¦¸¦ ¹ß»ý½ÃŲ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸ÀÚ. ¿ì¸®´Â ÀÚµ¿ÀûÀ¸·Î payment¸¦
!payment! ÀÇ °ªÀ¸·Î ÀÔ·ÂÇϵµ·Ï ÇÏ°í ÀÖ´Ù :

UPDATE tbl_name SET credit=credit-!payment!

paymentÀÇ °ªÀÌ À½¼öÀÏ ¶§ ¾î¶² ÀÏÀÌ »ý±æ °ÍÀ̶ó »ý°¢Çϴ°¡?

1--1Àº ÇÕ´çÇÑ SQL¹®À̱⠶§¹®¿¡ '--'°¡ ÁÖ¼®¹®ÀÇ ½ÃÀÛÀ» ÀǹÌÇÏ´Â °ÍÀ» ²¨¸®´Â °ÍÀÌ´Ù.

'--' ÁÖ¼®À» Æ÷ÇÔÇÏ´Â ÅؽºÆ® ÆÄÀÏÀÇ SQL ÇÁ·Î±×·¥À» °¡Á³´Ù¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇØ¾ß ÇÑ´Ù:

shell> replace " --" " #" < text-file-with-funny-comments.sql \
       | mysql database

instead of the normal(Á¤»óÀûÀÎ °æ¿ì ´ë½Å???):

shell> mysql database < text-file-with-funny-comments.sql

¸í·É ÆÄÀÏ·Î '--' ÁÖ¼®À» '#' ÁÖ¼®À¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù:

shell> replace " --" " #" -- text-file-with-funny-comments.sql

´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î ¿ø·¡´ë·Î µ¹·Á³õÀÚ:

shell> replace " #" " --" -- text-file-with-funny-comments.sql

(** ÀϺΠSQL¿¡¼­ »ç¿ëÇÏ´Â --  ÁÖ¼®¹®¿¡¼­ ¹®Á¦°¡ »ý±æ ¼ö ÀÖÀ¸¹Ç·Î  MYSQL¿¡¼­´Â #À»
ÁÖ¼®¹®À¸·Î »ç¿ëÇÑ´Ù´Â ¸»ÀÌ´Ù **)

5.3 MysqlÀÌ µû¸£°í Àִ ǥÁØÀº ¹«¾ùÀΰ¡?

Entry level SQL92. ODBC level 0-2.


5.4 BLOB ¿Í TEXT ŸÀÔÀÇ Á¦ÇÑ
BLOB ³ª TEXT Çʵ忡¼­ GROUP BY ³ª ORDER BY¸¦ »ç¿ëÇÏ±æ ¿øÇÏ¸é ±× Çʵ带 °íÁ¤
±æÀÌ °´Ã¼·Î ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô  Çϴ ǥÁØÀûÀÎ ¹æ¹ýÀº SUBSTRING  Æã¼ÇÀ» »ç¿ëÇÏ´Â
°ÍÀÌ´Ù. ¿¹¸¦ º¸ÀÚ:

mysql> select comment from tbl_name order by SUBSTRING(comment,20);

ÀÌ·¸°Ô ÇÏÁö ¾ÊÀ¸¸é Á¤·ÄÇÒ ¶§  ¿ÀÁ÷ ù ¹ø° max_sort_lengths  (±âº»°ª=1024)¸¸À» °í·ÁµÈ
´Ù.

BLOB ¿Í TEXT ´Â ±âº»°ªÀ» °¡Áú ¼ö ¾øÀ¸¸ç ¶ÇÇÑ ¾ðÁ¦³ª NULL Ä÷³ÀÏ °ÍÀÌ´Ù.

BLOB and  TEXT cannot   have DEFAULT values   and will also  always  be NULL
columns.

5.5 COMMIT-ROLLBACK ¾øÀÌ ¾î¶»°Ô ´ëÄ¡ÇÒ ¼ö ÀÖÀ»±î?
MysqlÀº COMMIT-ROLLBACK À» Áö¿øÇÏÁö ¾Ê´Â´Ù. ¹®Á¦´Â COMMIT-ROLLBACKÀ» È¿
°úÀûÀ¸·Î ´Ù·ç±â À§Çؼ­´Â Mysql¿¡¼­ ÇöÀç »ç¿ëÇÏ´Â °Í°ú ¿ÏÀüÈ÷ ´Ù¸¥ Å×ÀÌºí ¼³°è°¡ ÇÊ¿ä
ÇÏ´Ù´Â °ÍÀÌ´Ù. MysqlÀº ¶ÇÇÑ Å×À̺íÀ» ÀÚµ¿  Å¬¸°¾÷ÇÏ´Â Ãß°¡ÀûÀÎ ½º·¹µå¿Í ´õ ¸¹Àº µð½Ã
Å©¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ·¯ÇÑ  ±â´ÉÀº ÇöÀ纸´Ù mysqlÀ» 2-4¹è ´À¸®°Ô ¸¸
µç´Ù. MysqlÀº ´ëºÎºÐÀÇ  ´Ù¸¥ SQL µ¥ÀÌÅͺ£À̽ºº¸´Ù  ÈξÀ ´õ ºü¸£´Ù.  (ÀüÇüÀûÀ¸·Î ÃÖ¼Ò
2-3´ë ºü¸§) ÀÌ·¯ÇÑ ÀÌÀ¯´Â Mysql¿¡ COMMIT-ROLLBACKÀÌ ¾ø±â ¶§¹®ÀÌ´Ù.

´çºÐ°£Àº ¿ì¸®´Â   SQL ¼­¹ö  ¾ð¾îÀÇ  ¼º´ÉÀ»  Çâ»ó½ÃÅ°´Âµ¥ ´õ   ÁÖ·ÂÇÒ °ÍÀÌ´Ù.  ´ëºÎºÐ
COMMIT-ROLLBACK ±â´ÉÀÌ Á¤¸»·Î ÇÊ¿äÇÑ °æ¿ì´Â µå¹°´Ù. ¶ÇÇÑ ÀÌ·¸°Ô ÇÏ´Â °ÍÀÌ ´õ ÁÁ
Àº ¼º´ÉÀ» ³¾ ¼ö ÀÖ´Ù.

ÀϹÝÀûÀ¸·Î Æ®·£Àè¼ÇÀÌ ÇÊ¿äÇÑ ·çÆ®´Â LOCK TABLES¸¦ »ç¿ëÇØ Äڵ带 ©  ¼ö ÀÖ´Ù. ¶ÇÇÑ
·¹Äڵ带 ¾÷µ¥ÀÌÆ®ÇÒ ¶§ Ä¿¼­¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

¿ì¸®´Â Æ®·£Àè¼Ç°ú Ä¿¼­¸¦ TODO¿¡ ³Ö¾úÁö¸¸  ¿ì¼±±ÇÀÌ ³ôÀº °ÍÀº ¾Æ´Ï´Ù.  ÀÌ·¯ÇÑ ±â´ÉÀ»
¼öÇàÇÑ´Ù¸é CREATE TABLE ÀÇ ¿É¼ÇÀ¸·Î µÉ °ÍÀÌ´Ù. ÀÌ°ÍÀº ¿É¼ÇÀ¸·Î ÁöÁ¤ÇÑ Å×ÀÌºí¿¡¼­
¸¸ ÀÛµ¿ÇÏ¸ç ±× Å×À̺íÀº ´À¸®°Ô µÉ °ÍÀ̶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù.

¿ì¸®´Â   100%   º¸ÆíÀûÀÎ   µ¥ÀÌÅͺ¸´Ù´Â   Á¤¸»·Î   ºü¸¥    µ¥ÀÌÅͺ£À̽º°¡   ÇÊ¿äÇÏ´Ù.
COMMIT-ROLLBACK ±â´ÉÀ» ¼öÇàÇÏ´õ¶óµµ ¼Óµµ¿¡ ¼Õ»óÀÌ ¾ø´Ù¸é  ¿ì¸®´Â ±×°ÍÀ» Áö¿øÇÒ
°ÍÀÌ´Ù. ´çºÐ°£Àº ´õ Áß¿äÇÏ°Ô ÇؾßÇÒ ÀϵéÀÌ  ¸¹ÀÌ ÀÖ´Ù. ¿ì¸®°¡ ¾î¶² °Í¿¡ ¿ì¼±±ÇÀ»  µÎ°í
ÀÖ´ÂÁö´Â TODO¸¦ Âü°íÇÏÀÚ. »óÀ§ ´Ü°èÀÇ Áö¿øÀ» ¹Þ´Â °í°´Àº ÀÌ°ÍÀ» ¹Ù²Ü ¼ö ÀÖÀ¸¸ç ¿ì¼±
±ÇÀÌ º¯°æµÉ ¼öµµ ÀÖ´Ù.

ÇöÀçÀÇ ¹®Á¦´Â ½ÇÁ¦·Î ROLLBACK ÀÌ´Ù. ·Ñ¹é¾øÀÌ LOCK TABLESÀ» ÀÌ¿ëÇÏ¿© ¿©·¯ Á¾·ù
ÀÇ COMMIT¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ·Ñ¹éÀ» Áö¿øÇÏ±â  À§ÇØ MysqlÀº ¾÷µ¥ÀÌÆ®°¡ µÈ ¸ðµç ¿¹Àü
·¹Äڵ带 ÀúÀåÇÏ°í ·Ñ¹éÀÌ ÀÏÀ̳µÀ» ¶§ ½ÃÀÛ ½ÃÁ¡À¸·Î µ¹¾Æ°¥ ¼ö ÀÖµµ·Ï ¹Ù²Ù¾î¾ß ÇÑ´Ù. ¿¹
¸¦ µé¾î ÀÌ·¯ÇÑ °ÍÀº ÀüÇô ¾î·ÆÁö ¾Ê´Ù.(ÇöÀçÀÇ isamlog ´Â ÀÌ·± °æ¿ì¸¦ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ
´Ù) ±×·¯³ª ALTER/DROP/CREATE TABLE¿¡¼­ ·Ñ¹éÀ» ¼öÇàÇÏ´Â °ÍÀº ¹«Ã´ ¾î·Æ´Ù.

·Ñ¹é »ç¿ëÀ» ÇÇÇϱâ À§ÇØ ´ÙÀ½ÀÇ Àü·«À» »ç¿ëÇÒ ¼ö ÀÖ´Ù:

1. Á¢±ÙÇϱ⠿øÇÏ´Â ¸ðµç Å×ÀÌºí¿¡ ¶ôÀ» »ç¿ë. LOCK TABLES ...  
2. Á¶°Ç Å×½ºÆ®(Test conditions)
3. ¸ðµç °ÍÀÌ Á¦´ë·Î µÈ´Ù¸é ¾÷µ¥ÀÌÆ®¸¦ ÇÑ´Ù.
4. UNLOCK TABLES

ÀϹÝÀûÀ¸·Î °¡´ÉÇÑ ·Ñ¹éÀ» ÀÌ¿ëÇØ Æ®·£Àè¼ÇÀ» »ç¿ëÇÏ´Â °Íº¸´Ù´Â ÀÌ·¯ÇÑ ¹æ¹ýÀÌ ÈξÀ ´õ ºü
¸£´Ù. ±×·¸Áö¸¸ Ç×»ó »ç¿ë°¡´ÉÇÑ °ÍÀº ¾Æ´Ï´Ù. ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î ÇØ°áÇÒ ¼ö ¾ø´Â À¯ÀÏÇÑ »óȲ
Àº ¾÷µ¥ÀÌÆ®Áß ´©±º°¡°¡ ½º·¹µå¸¦ Á׿´À» ¶§ÀÌ´Ù. ÀÌ·± °æ¿ì ¸ðµç ¶ôÀº ÇØÁ¦°¡ µÈ´Ù. ±×·¸Áö
¸¸ ¾÷µ¥ÀÌÆ®ÀÇ ÀϺδ ½ÇÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.

¹°·Ð ´ÜÀÏ ¿ÀÆÛ·¹À̼ǿ¡¼­ ·¹Äڵ带 ¾÷µ¥ÀÌÆ®ÇÏ´Â Æã¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ÀÇ Å×Å©´ÐÀ»
»ç¿ëÇÏ¸ç ¸Å¿ì È¿À²ÀûÀÎ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé ¼ö ÀÖ´Ù:

- ÇöÀç °ª°ú °ü·ÃµÇ¾î ÀÖ´Â Çʵ带 ¼öÁ¤
- ½ÇÁ¦·Î º¯È­°¡ »ý°åÀ»¶§¸¸ Çʵ带 ¾÷µ¥ÀÌÆ®

¿¹¸¦ µé¾î, ¾î¶² °í°´ Á¤º¸¸¦ ¾÷µ¥ÀÌÆ® ÇÒ ¶§ ¿ÀÁ÷ ¹Ù²ï µ¥ÀÌÅ͸¸ ¾÷µ¥ÀÌÆ®¸¦ ÇÑ´Ù. ±×¸®°í
For example, when we are doing updates on some customer information, we update only
the customer data that have  changed and test only  that none of the changed  data, or
data that depend on the changed data, have changed compared to the original row.
º¯È­µÈ µ¥ÀÌÅÍÀÇ Å×½ºÆ®´Â UPDATE ¹®¿¡¼­  WHRE ÀýÀ» »ç¿ëÇÏ¿© ÇÒ ¼ö  ÀÖ´Ù. ·¹Äڵ尡
¾÷µ¥ÀÌÆ®µÇÁö ¾Ê¾Ò´Ù¸é Ŭ¶óÀ̾ðÆ®¿¡ ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö¸¦ ÁØ´Ù:  "´ç½ÅÀÌ ¹Ù²Û µ¥ÀÌÅÍ ÀÏ
ºÎ°¡ ´Ù¸¥ »ç¿ëÀÚ¿¡ ÀÇÇØ  ¹Ù²î¾ú½À´Ï´Ù". ±×·¯°í³ª¼­ ¿ì¸®´Â  À©µµ¿ì¿¡¼­ ¿¹ÀüÀÇ ·¹ÄÚµå¿Í
ÇöÀçÀÇ ·¹Äڵ带 ºñ±³ÇÏ¿© º¸¿©ÁØ´Ù. ±×·¯¸é  »ç¿ëÀÚ´Â ¾î¶² °í°´ Á¤º¸  ·¹Äڵ带 »ç¿ëÇÒÁö
°áÁ¤ÇÒ ¼ö ÀÖ´Ù.

ÀÌ·¸°Ô Çϸé "Ä÷³ ¶óÅ·"°ú ºñ½ÁÇÏ´Ù. ±×·¸Áö¸¸ ½ÇÁ¦·Î´Â ´õ ºü¸£´Ù.  ¿Ö³ÄÇϸé ÇöÀçÀÇ °ª°ú
°ü·ÃµÇ¾î ÀÖ´Â °ªÀÇ Ä÷³¸¸ ¾÷µ¥ÀÌÆ®Çϱ⠶§¹®ÀÌ´Ù.  ÀÌ·¸³ª ÀüÇüÀûÀÎ ¾÷µ¥ÀÌÆ®¹®Àº ´ÙÀ½°ú
ºñ½ÁÇÒ °ÍÀÌ´Ù:

UPDATE tablename SET pay_back=pay_back+'relative change';

UPDATE customer
SET
  customer_date='current_date',
  address='new address',
  phone='new phone',
  money_he_owes_us=money_he_owes_us+'new_money'
WHERE
  customer_id=id AND address='old address' AND phone='old phone';

Áö±Ý º¸µíÀÌ   ÀÌ·¸°Ô ÇÏ¸é  ¸Å¿ì  È¿À²ÀûÀÌ¸ç  ¼³»ç ´Ù¸¥   Å¬¶óÀ̾ðÆ®°¡ pay_back   À̳ª
money_he_owes_us Ä÷³ÀÇ °ªÀ» ¹Ù²Ù¾úÀ» ¶§¶óµµ Á¦´ë·Î ÀÛµ¿ÇÑ´Ù.

´ëºÎºÐÀÇ °æ¿ì, »ç¿ëÀÚ´Â Å×ÀÌºí¿¡¼­ À¯ÀÏÇÑ °ª(identifiers)À» °ü¸®Çϱâ À§ÇØ ·Ñ¹é°ú  Å×À̺í
¶ôÀ» »ç¿ëÇÏ°í ½Í¾îÇÑ´Ù. ÀÌ°ÍÀº  AUTO_INCREMENT Ä÷³°ú SQL  LAST_INSERT_ID()  
Æã¼Ç, ¶Ç´Â mysql_insert_id() ÀÇ C API Æã¼ÇÀ» »ç¿ëÇÏ¿© ´õ¿í  È¿À²ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.  
18.4.49 [mysql_insert_id()] Âü°í.

TcX¿¡¼­´Â ¾ðÁ¦³ª ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇÒ  ¼ö Àֱ⠶§¹®¿¡ °á°í low-level  ¶ôÀ» ÇÊ¿ä·Î ÇÏÁö
¾Ê´Â´Ù. ¾î¶² °æ¿ì¿¡´Â Á¤¸»·Î ·Î¿ì-¶ôÀÌ ÇÊ¿äÇÏ´Ù. ±×·¸Áö¸¸ ÀÌ·± °æ¿ì´Â ±Ø¼Ò¼öÀÌ´Ù. ·Î¿ì
-·¹º§ ¶ôÀ» ¿øÇϸé Å×ÀÌºí¿¡¼­ Ç÷¡±× Ä÷³À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½°ú °°´Ù:

UPDATE tbl_name SET row_flag=1 WHERE id=ID;

¸¸¾à row°¡ ¹ß°ßµÇ°í row_flag°¡ ¿ø·¡ÀÇ  row¿¡¼­ ÀÌ¹Ì 1ÀÌ ¾Æ´Ï¶ó¸é  ¿µÇâÀ» ¹ÞÀº rowÀÇ
¼ýÀڷμ­ 1ÀÏ ¹ÝȯÇÑ´Ù.

MySQL returns 1 fro the number of  affected rows if the row was found  and row_flag
wasn't already 1 in the original row.

6. Mysql Á¢±Ù ±ÇÇÑ ½Ã½ºÅÛ

mysql Àº Áøº¸ÀûÀÌÁö¸¸ ºñÇ¥ÁØÀûÀÎ º¸¾È/±ÇÇÑ ½Ã½ºÅÛÀ» °¡Áö°í ÀÖ´Ù. À̹ø Àå¿¡¼­´Â ÀÌ°ÍÀÌ
¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö¸¦ ¼³¸íÇÏ°í ÀÖ´Ù.

6.1 ±ÇÇÑ ½Ã½ºÅÛÀ̶õ ¹«¾ùÀΰ¡?
Mysql ±ÇÇÑ ½Ã½ºÅÛÀÇ ÁÖ¿ä ±â´ÉÀº µ¥ÀÌÅͺ£À̽º¿¡¼­ select, insert, update, delete ±ÇÇÑ
À» È£½ºÆ®ÀÇ »ç¿ëÀÚ À̸§°ú °ü·ÃÁþ´Â °ÍÀÌ´Ù.

Ãß°¡ÀûÀÎ ±â´É¿¡´Â ÀÍ¸í »ç¿ëÀÚ  ±â´É°ú LOAD DATA INFILE °ú °ü¸®ÀÚ ¿ÀÆÛ·¹À̼ǰú °°Àº my
sql¸¸ÀÇ  Æ¯¼öÇÑ ±ÇÇÑÀ» Çã¿ëÇÏ´Â ºÎºÐÀÌ Æ÷ÇԵǾî ÀÖ´Ù.


Mysql¿¡¼­ ÀÎÁõÀ» ¸ñÀûÀ¸·Î »ç¿ëÇÏ´Â »ç¿ëÀÚ À̸§Àº À¯´Ð½º »ç¿ëÀÚ À̸§(·Î±×ÀÎ À̸§)À̳ª
À§µµ¿ì »ç¿ëÀÚ À̸§°í´Â ÀüÇô °ü°è°¡ ¾ø´Ù´Â °Í!À» ±â¾ïÇÏÀÚ. ´ëºÎºÐ mysql Ŭ¶óÀ̾ðÆ®´Â m
ysql »ç¿ëÀÚ À̸§À¸·Î ÇöÀçÀÇ À¯´Ð½º »ç¿ëÀÚ À̸§À» »ç¿ëÇÏ¿© Á¢¼ÓÇÏ·Á ÇÒ °ÍÀÌ´Ù. ±×·¸Áö
¸¸ ÀÌ°Ç ¿ÀÁ÷ ÆíÀǸ¦ À§Çؼ­ÀÌ´Ù. Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥Àº -u ³ª --user ¿É¼ÇÀ¸·Î ÁöÁ¤ÇÑ ´Ù
¸¥ À̸§À» Çã¿ëÇÑ´Ù. ÀÌ°ÍÀº mysql »ç¿ëÀÚ À̸§¿¡ ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é µ¥ÀÌÅͺ£ÀÌ
½ºÀÇ º¸¾È¿¡ ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¾î¶² À̸§À» »ç¿ëÇÏ¿© ¼­¹ö¿¡ Á¢¼ÓÇÏ·Á
°í ÇÏ´Â »ç¶÷Àº °¢ À̸§¿¡ ºñ¹Ð¹øÈ£°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê´Ù¸é Á¢¼Ó¿¡ ¼º°øÇÒ °ÍÀÌ´Ù.

À¯´Ð½º »ç¿ëÀÚ À̸§ÀÌ ÀϹÝÀûÀ¸·Î 8±ÛÀÚ·Î Á¦ÇѵǾî ÀÖ´Â °Í°ú ´Ù¸£°Ô mysql »ç¿ëÀÚ À̸§Àº
16±ÛÀÚ±îÁö »ç¿ëÇÒ ¼ö ÀÖ´Ù.

mysql ºñ¹Ð¹øÈ£´Â À¯´Ð½ºÀÇ ºñ¹Ð¹øÈ£¿Í ¾Æ¹« °ü·ÃÀÌ ¾ø´Ù. À¯´Ð½º ¸Ó½Å¿¡ ·Î±×ÀÎÇÒ ¶§ »ç¿ë
ÇÏ´Â ºñ¹Ð¹øÈ£¿Í µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÒ ¶§ »ç¿ëÇÏ´Â ºñ¹Ð¹øÈ£´Â ÀüÇô °ü·ÃÀÌ ¾ø´Ù. ¶ÇÇÑ m
ysqlÀº À¯´Ð½º ·Î±×ÀÎ ÇÁ·Î¼¼½º¿¡¼­ »ç¿ëÇÏ´Â °Í°ú ´Ù¸¥ ¾Ë°í¸®ÁòÀ¸·Î ºñ¹Ð¹øÈ£¸¦ ¾ÏȣȭÇÑ
´Ù.


6.2 mysql ¼­¹ö¿¡ Á¢¼ÓÇϱâ

mysql Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥Àº ÀϹÝÀûÀ¸·Î ¿¬°á Æз¯¹ÌÅÍ(¸Å°³ º¯¼ö)°¡ ÇÊ¿äÇÏ´Ù.: ¿¬°áÇÒ
È£½ºÆ®, »ç¿ëÀÚ À̸§, ºñ¹Ð¹øÈ£. ¿¹¸¦ µé¾î mysql Ŭ¶óÀ̾ðÆ®´Â ´ÙÀ½°ú °°ÀÌ ½ÃÀÛÇÒ ¼ö ÀÖ
´Ù. (¼±Åà ÀÎÀÚ´Â [ ] ·Î ´Ý´Â´Ù)

shell>; mysql [-h host_name] [-u user_name] [-pyour_pass]


-p¿Í µÚ¿¡ ºÙÀº ºñ¹Ð¹øÈ£ »çÀÌ¿¡´Â °ø°£ÀÌ ¾ø´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ.

-h, -u, -p¸¦ ´ëüÇÒ ¼ö ÀÖ´Â Çü½ÄÀ¸·Î´Â --host=host_name, --user=user_name and --passw
ord=your_pass  ÀÌ ÀÖ´Ù.

mysqlÀº Ä¿¸Çµå ¶óÀο¡¼­ ¿¬°á ¸Å°³º¯¼ö°¡ ºüÁ®ÀÖÀ» ¶§´Â ±âº» °ªÀ» »ç¿ëÇÑ´Ù. ±âº» È£½ºÆ®
À̸§Àº localhost ÀÌ°í ±âº» »ç¿ëÀÚ À̸§Àº À¯´Ð½º ·Î±×ÀÎ À̸§ÀÌ´Ù.(-p °¡ ºüÁ®ÀÖÀ¸¸é ºñ
¹Ð¹øÈ£´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù) ±×·¡¼­ ¸¸¾à À¯´Ð½º »ç¿ëÀÚ À̸§ÀÌ joe ¶ó¸é ´ÙÀ½ÀÇ ¸í·ÉÀº µ¿
ÀÏÇÏ´Ù.:

shell> mysql -h localhost -u joe
shell> mysql -h localhost
shell> mysql -u joe
shell> mysql


´Ù¸¥ mysql Ŭ¶óÀ̾ðÆ®µµ ºñ½ÁÇÏ°Ô ÀÛµ¿ÇÑ´Ù.

À¯´Ð½º ½Ã½ºÅÛ¿¡¼­ ¿¬°áÀ» ÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Â ±âº» °ªÀÌ À־ Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥À»
»ç¿ëÇÒ ¶§¸¶´Ù ¸í·ÉÇà¿¡¼­ ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾Ê¾Æµµ µÈ´Ù:

¤· Ȩ µð·ºÅ丮ÀÇ '.my.cnf' ¼³Á¤ ÆÄÀÏÀÇ [client]  ¼½¼Ç¿¡¼­ ¿¬°á º¯¼ö¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
ÆÄÀÏ¿¡¼­ ÀÌ¿Í ¿¬°üµÈ ¼½¼ÇÀº ´ÙÀ½°ú °°´Ù:
[client]
host=host_name
user=user_name
password=your_pass

4.14.4 [option files] Âü°í.

¤· ȯ°æ º¯¼ö¸¦ »ç¿ëÇÏ¿© ¿¬°á º¯¼ö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. È£½ºÆ®´Â MYSQL_HOST ·Î ÁöÁ¤ÇÒ ¼ö
ÀÖ´Ù. Mysql  »ç¿ëÀÚ À̸§Àº USER, LOGNAME, ¶Ç´Â LOGINÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. (ÀÌ·¯ÇÑ °ªµéÀº
ÀÌ¹Ì À¯´Ð½º ·Î±×ÀÎ À̸§À¸·Î ¼³Á¤µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ±×·¯¹Ç·Î ¹Ù²ÙÁö ¾Ê´Â°Ô ÁÁ´Ù) ºñ¹Ð¹ø
È£´Â MYSQL_PWD·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.(±×·¸Áö¸¸ ÀÌ°ÍÀº ¾ÈÀüÇÏÁö ¾Ê´Ù; ´ÙÀ½ ¼½¼ÇÀ» Âü°íÇÏÀÚ)

¿¬°á º¯¼ö°¡ ¿©·¯ °¡Áö ¹æ¹ýÀ» ÁöÁ¤µÇ¾ú´Ù¸é ¸í·ÉÇà¿¡¼­ ÁöÁ¤ÇÑ °ªÀÌ ¼³Á¤ ÆÄÀÏ°ú ȯ°æ º¯
¼ö·Î ¼³Á¤ÇÑ °Íº¸´Ù ¿ì¼±±ÇÀ» °¡Áø´Ù. ¶ÇÇÑ ¼³Á¤ ÆÄÀÏÀÇ °ªÀÌ È¯°æ º¯¼öº¸´Ù ¿ì¼±±ÇÀ» °¡Áø
´Ù.

6. 2. 1 ºñ¹Ð¹øÈ£ÀÇ º¸¾È À¯Áö

´Ù¸¥ »ç¿ëÀÚ°¡ ¹ß°ßÇÒ ¼ö ÀÖ°Ô ºñ¹Ð¹øÈ£¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº ±ÇÇÏÁö ¾Ê´Â´Ù. Ŭ¶óÀ̾ðÆ® ÇÁ
·Î±×·¥À» ½ÇÇàÇÒ ¶§ ºñ¹Ð¹øÈ£¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº ¾Æ·¡¿Í °°À¸¸ç °¢ ¹æ¹ý¸¶´Ù À§Çèµµ¸¦ °°ÀÌ
¼³¸íÇÏ¿´´Ù:

¤· ¸í·ÉÇà¿¡¼­ -pyour_pass ¶Ç´Â --password=your_pass ¿É¼Ç »ç¿ë.  ÀÌ ¹æ¹ýÀº Æí¸®ÇÏÁö¸¸
À§ÇèÇÑ ¹æ¹ýÀÌ´Ù. ºñ¹Ð¹øÈ£¸¦ ½Ã½ºÅÛ »óȲ ÇÁ·Î±×·¥(ps µî)À» ÅëÇØ º¼ ¼ö Àֱ⠶§¹®¿¡ ´Ù¸¥
»ç¿ëÀÚ°¡ ¸í·©ÇàÀ¸·Î º¼ ¼ö ÀÖ´Ù.(mysql Ŭ¶óÀ̾ðÆ®´Â ÀϹÝÀûÀ¸·Î ÃʱâÈ­µÇ´Â µ¿¾È ¸í·ÉÇà
ÀÎÀÚ¸¦ 0À¸·Î µ¤¾î¾º¿î´Ù. ±×·¸Áö¸¸ °ªÀ» º¼ ¼ö Àִ ªÀº Æ´ÀÌ ¿©ÀüÈ÷ ÀÖ´Ù)

¤· -p ¶Ç´Â --password ¿É¼Ç »ç¿ë(ºñ¹Ð¹øÈ£ °ªÀ» ÁöÁ¤ÇÏÁö´Â ¾ÊÀ½). ÀÌ·± °æ¿ì Ŭ¶óÀ̾ðÆ®
ÇÁ·Î±×·¥Àº Å͹̳ο¡¼­ ºñ¹Ð¹øÈ£¸¦ ¹°¾îº»´Ù:
shell> mysql -u user_name -p
Enter password: ********

Ŭ¶óÀ̾ðÆ®´Â ºñ¹Ð¹øÈ£¸¦ Ä¥ ¶§ Å͹̳ο¡¼­ '*'  ¹®ÀÚ¸¦ º¸¿©ÁØ´Ù. ±×·¯¹Ç·Î ´Ù¸¥ »ç¿ëÀÚ°¡
ºñ¹Ð¹øÈ£¸¦ º¼ ¼ö ¾ø´Ù. ´Ù¸¥ »ç¿ëÀÚ°¡ º¼ ¼ö ¾øÀ¸¹Ç·Î ¸í·ÉÇà¿¡¼­ ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇÏ´Â °Í
º¸´Ù ÈξÀ ´õ ¾ÈÀüÇÏ´Ù. ±×·¸Áö¸¸ ÀÌ ¹æ¹ýÀº ºñ´ëÈ­½ÄÀÇ ½ºÅ©¸³Æ®·Î Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥À»
»ç¿ëÇϸé ÀûÀýÇÏÁö ¾Ê´Ù.

¤· ¼³Á¤ ÆÄÀÏ¿¡ ºñ¹Ð¹øÈ£ ÀúÀå. ¿¹¸¦ µé¾î Ȩ µð·ºÅ丮ÀÇ '.my.cnf' ÆÄÀÏ¿¡¼­ [client] ¼½
¼Ç¿¡ ºñ¹Ð¹øÈ£¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
[client]
password=your_pass

ºñ¹Ð¹øÈ£¸¦ '.my.cnf' ÆÄÀÏ¿¡ ÀúÀåÇÑ´Ù¸é ±× ÆÄÀÏÀº ±×·ìÀ̳ª ´Ù¸¥ »ç¿ëÀÚ°¡ Àбâ/¾²±â¸¦
ÇÒ ¼ö ¾øµµ·Ï ÇØ¾ß ÇÑ´Ù. ÆÄÀÏÀÇ Æ۹̼ÇÀÌ 400 À̳ª 600 ÀÎÁö È®ÀÎÇÏÀÚ.

4.14.4 [¿É¼Ç ÆÄÀÏ] Âü°í.

¤· ºñ¹Ð¹øÈ£¸¦ MYSQL_PWD ȯ°æ º¯¼ö¿¡ ÀúÀåÇÒ ¼ö ÀÖ´Ù. ±×·¸Áö¸¸ ÀÌ ¹æ¹ýÀº Á¤¸»·Î À§ÇèÇÏ
¸ç »ç¿ëÇؼ­´Â ¾ÈµÈ´Ù. ÀϺΠps ÇÁ·Î±×·¥Àº ½ÇÇà ÇÁ·Î¼¼½ºÀÇ È¯°æº¯¼ö¸¦ º¸¿©ÁÖ´Â ¿É¼ÇÀÌ
ÀÖ´Ù; MYSQL_PWD¿¡ ¼³Á¤À» ÇÏ¸é ´Ù¸¥ »ç¶÷µéÀÌ ½±°Ô ºñ¹Ð¹øÈ£¸¦ º¼ ¼ö ÀÖ´Ù. ÀÌ·± ±â´ÉÀÇ p
s°¡ ¾ø´Â ½Ã½ºÅÛÀÏÁö¶óµµ ÇÁ·Î¼¼½º ȯ°æº¯¼ö¸¦ °Ë»öÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø´Ù°í »ý°¢ÇÏ´Â °Í
Àº Çö¸íÇÏÁö ¸øÇÏ´Ù.

ÀÌÁß¿¡¼­ °¡Àå ¾ÈÀüÇÑ ¹æ¹ýÀº Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ÀÌ ºñ¹Ð¹øÈ£¸¦ ¿ä±¸Çϰųª ÀûÀýÇÏ°Ô º¸¾È
ÀÌ µÈ '.my.cnf' ÆÄÀÏ¿¡ ºñ¹Ð¹øÈ£¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù.

6.3 mysql¿¡¼­ Á¦°øÇÏ´Â ±ÇÇÑ

±ÇÇÑ°ú °ü·ÃµÈ Á¤º¸´Â mysql µ¥ÀÌÅͺ£À̽ºÀÇ(µ¥ÀÌÅͺ£À̽º À̸§ÀÌ mysql ÀÓ) user, db, hos
t, table_priv, columns_priv  Å×ÀÌºí¿¡ ÀúÀåµÈ´Ù. mysql ¼­¹ö´Â ½ÃÀÛÇÒ ¶§, ±×¸®°í ȯ°æÀ»
ÁöÁ¤ÇÒ ¶§(6.7 [±ÇÇÑ º¯°æ] Âü°í) ÀÌ Å×À̺íÀÇ ³»¿ëÀ» ÀоîµéÀδÙ.

mysql¿¡¼­ Á¦°øÇÏ´Â ±ÇÇÑÀ» ¼³Á¤ÇÒ ¶§ »ç¿ëÇÏ´Â À̸§Àº ¾Æ·¡¿Í °°´Ù.Å×À̺íÀÇ Ä÷³ À̸§Àº
grant tablesÀÇ °¢ ±ÇÇÑ ¹× ±ÇÇÑÀÌ Àû¿ëµÇ´Â context¿Í ¿¬°üµÇ¾î ÀÖ´Ù.


Privilege              Column         Context
(±ÇÇÑ)          (Ä÷³)         (ȯ°æ)
select         Select_priv     tables
insert         Insert_priv     tables
update         Update_priv     tables
delete         Delete_priv     tables
index          Index_priv      tables
alter          Alter_priv      tables
create         Create_priv     databases, tables or indexes
drop            Drop_priv       databases or tables
grant          Grant_priv      databases or tables
reload         Reload_priv     server administration
shutdown       Shutdown_priv   server administration
process        Process_priv    server administration
file            File_priv               file access on server


select, insert, update, delete ±ÇÇÑÀº µ¥ÀÌÅͺ£À̽ºÀÇ Å×ÀÌºí¿¡¼­ ·¹Äڵ忡 ´ëÇÑ ¿ÀÆÛ·¹
À̼ÇÀ» ÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù.

SELECT ¹®Àº ¿ÀÁ÷ ½ÇÁ¦·Î Å×ÀÌºí¿¡¼­ ÁÙ(·¹ÄÚµå)¸¦ °¡Á®¿Ã ¶§¸¸ select ±ÇÇÑÀÌ ÇÊ¿äÇÏ´Ù.
¼­¹öÀÇ µ¥ÀÌÅͺ£À̽º¿¡ Á¢±Ù ±ÇÇÑÀÌ ¾ø´Â °æ¿ì¶ó°í ÇÏ´õ¶óµµ ƯÁ¤ÇÑ SELECT  ¹®Àº »ç¿ëÇÒ
¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é °£´ÜÇÑ °è»êÀ» À§ÇØ mysql Ŭ¶óÀ̾ðÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù:

mysql> SELECT 1+1;
mysql> SELECT PI()*2;

index(À妽º) ±ÇÇÑÀº À妽º¸¦ »ý¼ºÇϰųª Á¦°ÅÇÒ ¼ö ÀÖ´Ù.

alter ±ÇÇÑÀº ALTER TABLE À» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

create  ¿Í drop ±ÇÇÑÀº »õ·Î¿î µ¥ÀÌÅͺ£À̽º¿Í Å×À̺íÀ» »ý¼ºÇϰųª Á¸ÀçÇÏ´Â µ¥ÀÌÅͺ£ÀÌ
½º¿Í Å×À̺íÀ» Á¦°ÅÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù.

»ç¿ëÀÚ¿¡°Ô mysql µ¥ÀÌÅͺ£À̽ºÀÇ drop ±ÇÇÑÀ» Çã¿ëÇϸé, ±× »ç¿ëÀÚ´Â mysql Á¢±Ù±ÇÇÑ Á¤º¸
°¡ ÀúÀåµÈ µ¥ÀÌÅͺ£À̽º¸¦ ¾ø¾Ù ¼ö Àִٴ°Í!À» ¸í½ÉÇÏÀÚ.


grant ±ÇÇÑÀº »ç¿ëÀÚ°¡ °¡Áö°í ÀÖ´Â ±ÇÇÑÀ» ´Ù¸¥ »ç¿ëÀÚ°¡ °¡Áú ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù.

file ±ÇÇÑÀº LOAD DATA INFILE and SELECT ... INTO OUTFILE  ¹®À» ÀÌ¿ëÇÏ¿© ¼­¹ö¿¡ ÆÄÀÏÀ»
ÀúÀåÇÏ°í ÀÐÀ» ¼ö ÀÖ´Â ±ÇÇÑÀ» Çã¿ëÇÑ´Ù. ÀÌ·¯ÇÑ ±ÇÇÑÀ» °¡Áø »ç¿ëÀÚ´Â mysql ¼­¹ö°¡ Àаí
¾µ ¼ö ÀÖ´Â ÆÄÀÏÀ» ÀÐ°í ¾µ ¼ö ÀÖ´Â ±ÇÇÑÀÌ Çã¿ëµÈ´Ù.

³ª¸ÓÁö ±ÇÇѵéÀº °ü¸®ÀÚ ¿ÀÆÛ·¹À̼ǿ¡ »ç¿ëµÇ¸ç mysqladmin ÇÁ·Î±×·¥ÀÇ ±â´ÉÀ» ¼öÇàÇÑ´Ù.
¾Æ·¡ÀÇ Å×À̺íÀº °¢ °ü¸®ÀÚ ±ÇÇÑ¿¡ µû¶ó »ç¿ëÇÒ ¼ö ÀÖ´Â mysqladmin ¸í·ÉÀ» º¸¿©ÁØ´Ù:

Privilege              Commands permitted to privilege holders
(±ÇÇÑ)          (±ÇÇÑ¿¡ µû¶ó Çã¿ëµÇ´Â ¸í·É)
reload         reload, refresh, flush-privileges, flush-hosts, flush-logs, flush-tab
les
shutdown       shutdown
process        processlist, kill


reload ¸í·ÉÀº ¼­¹ö°¡ grant Å×À̺íÀ» ´Ù½Ã ÀÐ¾î µéÀδÙ. refresh ¸í·ÉÀº ¸ðµç ¿­¸° Å×À̺í
À» ´ÝÀ¸¸ç ·Î±× ÆÄÀÏÀ» ¿­°í ´Ý´Â´Ù. flush-privileges ´Â reload ¸í·É°ú µ¿ÀǾîÀÌ´Ù. ´Ù¸¥
flush-* ¸í·ÉÀº refresh ¿Í ºñ½ÁÇÑ ±â´ÉÀ» ¼öÇàÇÑ´Ù. ±×·¯³ª ¹üÀ§¿¡ Á¦ÇÑÀÌ ÀÖÀ¸¸ç ¾î¶² °æ
¿ì¿¡´Â ´õ ¼±ÅÃÇÒ ¸¸ÇÏ´Ù. ¿¹¸¦ µé¾î ·Î±× ÆÄÀϸ¸ ´Ý°í ´Ù½Ã ¿­°íÀÚ ÇÑ´Ù¸é flush-logs °¡
refreshº¸´Ù ´õ ³ªÀº ¼±ÅÃÀÌ´Ù.
(** flushÀÇ ¿É¼ÇÀ¸·Î´Â È£½ºÆ®, ·Î±× ÆÄÀÏ, ±ÇÇÑ ¼³Á¤, Å×À̺í, status variables ¼³Á¤ º¯
¼ö°¡ ÀÖ´Ù. SQL ¹®¿¡¼­ ¶Ç´Â mysqladmin À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ¸é µÈ´Ù. **)

shutdown ¸í·ÉÀº ¼­¹ö¸¦ ¼Ë´Ù¿îÇÑ´Ù. (** ÀÌ°Å ¹ø¿ª ¸Â¾Æ~~?? **)

processlist ¸í·ÉÀº ¼­¹ö¿¡¼­ ½ÇÇàµÇ°í ÀÖ´Â ½º·¹µå¿¡ ´ëÇÑ Á¤º¸¸¦ º¸¿©ÁØ´Ù. kill ¸í·ÉÀº
¼­¹ö ½º·¹µå¸¦ Á×ÀδÙ. ¾ðÁ¦³ª ÀÚ½ÅÀÇ ½º·¹µå´Â º¸°Å³ª Á×ÀÏ ¼ö ÀÖÁö¸¸ ´Ù¸¥ »ç¿ëÀÚ¿¡ ÀÇÇØ
½ÃÀÛµÈ ½º·¹µå´Â ÇÁ·Î¼¼½º ±ÇÇÑÀÌ ÀÖ¾î¾ß º¸°Å³ª Á×ÀÏ ¼ö ÀÖ´Ù.

¸î°¡Áö ±ÇÇÑÀº Á¶½É½º·´°Ô Çã¿ëÇØ¾ß ÇÑ´Ù:y:

¤· grant(Çã¿ë) ±ÇÇÑÀº »ç¿ëÀÚ°¡ ´Ù¸¥ »ç¿ëÀÚÀÇ ±ÇÇÑÀ» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù. ´Ù¸¥
±ÇÇÑ°ú grant ±ÇÇÑÀ» °¡Áø µÎ »ç¿ëÀÚ´Â ±ÇÇÑÀ» °áÇÕÇÒ ¼ö ÀÖ´Ù.
¤· file ±ÇÇÑÀº ¼­¹ö¿¡¼­ ¸ðµç »ç¶÷ÀÌ Àб⠰¡´ÉÇÑ ÆÄÀÏÀ» Àдµ¥ ³²¿ë µÉ ¼ö ÀÖ.... SELEC
T  ¹®À» ÀÌ¿ëÇØ Á¢±ÙÇÒ ¼ö ÀÖ´Â ³»¿ë...
The file privilege can be abused to read any world-readable file on the server into a
database table, the contents of which can then be accessed using SELECT.
(** ±»ÀÌ ±ÇÇÑÀ» ÁÖÁö ¾Ê¾Æµµ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ±ÇÇÑÀ» ÁÖÁö ¾Ê´Â°Ô ³´´Ù´Â ¸»ÀÌ°ÚÁö¿ä
**)
¤· shutdown ±ÇÇÑÀº ´Ù¸¥ »ç¿ëÀÚ¿¡°¡ ¿ÏÀüÈ÷ ¼­ºñ½º¸¦ »ç¿ëÇÏÁö ¸øÇϵµ·Ï ³²¿ëµÉ ¼ö ÀÖ´Ù.
¤·  process ±ÇÇÑÀº ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇÏ°í ¹Ù²Ù´Â ÁúÀǸ¦ Æ÷ÇÔÇØ ÇöÀç ¼öÇàÇÏ°í ÀÖ´Â ÁúÀǸ¦
º¸´Âµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.
¤· mysql µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ±ÇÇÑÀº ºñ¹Ð¹øÈ£¿Í ´Ù¸¥ Á¢±Ù ±ÇÇÑ Á¤º¸¸¦ ¹Ù²Ù´Â µ¥ »ç¿ëµÉ
¼ö ÀÖ´Ù. (ºñ¹Ð¹øÈ£°¡ ¾ÏȣȭµÇ¾î ÀúÀåµÇ¾ú´Ù°í ÇÏ´õ¶óµµ, ÃæºÐÇÑ ±ÇÇÑÀ» °¡Áø ¾ÇÀÇÀÖ´Â »ç
¿ëÀÚ´Â ´Ù¸¥ ºñ¹Ð¹øÈ£·Ñ ¹Ù²Ü ¼ö ÀÖ´Ù)

mysql ±ÇÇÑ ½Ã½ºÅÛÀ¸·Î ´Ù·ê ¼ö  ¾ø´Â ¸î°¡Áö°¡ ÀÖ´Ù:
¤· Á¢±ÙÀ» °ÅºÎÇÒ »ç¿ëÀÚ¸¦ ¸í¹éÇÏ°Ô ÁöÁ¤ÇÒ ¼ö ¾ø´Ù. ¿Ö³ÄÇÏ¸é »ç¿ëÀÚ¿Í ¿¬°áÀ» °ÅºÎÇÏ´Â
°ÍÀ» ¿ÏÀüÇÏ°Ô ¿¬°ü½Ãų ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.
¤· »ç¿ëÀÚ°¡ Å×ÀÌÅͺ£À̽º¿¡¼­ Å×À̺íÀ» ¸¸µé°í Áö¿ï ¼ö ÀÖ´Â ±ÇÇÑÀ» °¡Áú ¼ö ÀÖÁö¸¸ µ¥ÀÌ
Åͺ£À̽º ÀÚü¸¦ ¸¸µé°í »èÁ¦ÇÒ ¼ö´Â ¾øµµ·Ï ÁöÁ¤ÇÒ ¼ö ¾ø´Ù.
(** ±×·¯´Ï±î create ¿Í drop ±ÇÇÑÀ» ÁÖ¸é µ¥ÀÌÅͺ£À̽º ÀÚü¿¡ ´ëÇØ Á¦¾îÇÒ ¼ö ÀÖÁö¿ä. ±×
¾ÈÀÇ Å×ÀÌºí¸¸ ¸¸µé°í Áö¿ï ¼ö ÀÖµµ·Ï ÇÏÁö´Â ¸øÇÑ´Ù´Â ¸» **)

{{}}
6.4 ±ÇÇÑ ½Ã½ºÅÛ ÀÛµ¿ ¹æ¹ý

mysql ±ÇÇÑ ½Ã½ºÅÛÀº ¸ðµç »ç¿ëÀÚ°¡ Çã¿ëµÈ °Í¸¸Å­¸¸ ÇÒ ¼ö ÀÖµµ·Ï º¸ÁõÇÑ´Ù. mysql ¼­¹ö¿¡
¿¬°áÇÒ ¶§, »ç¿ëÀÚ È®ÀÎÀº ¿¬°áÇÑ È£½ºÆ®¿Í »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ »ç¿ëÀÚ À̸§¿¡ ÀÇÇØ °áÁ¤µÈ´Ù.
½Ã½ºÅÛÀº »ç¿ëÀÚ È®Àΰú ÁöÁ¤ÇÑ ±ÇÇÑ¿¡ µû¶ó ±ÇÇÑÀ» Çã¿ëÇÑ´Ù.


mysqlÀº »ç¿ëÀÚ¸¦ È®ÀÎÇϴµ¥ È£½ºÆ®À̸§°ú »ç¿ëÀÚ À̸§ µÑ´Ù »ç¿ëÇÑ´Ù. ¿Ö³Ä¸é ÀÎÅͳݿ¡¼­
À̸§ÀÌ °°´Ù°í °°Àº »ç¿ëÀÚ¶ó°í »ý°¢ÇÒ ¼ö´Â ¾ø±â ¶§¹®ÀÌ´Ù. ¿¹¸¦ µé¾î whitehouse.gov¿¡¼­
Á¢¼ÓÇÏ´Â »ç¿ëÀÚ bill Àº microsoft.com¿¡¼­ Á¢¼ÓÇÏ´Â »ç¿ëÀÚ bill °ú °°Àº »ç¶÷ÀÏ ÇÊ¿ä´Â
¾ø´Ù. mysqlÀº ¶§·Ð °°Àº À̸§À» °¡Áö°í ÀÖ´õ¶óµµ È£½ºÆ®¸¦ ÀÌ¿ëÇØ »ç¿ëÀÚ¸¦ ±¸º°ÇÑ´Ù : wh
itehouse.gov¿¡¼­ Á¢¼ÓÇÏ´Â bill¿¡°Ô ƯÁ¤ÇÑ ±ÇÇÑÀ» Çã¿ëÇÒ ¼ö ÀÖ°í microsoft.com¿¡¼­ Á¢
¼ÓÇÏ´Â bill¿¡°Ô ´Ù¸¥ ±ÇÇÑÀ» Çã¿ëÇÒ ¼ö ÀÖ´Ù.

mysqlÀÇ Á¢±Ù Á¦¾î´Â µÎ°¡Áö ´Ü°è°¡ ÀÖ´Ù:

´Ü°è 1: ¼­¹ö¿¡¼­ »ç¿ëÀÚ°¡ ¿¬°áÇÒ ¼ö ÀÖ´ÂÁö ¾ø´ÂÁö ÆÇ´Ü

´Ü°è 2 (¼­¹ö¿¡ »ç¿ëÀÚ°¡ ¿¬°áÀÌ Çã¿ëµÇ¾úÀ» °æ¿ì) : »ç¿ëÀÚ°¡ ¼öÇàÇÏ·Á´Â ¸í·É¿¡ ´ëÇØ Ãæ
ºÐÇÑ ±ÇÇÑÀÌ ÀÖ´ÂÁö °¢ ¿äû¸¶´Ù ¼­¹ö¿¡¼­ ÆÇ´Ü.¿¹¸¦ µé¸é, µ¥ÀÌÅͺ£À̽ºÀÇ Å×ÀÌºí¿¡¼­ sel
ect rows¸¦ ÇÒ¶§, ¶Ç´Â µ¥ÀÌÅͺ£À̽º¿¡¼­ Å×À̺íÀ» Á¦°ÅÇÒ ¶§ ¼­¹ö¿¡¼­ Å×ÀÌºí¿¡ ´ëÇÑ sele
ct ±ÇÇÑÀÌ ÀÖ´ÂÁö µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ Á¦°Å ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÀ» ÇÑ´Ù.



¼­¹ö´Â Á¢±Ù Á¦¾îÀÇ °¢ µÎ ´Ü°è¿¡¼­ mysql µ¥ÀÌÅͺ£À̽ºÀÇ user, db, host Å×À̺íÀ» ÀÌ¿ëÇÑ
´Ù.grant Å×À̺íÀÇ Çʵå´Â ¾Æ·¡¿Í °°´Ù:

Table name     user            db              host
Scope fields   Host            Host            Host
(ÇÊµå ¹üÀ§)     User            Db              Db
              Password                User
Privilege fields      Select_priv     Select_priv     Select_priv
(±ÇÇÑ Çʵå)     Insert_priv     Insert_priv     Insert_priv
              Update_priv     Update_priv     Update_priv
              Delete_priv     Delete_priv     Delete_priv
              Index_priv      Index_priv      Index_priv
              Alter_priv      Alter_priv      Alter_priv
              Create_priv     Create_priv     Create_priv
              Drop_priv       Drop_priv       Drop_priv
              Grant_priv      Grant_priv      Grant_priv
              Reload_priv             
              Shutdown_priv           
              Process_priv            
              File_priv               


Á¢±Ç Á¦¾îÀÇ µÎ¹ø° ´Ü°è¸¦ À§ÇØ(¿äû ÀÎÁõ), ¿äûÀÌ Å×ÀÌºí¿¡ °ü°èµÈ °ÍÀ̶ó¸é Ãß°¡ÀûÀ¸·Î
tables_priv ¿Í columns_priv Å×À̺íÀ» Âü°íÇÑ´Ù. ÀÌ Å×À̺íÀÇ Çʵå´Â ´ÙÀ½°ú °°´Ù:

Table name     tables_priv     columns_priv
Scope fields   Host            Host
              Db              Db
              User            User
              Table_name      Table_name
                              Column_name
Privilege fields      Table_priv      Type
              Column_priv     
Other fields   Timestamp       Timestamp
              Grantor




°¢ ½ÂÀÎ(grant) Å×À̺íÀº ÇÊµå ¹üÀ§¿Í ±ÇÇÑ Çʵå·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

ÇÊµå ¹üÀ§´Â Å×ÀÌºí¿¡¼­ °¢ ¿£Æ®¸®ÀÇ ¹üÀ§¸¦ °áÁ¤ÇÑ´Ù. ´Ù½Ã ¸»ÇÏ¸é ¿£Æ®¸®°¡ Àû¿ëµÇ´Â con
text(ȯ°æ, ¹è°æ)ÀÌ´Ù. ¿¹¸¦ µé¸é, Host ¿Í User °ªÀÌ 'thomas.loc.gov' ¿Í 'bob' ÀÎ user
Å×ÀÌºí ¿£Æ®¸®´Â thomas.loc.gov È£½ºÆ®¿¡¼­ bobÀÌ ¿¬°áÀ» ÇÒ¶§ ¼­¹ö¿¡¼­ ÀÎÁõÀ» Çϴµ¥ »ç
¿ëµÈ´Ù.ºñ½ÁÇÏ°Ô Host, User, db Çʵ尪ÀÌ  'thomas.loc.gov', 'bob', 'reports' ÀÎ db Å×
ÀÌºí ¿£Æ®¸®´Â thomas.loc.gov È£½ºÆ®¿¡¼­ bob ÀÌ reports µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇÒ ¶§ »ç¿ë
µÈ´Ù. tables_priv ¿Í columns_priv Å×À̺íÀº Å×À̺íÀ̳ª °¢ ¿£Æ®¸®°¡ Àû¿ëµÉ ¼ö ÀÖ´Â Å×ÀÌ
ºí/Ä÷³ Á¶ÇÕÀ» °¡¸®Å°´Â ¹üÀ§ Çʵ带 Æ÷ÇÔÇÏ°í ÀÖ´Ù.

Á¢±Ç üũ¸¦ Çϱâ À§ÇØ, HOst °ª ºñ±³´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â´Ù. User, Password, Db,
Table_name °ªÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÑ´Ù. mysql 3.22.12 ¿Í  ÀÌÈÄ ¹öÀü¿¡¼­ Column_name °ªÀº
´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â´Ù. (3.22.11¿¡¼­´Â ´ë¼Ò¹®ÀÚ ±¸º°ÇÔ)

±ÇÇÑ Çʵå´Â Å×ÀÌºí ¿£Æ®¸®¿¡ ½ÂÀεǴ ±ÇÇÑÀ» °¡¸®Å°¸ç ÀÌ´Â ¼öÇàÇÒ ¼ö ÀÖ´Â ¿ÀÆä·¹À̼ÇÀÌ
´Ù. ¼­¹ö´Â »ç¿ëÀÚÀÇ ±ÇÇÑÀ» ¿Ïº®ÇÏ°Ô ¼³Á¤Çϱâ À§ÇØ ´Ù¾çÇÑ ½ÂÀÎ(grant) Å×À̺íÀÇ Á¤º¸¸¦
Á¶ÇÕÇÑ´Ù. ¿©±â¿¡ »ç¿ëÇÏ´Â ±ÔÄ¢Àº 6.6 [Request access]¸¦ Âü°íÇÏÀÚ.

¹üÀ§ Çʵå´Â ¹®ÀÚ¿­ÀÌ¸ç ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾú´Ù; ±âº» °ªÀº ºó ¹®ÀÚ¿­ÀÌ´Ù:

Field name     Type    
Host            CHAR(60)        
User            CHAR(16)        
Password                CHAR(16)        
Db              CHAR(64)      (CHAR(60) for the tables_priv and columns_priv tables)



user, db, host Å×ÀÌºí¿¡¼­ ¸ðµç ±ÇÇÑ Çʵå´Â ENUM('N','Y')·Î Á¤ÀǵǾî ÀÖ´Ù. -- °¢°¢Àº
'N' ³ª 'Y'ÀÇ °ªÀ» °¡Áö¸ç ±âº»°ªÀº 'N' ÀÌ´Ù.
(** ENUM ŸÀÔÀº ¸ñ·Ï °ªÁß ¿ÀÁ÷ ÇϳªÀÇ °ª¸¸ °¡Áø´Ù.Çʵå ŸÀÔ ÂüÁ¶ **)

tables_priv ¿Í columns_priv Å×ÀÌºí¿¡¼­ ±ÇÇÑ Çʵå´Â SET Çʵå·Î Á¤ÀǵȴÙ:
(** SET ŸÀÔÀº ¸ñ·Ï °ªÁß¿¡ 0À̳ª 1°³ ÀÌ»óÀÇ °ªÀ» °¡Áø´Ù **)

Table name     Field name     Possible set elements
tables_priv     Table_priv      'Select', 'Insert', 'Update',
                              'Delete', 'Create', 'Drop', 'Grant',
                              'References', 'Index', 'Alter'
tables_priv     Column_priv     'Select', 'Insert', 'Update',
                              'References'
columns_priv    Type            'Select', 'Insert', 'Update',
                              'References'

°£´ÜÇÏ°Ô ¸»Çؼ­ ¼­¹ö´Â ½ÂÀÎ(grant) Å×À̺íÀ» ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù:

¤· user Å×À̺íÀÇ scope(¹üÀ§) Çʵå´Â µé¾î¿À´Â ¿¬°á¿¡ ´ëÇØ Çã¿ëÇÒ °ÍÀÎÁö °ÅºÎÇÒ °ÍÀÎÁö
¸¦ °áÁ¤ÇÑ´Ù. Çã¿ëµÈ ¿¬°á¿¡ ´ëÇÏ¿©, ±ÇÇÑ Çʵå´Â »ç¿ëÀÚÀÇ ÀüüÀûÀÎ (superuser) ±ÇÇÑÀ»
°¡¸®Å²´Ù.

¤· db ¿Í host Å×À̺íÀº ÇÔ²² »ç¿ëµÈ´Ù:
      - db Å×À̺íÀÇ ¹üÀ§ Çʵå´Â ¾î¶² È£½ºÆ®¿¡¼­ ¾î¶² µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇØ ¾î¶² »ç¿ë
ÀÚ°¡ Á¢±ÙÇÒ ¼ö ÀÖ´ÂÁö °áÁ¤ÇÑ´Ù. ±ÇÇÑ Çʵå´Â ¾î¶² ¿ÀÆÛ·¹À̼ÇÀÌ Çã¿ëµÇ¾ú´ÂÁö¸¦ °áÁ¤ÇÑ
´Ù.
      - host Å×À̺íÀº db Å×À̺íÀÇ ¿£Æ®¸®¸¦ ¿©·¯°³ÀÇ È£½ºÆ®¿¡ Àû¿ëÇÏ·Á°í ÇÒ ¶§ db Å×
À̺íÀÇ È®ÀåÀ» À§ÇØ »ç¿ëÇÑ´Ù.¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ ÇöÀç ³×Æ®¿÷ÀÇ ¿©·¯ È£½ºÆ®¿¡¼­ µ¥ÀÌÅÍ
º£À̽º¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ·Á¸é,»ç¿ëÀÚÀÇ "db" Å×ÀÌºí ¿£Æ®¸®¿¡ Host °ªÀ» ºñ¿öµÎ°í, "h
ost" Å×ÀÌºí¿¡ °¢ È£½ºÆ®ÀÇ ¿£Æ®¸®¸¦ ³ÖÀ¸¸é µÈ´Ù.ÀÌ·¯ÇÑ ÀýÂ÷´Â 6,6 [Request access]¿¡
ÀÚ¼¼ÇÏ°Ô ³ª¿Í ÀÖ´Ù.

¤· tables_priv ¿Í columns_priv Å×À̺íÀº db Å×À̺í°ú ºñ½ÁÇÏ´Ù. ±×·¸Áö¸¸ ´õ ¼¼ºÎÀûÀ¸·Î
ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù: ÀÌ Å×À̺íµéÀº µ¥ÀÌÅͺ£À̽º ´Ü°è¿¡¼­ ´õ ³ª¾Æ°¡ Å×À̺í°ú Ä÷³ ´Ü°è¿¡ Àû
¿ëÇÒ ¼ö ÀÖ´Ù.

°ü¸® ±ÇÇÑ(reload, shutdown,±âŸ..)Àº ¿ÀÁ÷ user Å×ÀÌºí¿¡¼­¸¸ ÁöÁ¤À» ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ»
±â¾ïÇÏÀÚ! ¿Ö³Ä¸é °ü¸®ÀÚ ¿ÀÆÛ·¹À̼ÇÀº ¼­¹ö ÀÚü¿¡ ´ëÇÑ ¿ÀÆÛ·¹À̼ÇÀ̸ç ƯÁ¤ÇÑ µ¥ÀÌÅͺ£
À̽º¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù. ±×·¯¹Ç·Î ÀÌ·¯ÇÑ ±ÇÇÑÀº ´Ù¸¥ ½ÂÀÎ(grant) Å×ÀÌºí¿¡ ÀÖÀ» ÇÊ
¿ä°¡ ¾ø´Ù.½ÇÁ¦·Î, ¿ÀÁ÷ user Å×ÀÌºí¸¸ÀÌ °ü¸®ÀÚ ¿ÀÆÛ·¹À̼ÇÀ» ¼öÇàÇÒ ¼ö ÀÖ´ÂÁö ¾ø´ÂÁö¸¦
°áÁ¤ÇÒ ¶§ Âü°í°¡ µÈ´Ù.

ÆÄÀÏ(file) ±ÇÇѵµ ¸¶Âù°¡Áö·Î user Å×ÀÌºí¿¡¼­¸¸ ÁöÁ¤ÇÑ´Ù.À§¿Í °°Àº °ü¸® ±ÇÇÑÀº ¾Æ´Ï´Ù.
±×·¸Áö¸¸ ¼­¹ö È£½ºÆ®¿¡¼­ ÆÄÀÏÀ» Àаųª ¾µ ¼ö ÀÖ´Â ±ÇÇÑÀº Á¢±ÙÇÏ°í ÀÖ´Â µ¥ÀÌÅͺ£À̽º¿Í
¹«°üÇÑ °ÍÀÌ´Ù.

mysqld ¼­¹ö´Â ½ÃÀÛÇÒ ¶§ ½ÂÀÎ(grant) Å×À̺íÀ» Çѹø Àд´Ù. ½ÂÀÎ Å×À̺íÀ» º¯°æÇÏ°í È¿°ú
¸¦ ¹ßÈÖÇÏ·Á¸é 6.7 [Privilege changes]¸¦ Âü°íÇÏÀÚ.

½ÂÀÎ Å×À̺íÀÇ ³»¿ëÀ» ¼öÁ¤ÇßÀ» ¶§ ¿øÇϴ´ë·Î ±ÇÇÑÀÌ ¼³Á¤µÇ¾ú´ÂÁö È®ÀÎÇÏ´Â °ÍÀº ÁÁÀº »ý
°¢ÀÌ´Ù. À¯¿ëÇÑ Áø´Ü ÇÁ·Î±×·¥Àº mysqlaccess ½ºÅ©¸³Æ®·Î¼­ Yves CArlier °¡ mysql distrib
ution À¸·Î Á¦°øÇÏ°í ÀÖ´Ù. ¾î¶»°Ô ÀÛµ¿ÇÏ°í ÀÖ´ÂÁö È®ÀÎÇϱâ À§ÇØ mysqlaccess ¿¡ --help
¿É¼ÇÀ» ÁÖ¾î ½ÇÇàÇغ¸ÀÚ. ¹°·Ð 6.11 [Access denied] ¿Í 6.12 [Security]¸¦ Âü°íÇÏÀÚ.


mysqlaccess´Â ¿ÀÁ÷ user, db, host Å×ÀÌºí¸¸ Á¡°ËÇÑ´Ù. Å×À̺íÀ̳ª Ä÷³ ´Ü°èÀÇ ±ÇÇѱîÁö
´Â Á¡°ËÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ.

6.5 Á¢±Ù Á¦¾î, ´Ü°è 1 : ¿¬°á È®ÀÎ(ÀÎÁõ)

mysql ¼­¹ö¿¡ Á¢¼ÓÇÏ·Á°í ÇÒ ¶§ ¼­¹ö´Â »ç¿ëÀÚ È®Àΰú ºñ¹Ð¹øÈ£¸¦ ÅëÇØ Á¢¼ÓÀ» Çã¿ëÇϰųª
°ÅºÎÇÑ´Ù. »ç¿ëÀÚ È®ÀÎÀÌ ¾ÈµÇ¸é ¼­¹ö´Â Á¢¼ÓÀ» ¿ÏÀüÈ÷ °ÅºÎÇÑ´Ù. »ç¿ëÀÚ È®ÀÎÀÌ µÇ¸é ¼­¹ö
´Â ¿¬°áÀ» ¹Þ¾ÆµéÀÌ°í 2¹ø° ´Ü°è·Î µé¾î°¡¸ç ¿äûÀ» ±â´Ù¸°´Ù.

»ç¿ëÀÚ È®ÀÎÀº µÎ°¡Áö Á¤º¸¿¡ ±â¹ÝÇÏ°í ÀÖ´Ù:

¤· Á¢¼ÓÇϴ ȣ½ºÆ®
¤· mysql »ç¿ëÀÚ À̸§

»ç¿ëÀÚ È®ÀÎÀº user Å×À̺íÀÇ ¼¼°¡Áö ¹üÀ§ Çʵå(Host, User, Password)¸¦ »ç¿ëÇÏ¿© ¼öÇàµÈ
´Ù. ¼­¹ö´Â user Å×ÀÌºí ¿£Æ®¸®ÀÇ È£½ºÆ®À̸§°ú »ç¿ëÀÚ À̸§ÀÌ ¸ÂÀ¸¸ç, ºñ¹Ð¹øÈ£°¡ Á¤È®ÇÒ
¶§¸¸ Á¢¼ÓÀ» ¹Þ¾ÆµéÀδÙ.

¾Æ·¡¿Í °°ÀÌ user Å×À̺íÀÇ ¹üÀ§ Çʵ尪À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù:

¤· Host °ªÀº È£½ºÆ® À̸§À̳ª IP ¼ýÀÚ ¶Ç´Â ·ÎÄà ȣ½ºÆ®¸¦ °¡¸®Å°´Â 'localhost' °¡ µÉ °Í
ÀÌ´Ù.
¤· Host Çʵ忡¼­ '%' ¿Í '_' ÀÇ ¿ÍÀϵåÄ«µå ¹®ÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¤· '%'ÀÇ Host °ªÀº ¸ðµç È£½ºÆ® À̸§À» ³ªÅ¸³½´Ù. °ø¹éÀÇ È£½ºÆ® °ªÀº '%'¿Í °°´Ù. ƯÁ¤ÇÑ
È£½ºÆ®¿¡ ´ëÇÑ ÀÌ·¯ÇÑ °ªÀº ´ç½ÅÀÇ ¼­¹ö¿¡ ¿¬°áÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» Âü°íÇÏÀÚ.
¤· ¿ÍÀϵåÄ«µå ¹®ÀÚ´Â User Çʵ忡´Â Çã¿ëµÇÁö ¾Ê´Â´Ù. ±×·¸Áö¸¸ ¸ðµç À¯Àú¿¡ ÇØ´çÇÏ´Â °ø
¹éÀ¸·Î µÑ ¼ö ÀÖ´Ù. ¿¬°áÀ» ÇÏ·Á´Â ¸ñ·Ï¿¡ °ø¹é »ç¿ëÀÚ À̸§ÀÌ ÀÖ´Ù¸é Ŭ¶óÀ̾ðÆ®¿¡¼­ ½ÇÁ¦
·Î ÁöÁ¤ÇÑ À̸§ ´ë½Å¿¡ ±× »ç¿ëÀÚ´Â ÀÍ¸í »ç¿ëÀÚ, À̸§ÀÌ ¾ø´Â »ç¿ëÀڷμ­ °£ÁֵȴÙ.
¤· Password Çʵå´Â °ø¹éÀ¸·Î µÉ ¼ö ÀÖ´Ù.ÀÌ°ÍÀº ¾Æ¹«·± ºñ¹Ð¹øÈ£³ª »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ»
ÀǹÌÇÏ´Â °ÍÀº ¾Æ´Ï¸ç »ç¿ëÀÚ´Â ºñ¹Ð¹øÈ£¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í ¿¬°áÀ» ÇØ¾ß ÇÑ´Ù´Â ÀǹÌÀÌ´Ù.

¾Æ·¡ÀÇ Å×À̺íÀº ¿¬°á ¿äû¿¡ Àû¿ëÇÏ´Â "user" Å×ÀÌºí ¸ñ·ÏÀÇ Host, User °ªÀÌ ¾î¶»°Ô Á¶ÇÕ
µÇ´ÂÁö¸¦ º¸¿©ÁÖ´Â ¿¹Á¦ÀÌ´Ù:

È£½ºÆ®°ª/»ç¿ëÀÚ °ª : ¸ñ·Ï¿¡ ÇØ´çÇÏ´Â ¿¬°á
'thomas.loc.gov'/'fred' : thomas.loc.gov ¿¡¼­ ¿¬°áÇÏ´Â fred
'thomas.loc.gov'/'' : thomas.loc.gov ¿¡¼­ ¿¬°áÇÏ´Â ¸ðµç »ç¿ëÀÚ
'%'/'fred' : ¸ðµç È£½ºÆ®¿¡¼­ ¿¬°áÇÏ´Â fred
'%'/'' : ¸ðµç È£½ºÆ®¿¡¼­ ¿¬°áÇÏ´Â ¸ðµç »ç¿ëÀÚ
'%.loc.gov'/'fred' : loc.gov µµ¸ÞÀÎÀÇ ¸ðµç È£½ºÆ®¿¡¼­ ¿¬°áÇÏ´Â fred
'x.y.%'/'fred' : x.y.net, x.y.com, x.y.edu µî¿¡¼­ Á¢¼ÓÇÏ´Â fred (ÀÌ°ÍÀº ¾Æ¸¶µµ À¯¿ëÇÏ
Áö ¾ÊÀ» °ÍÀÌ´Ù)
'144.155.166.177'/'fred' : 144.155.166.177ÀÇ IP ÁÖ¼Ò¿¡¼­ Á¢¼ÓÇÏ´Â fred
'144.155.166.%'/'fred' : 144.155.166 Ŭ·¡½º C ¼­ºê³ÝÀÇ ¸ðµç È£½ºÆ®¿¡¼­ Á¢¼ÓÇÏ´Â fred


Host Çʵ忡¼­ IP¿¡ ¿ÍÀϵå Ä«µå¸¦ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡(¿¹¸¦ µé¾î '144.155.166.%' ´Â
¼­ºê³ÝÀÇ ¸ðµç È£½ºÆ®¿¡ Àû¿ëµÈ´Ù) 144.155.166.somewhere ¿Í °°Àº È£½ºÆ® À̸§À» ÀÌ¿ëÇÏ¿©
ºÎ´çÇÏ°Ô ÀÌ¿ëÇÒ °¡´É¼ºÀÌ »ý±æ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ °ÍÀ» ¸·±â À§ÇØ mysqlÀº ¼ýÀÚ¿Í µµÆ®(.)À¸
·Î ½ÃÀÛÇϴ ȣ½ºÆ®À̸§Àº Çã¿ëÇÏÁö ¾Ê´Â´Ù. 1.2.foo.com °ú °°Àº È£½ºÆ®¶ó¸é ÀÌ·¯ÇÑ È£½º
Æ®À̸§Àº ½ÂÀÎ(grant) Å×À̺íÀÇ Host Ä÷³°ú ¸ÅÄ¡µÇÁö ¾Ê´Â´Ù. IP ¼ýÀÚ¸¸ÀÌ IP ¿ÍÀϵå Ä«µå
°ª°ú ¸ÅÄ¡½Ãų ¼ö ÀÖ´Ù.

¸¸¾à ÇÑ°³ ÀÌ»óÀÇ user table ¸ñ·ÏÀÌ ÀÖ´Ù¸é ¼­¹ö´Â ¾î¶»°Ô user tableÀ» ¼±ÅÃÇÒ±î? ÀÌ·±
°æ¿ì¿¡´Â user tableÀÇ Á¤·Ä ¼ø¼­¿¡ µû¶ó ÇØ°áÀ» Çϸç , Á¤¿­Àº ¼­¹ö°¡ ½ÃÀÛÇÒ¶§ ¼öÇàÀÌ µÈ
´Ù. user tableÀÌ ´ÙÀ½°ú °°´Ù°í °¡Á¤Çغ¸ÀÚ:


+-----------+----------+-
| Host      | User     | ...
+-----------+----------+-
| %         | root     | ...
| %         | jeffrey  | ...
| localhost | root     | ...
| localhost |          | ...
+-----------+----------+-



¼­¹ö°¡ Å×À̺íÀ» ÀÐÀ» ¶§, ¸ÕÀú ƯÁ¤ÇÏ°Ô ÁöÁ¤µÈ °ªÀÌ Àִ ȣ½ºÆ®ºÎÅÍ ¸ñ·ÏÀ» Á¤¿­ÇÑ´Ù.
(Host Ä÷³¿¡¼­ '%'´Â "¸ðµç È£½ºÆ®"¸¦ ÀǹÌÇÏ¿© ÃÖ¼ÒÇѵµ·Î ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù) ¸ñ·Ï¿¡¼­ È£
½ºÆ®°ªÀÌ °°À¸¸é ¸ÕÀú ƯÁ¤ÇÏ°Ô ÁöÁ¤µÈ »ç¿ëÀÚ°¡ ÀÖ´Â °ÍºÎÅÍ Á¤¿­ÇÑ´Ù.(°ø¹éÀ¸·Î µÇ¾î ÀÖ
´Â User °ªÀº "¸ðµç »ç¿ëÀÚ"¸¦ ÀǹÌÇÏ¿© ÃÖ¼ÒÇѵµ·Î ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù.) ÀÌ·¸°Ô Çϸé Á¤¿­µÈ
user Å×À̺íÀº ´ÙÀ½°ú °°´Ù:



+-----------+----------+-
| Host      | User     | ...
+-----------+----------+-
| localhost | root     | ...
| localhost |          | ...
| %         | jeffrey  | ...
| %         | root     | ...
+-----------+----------+-


Á¤¿­µÈ ¼ø¼­¿¡ µû¶ó ¸ÅĪ ¾Ë°í¸®ÁòÀÌ Àû¿ëµÇ¸ç ¸ÕÀú ¸ÅĪµÇ´Â °ÍÀ» »ç¿ëÇÑ´Ù. localhost¿¡
¼­ jeffrey°¡ ¿¬°áÀ» ÇÏ·ÁÇÒ¶§, Host Ä÷³¿¡¼­ 'localhost' ¸ñ·ÏÀÌ ¸ÕÀú ¸ÅĪµÈ´Ù. ¹°·Ð »ç
¿ëÀÚ À̸§ÀÌ °ø¹éÀÎ ¸ñ·ÏÀº ¿¬°áÇϴ ȣ½ºÆ®³×ÀÓ°ú »ç¿ëÀÚ À̸§¿¡ ¸ÅĪµÈ´Ù. ('%'/'jeffrey
' ¸ñ·Ï ¶ÇÇÑ ¸ÅĪÀÌ µÈ´Ù. ±×·¯³ª Å×ÀÌºí¿¡¼­ óÀ½À¸·Î ¸ÅĪµÇ´Â °ÍÀº ¾Æ´Ï´Ù.)


´Ù¸¥ ¿¹Á¦°¡ ÀÖ´Ù. user Å×À̺íÀÌ ´ÙÀ½°ú °°´Ù°í °¡Á¤Çغ¸ÀÚ:

+----------------+----------+-
| Host           | User     | ...
+----------------+----------+-
| %              | jeffrey  | ...
| thomas.loc.gov |          | ...
+----------------+----------+-


Á¤¿­µÈ Å×À̺íÀº ´ÙÀ½°ú °°´Ù:

+----------------+----------+-
| Host           | User     | ...
+----------------+----------+-
| thomas.loc.gov |          | ...
| %              | jeffrey  | ...
+----------------+----------+-

ù¹ø°·Î thomas.loc.gov¿¡¼­ jeffrey°¡ ¿¬°áÇÏ´Â °ÍÀÌ ¸ÅĪµÇ¸ç, whitehouse.gov ¿¡¼­ jef
frey°¡ ¿¬°áÇÏ´Â °ÅÀº µÎ¹ø°·Î ¸ÅĪÀÌ µÈ´Ù.

¼­¹ö¿¡ ¿¬°áÇÒ ¶§ ¹®Á¦°¡ »ý±â¸é, user Å×À̺íÀ» Ãâ·ÂÇÏ¿© ¾î¶² °ÍÀÌ ¸ÕÀú ¸ÅĪµÇ´ÂÁö Á÷Á¢
Á¤¿­À» ÇÏ¸é µÈ´Ù.


6.6 Á¢±Ù Á¦¾î, 2´Ü°è : ¿äû ÀÎÁõ

{{}}¿¬°áµÇ¾ú´Ù¸é ¼­¹ö´Â 2´Ü°è·Î µé¾î°£´Ù. ¿¬°áÀÌ ¼º»çµÇ¾úÀ» ¶§ °¢ ¿ä±¸¿¡ ´ëÇØ »ç¿ëÀÚ°¡ ¼ö
ÇàÇÏ·Á´Â ¿¬»êÀÇ À¯Çü¿¡ ±â¹ÝÇÏ¿© ¼­¹ö´Â »ç¿ëÀÚ°¡ ÃæºÐÇÑ ±ÇÇÑÀ» °¡Áö°í ÀÖ´ÂÁö Á¡°ËÇÑ´Ù.
¿©±â¼­ ½ÂÀÎ Å×À̺íÀÇ ±ÇÇÑ Çʵ尡 ÀÛµ¿ÇÑ´Ù. ±ÇÇÑÀº user, db, host, table_priv, columns
_priv Å×À̺íÀÇ Á¤º¸¸¦ »ç¿ëÇÑ´Ù. GRANT ¿Í REVOKE ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© ±ÇÇÑ Å×À̺íÀ» ´Ù·ê ¼ö
ÀÖ´Ù. 7.25 [GRANT] Âü°í. (ÀÌÀü¿¡ º¸¾Ò´ø °¢ ±ÇÇÑ Å×À̺íÀÇ ÇÊµå ¸ñ·ÏÀ» Âü°íÇÏ´Â °ÍÀÌ µµ
¿òÀÌ µÉ °ÍÀÌ´Ù; 6.4[Privilege] Âü°í.)

user Å×À̺íÀÇ ½ÂÀÎ ±ÇÇÑÀº »ç¿ëÀÚ¿¡°Ô ÀüüÀûÀÎ ±â¹ÝÀ» Á¦°øÇϸç ÇöÀçÀÇ µ¥ÀÌÅÍ°¡ ¾î¶² °Í
ÀÎÁö¿Í´Â »ó°üÀÌ ¾ø´Ù. ¿¹¸¦ µé¾î, user Å×ÀÌºí¿¡¼­ »ç¿ëÀÚ¿¡°Ô delete ±ÇÇÑÀ» ½ÂÀÎÇß´Ù¸é
¼­¹ö È£½ºÆ®¿¡¼­ ¾î¶² µ¥ÀÌÅͺ£À̽ºÀÇ ·¹ÄÚµå¶óµµ »èÁ¦ÇÒ ¼ö ÀÖ´Ù! ´Ù¸£°Ô ¸»Çؼ­ user Å×
ÀÌºí ±ÇÇÑÀº ½´ÆÛÀ¯Àú ±ÇÇÑÀ̸ç, ½´ÆÛÀ¯Àú(¼­¹ö³ª µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚ µî)¿¡°Ô¸¸ user Å×
ÀÌºí¿¡ ´ëÇÑ ±ÇÇÑÀ» ½ÂÀÎÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´Ù¸¥ »ç¿ëÀÚ¿¡°Ô´Â user Å×ÀÌºí¿¡¼­ ±ÇÇÑÀ» 'N'·Î
¼³Á¤ÇÏ°í, db¿Í host Å×À̺íÀ» »ç¿ëÇÏ¿© ƯÁ¤ µ¥ÀÌÅͺ£À̽º¿¡ ±â¹ÝÇÑ ±ÇÇѽÂÀÎÀ» ÇÏ´Â°Ô ÁÁ
´Ù.

db ¿Í host Å×À̺íÀº ƯÁ¤ µ¥ÀÌÅͺ£À̽ºÀÇ ±ÇÇÑÀ» ½ÂÀÎÇÑ´Ù. °¢ Å×À̺íÀÇ Host ¿Í Db Çʵå
¿¡¼­ ¿ÍÀϵåÄ«µå ¹®ÀÚ '%' ¿Í '_' ¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç °ªÀÌ °ø¹éÀ̸é ÇÊµå ¹üÀ§(scope fie
lds)¿¡¼­ ¸ðµç °ªÀ» Çã¿ëÇÑ´Ù. '%' Host °ªÀº "¸ðµç È£½ºÆ®"¸¦ ÀǹÌÇÑ´Ù. db Å×ÀÌºí¿¡¼­ Ho
st °ªÀÌ °ø¹éÀ̸é "host Å×ÀÌºí¿¡¼­ ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¹®ÀÇÇ϶ó"´Â ÀǹÌÀÌ´Ù. A '%' or bla
nk Db value in the host table means or "any database." (** orÀÇ ¶æÀÌ ¹«¾ùÀÎÁö ¸ð¸£°Ú
³×¿ä. host Å×ÀÌºí¿¡¼­ Db ÀÇ °ªÀÌ '%' ¶Ç´Â °ø¹éÀ̸é "¸ðµç µ¥ÀÌÅͺ£À̽º"¸¦ ÀǹÌÇÑ´Ù´Â
¸» °°Àºµ¥¿ä **) User °ªÀÌ °ø¹éÀ̸é ÀÍ¸í »ç¿ëÀÚ·Î °£ÁֵȴÙ.

¼­¹ö°¡ ½ÃÀÛÇÒ ¶§ db ¿Í host Å×À̺íÀ» Àаí Á¤¿­À» ÇÑ´Ù.(µ¿½Ã¿¡ user Å×À̺íÀ» Àд´Ù.)
db Å×À̺íÀº Host, Db, User ¼øÀ¸·Î ÇÊµå ¹üÀ§¸¦ Á¤¿­Çϸç host Å×À̺íÀº Host, Db ¼øÀ¸·Î
ÇÊµå ¹üÀ§¸¦ Á¤¿­ÇÑ´Ù. user Å×À̺í°ú °°ÀÌ Æ¯Á¤ÇÏ°Ô ÁöÁ¤µÇ¾î ÀÖ´Â °ªÀÌ ¸ÕÀú Á¤¿­µÇ°í ÃÖ
¼ÒÇѵµ·Î ÁöÁ¤µÈ °ªÀÌ ³ªÁß¿¡ Á¤¿­µÈ´Ù. ¼­¹ö¿¡¼­ ¸ÅĪµÇ´Â ¸ñ·ÏÀ» ãÀ»¶§, °¡Àå ¸ÕÀú ¹ß°ß
ÇÑ °ÍÀ» »ç¿ëÇÑ´Ù.

tables_priv ¿Í columns_priv Å×À̺íÀº ƯÁ¤ÇÑ Å×À̺í°ú Ä÷³¿¡ °ü·ÃµÈ ±ÇÇÑÀ» ½ÂÀÎÇÑ´Ù.d
b¿Í host Å×À̺íÀÇ Host Çʵå¿Í °°ÀÌ ¿ÍÀϵåÄ«µå¸¦ Host Çʵ忡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¸Áö
¸¸ Db, Table_name, Column_name Çʵ忡¼­´Â ¿ÍÀϵåÄ«µå³ª °ø¹é°ªÀ» »ç¿ëÇÒ ¼ö ¾ø´Ù.

Host Å×ÀÌºí¿¡¼­¸¸ ¿ÍÀϵåÄ«µå¸¦ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ tables_priv ¿Í columns_priv Å×À̺íÀº
db Å×À̺í°ú ºñ½ÁÇÏ°Ô Á¤¿­ÀÌ µÇ¸ç Á¤¿­Àº °£´ÜÇÏ´Ù.

¿äû ÀÎÁõ °úÁ¤Àº ¾Æ·¡¿¡¼­ ¼³¸íÇÑ´Ù. Á¢±Ù-Á¡°Ë ¼Ò½º Äڵ忡 Ä£¼÷ÇÏ´Ù¸é, ¿©±â¼­ ¼³¸íÇÏ´Â
°ÍÀº Äڵ忡¼­ »ç¿ëµÈ ¾Ë°í¸®Áò°ú´Â ¾à°£ ´Ù¸£´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.¿©±â¼­ÀÇ ¼³¸íÀº ÄÚµå
°¡ ½ÇÁ¦·Î ÀÛµ¿ÇÏ´Â ¹æ½Ä°ú µ¿ÀÏÇÏ´Ù. ´ÜÁö ¼³¸íÀ» °£´ÜÇÏ°Ô Çϴµ¥¼­ Â÷ÀÌ°¡ ÀÖ´Â °ÍÀÌ´Ù.

°ü¸®ÀÚ ¿äû¿¡ ´ëÇؼ­(shutdown, reload µî) ¼­¹ö´Â ´ÜÁö user Å×ÀÌºí¸¸ üũ¸¦ ÇÑ´Ù. ¿Ö³Ä
¸é user Å×ÀÌºí¿¡¼­¸¸ °ü¸®ÀÚ ±ÇÇÑÀ» ÁöÁ¤Çϱ⠶§¹®ÀÌ´Ù. ¸ñ·Ï¿¡¼­ ¿äûµÈ ¿¬»êÀ» Çã¿ëÇϸé
Á¢±ÙÀÌ Çã¿ëµÇ¸ç ¾Æ´Ñ °æ¿ì¿¡´Â Á¢±ÙÀÌ °ÅºÎµÈ´Ù.¿¹¸¦ µé¾î, mysqladmin shutdownÀ» ½ÇÇàÇÏ
°íÀÚ Çϴµ¥ user Å×ÀÌºí ¸ñ·Ï¿¡¼­´Â »ç¿ëÀÚ¿¡°Ô shutdown ±ÇÇÑÀ» ½ÂÀÎÇÏÁö ¾ÊÀ¸¸é, db³ª h
ost Å×À̺íÀ» üũÇÏÁö ¾Ê´õ¶óµµ Á¢±ÙÀÌ °ÅºÎµÈ´Ù. (ÀÌ·¯ÇÑ Å×ÀÌºí¿¡´Â Shutdown_priv Ä÷³
ÀÌ ¾ø±â ¶§¹®¿¡ ÀÌ·¸°Ô ÇÒ ÇÊ¿äµµ ¾ø´Ù)

µ¥ÀÌÅͺ£À̽º¿Í °ü·ÃµÈ ¿äû¿¡ ´ëÇØ(insert, update µî) ¼­¹ö´Â ¸ÕÀú user Å×ÀÌºí ¸ñ·Ï¿¡¼­
»ç¿ëÀÚÀÇ Àüü(½´ÆÛÀ¯Àú) ±ÇÇÑÀ» Á¡°ËÇÑ´Ù. ¸ñ·Ï¿¡¼­ ¿äûÇÑ ¿¬»êÀ» Çã¿ëÇϸé Á¢±ÙÀÌ ½ÂÀÎ
µÈ´Ù.

user Å×ÀÌºí¿¡¼­ ÀüüÀûÀÎ ±ÇÇÑÀÌ ºÒÃæºÐÇϸé, ¼­¹ö´Â db ¿Í host Å×À̺íÀ» Á¡°ËÇÏ¿© µ¥ÀÌ
Åͺ£À̽º¿¡ °ü·ÃµÈ ±ÇÇÑÀ» °áÁ¤ÇÑ´Ù:

1. ¼­¹ö´Â db Å×ÀÌºí¿¡¼­ ¸ÅĪµÇ´Â Host, Db, User Çʵ带 ã´Â´Ù. ¿¬°áÇÏ·Á´Â »ç¿ëÀÚÀÇ È£
½ºÆ® À̸§°ú Mysql »ç¿ëÀÚ À̸§ÀÌ Host ¿Í User¿¡ ¸ÅĪµÇ´Ù. »ç¿ëÀÚ°¡ Á¢±ÙÇϱ⠿øÇÏ´Â µ¥
ÀÌÅͺ£À̽º´Â Db Çʵ忡 ¸ÅĪµÈ´Ù. ÀûÇÕÇÑ Host ¿Í User ¸ñ·ÏÀÌ ¾øÀ¸¸é Á¢±ÙÀº °ÅºÎµÈ´Ù.

2. ¸ÅĪµÇ´Â db Å×ÀÌºí ¸ñ·ÏÀÌ ÀÖ°í Host Çʵ尡 °ø¹éÀÌ ¾Æ´Ï¸é, ¸ñ·ÏÀº »ç¿ëÀÚÀÇ µ¥ÀÌÅͺ£
À̽º °ü·Ã ±ÇÇÑÀ» Á¤ÀÇÇÑ´Ù.


3. ¸ÅĪµÇ´Â db Å×ÀÌºí ¸ñ·ÏÀÇ Host Çʵ尡 °ø¹éÀ̸é, host Å×ÀÌºí¿¡¼­ ¾î¶² È£½ºÆ®°¡ µ¥ÀÌ
Åͺ£À̽º¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´ÂÁö ÆÇ´ÜÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ·± °æ¿ì, ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ À§
ÇØ host Å×ÀÌºí¿¡¼­ ¸ÅĪµÇ´Â Host ¿Í Db Çʵ带 ã´Â´Ù. host Å×ÀÌºí¿¡ ¸ÅĪµÇ´Â ¸ñ·ÏÀÌ
¾øÀ¸¸é Á¢±ÙÀº °ÅºÎµÈ´Ù. ¸ÅĪµÇ´Â ¸ñ·ÏÀÌ ÀÖÀ¸¸é »ç¿ëÀÚÀÇ µ¥ÀÌÅͺ£À̽º °ü·Ã ±ÇÇÑÀº db
¿Í host Å×ÀÌºí ¸ñ·Ï¿¡¼­ ±ÇÇÑÀ» intersection ÇÏ¿© °áÁ¤µÈ´Ù.(** insertectionÀº ±³ÁýÇÕÀ»
»ý°¢ÇÏ¸é µÇÁö¿ä. and Á¶°Ç **) ´Ù½Ã ¸»Çؼ­, db¿Í host Å×ÀÌºí µÑ ´Ù 'Y'·Î µÇ¾îÀÖÀ» ¶§
±ÇÇÑÀÌ ¼³Á¤µÈ´Ù.ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î db Å×ÀÌºí¿¡¼­ ÀϹÝÀûÀÎ ±ÇÇÑÀ» ½ÂÀÎÇÒ ¼ö ÀÖÀ¸¸ç, ±×·¯
°í³ª¼­ host Å×ÀÌºí ¸ñ·ÏÀ» »ç¿ëÇØ host¸¦ ±â¹ÝÀ¸·Î ÇÏ¿© ¼±ÅÃÀûÀ¸·Î ±ÇÇÑÀ» Á¦ÇÑÇÒ ¼ö ÀÖ
´Ù.)

db ¿Í host Å×ÀÌºí ¸ñ·ÏÀ» ÀÌ¿ëÇØ µ¥ÀÌÅͺ£À̽º¿Í °ü·ÃµÈ ±ÇÇÑ ½ÂÀÎÀ» °áÁ¤ÇÑ ÈÄ, ¼­¹ö´Â
ÀÌ·¯ÇÑ Á¤º¸¸¦ user Å×ÀÌºí¿¡¼­ ½ÂÀÎÇÑ ÀüüÀûÀÎ ±ÇÇÑ¿¡ Ãß°¡ÇÑ´Ù. ±× °á°ú°¡ ¿äûÇÑ ¿¬»ê
À» Çã¿ëÇϸé Á¢±ÙÀÌ Çã¿ëµÈ´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î, ¼­¹ö´Â tables_priv ¿Í columns_priv Å×À̺í
¿¡¼­ »ç¿ëÀÚÀÇ Å×À̺í°ú Ä÷³ ±ÇÇÑÀ» Á¡°ËÇÏ°í »ç¿ëÀÚÀÇ ±ÇÇÑ¿¡ Ãß°¡ÇÑ´Ù. ±× °á°ú¿¡ µû¶ó
Á¢±ÙÀÌ Çã¿ëµÇ°Å³ª °ÅºÎµÈ´Ù.

¿Ö ¼­¹ö¿¡¼­ ÀüüÀûÀÎ »ç¿ëÀÚ ¿£Æ®¸® ±ÇÇÑ¿¡ µ¥ÀÌÅͺ£À̽º, Å×À̺í, Ä÷³¿¡ °ü·ÃµÈ ±ÇÇÑÀ»
Ãß°¡ÇÏ´ÂÁö°¡ ¸íÈ®ÇÏÁö ¾Ê´Ù.... ÀÌ·± °æ¿ì »ç¿ëÀÚ ±ÇÇÑÀº Ãʱ⿡ ¿äûµÈ ¿¬»ê¿¡ ´ëÇÏ¿© ºÒ
ÃæºÐÇÏ´Ù... (It may not be apparent why the server adds the database-, table- and col
umn-specific privileges to the global user entry privileges for those cases in which
the user privileges are initially found to be insufficient for the requested operatio
n.) ¿äûÀº ÇÑ°¡Áö À¯Çü ÀÌ»óÀÇ ±ÇÇÑÀÌ ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù. ¿¹¸¦ µé¾î, INSERT ... SELECT
¹®À» ¼öÇàÇÒ ¶§ insert ¿Í select ±ÇÇÑ µÑ ´Ù ÇÊ¿äÇÏ´Ù. »ç¿ëÀÚÀÇ ±ÇÇÑÀº user Å×ÀÌºí¿¡¼­
ÇÑ°¡Áö ±ÇÇÑÀ» ½ÂÀÎÇÏ°í db Å×ÀÌºí ¿£Æ®¸®¿¡¼­ ´Ù¸¥ ±ÇÇÑÀ» ½ÂÀÎÇÒ °ÍÀÌ´Ù. ÀÌ·± °æ¿ì, »ç
¿ëÀÚ´Â ÀÌ·¯ÇÑ ¿äûÀ» ¼öÇàÇϱâ À§ÇØ ÇÊ¿äÇÑ ±ÇÇÑÀ» °¡Áö°í ÀÖ´Ù. ±×·¸Áö¸¸ ¼­¹ö´Â ÀÚüÀû
À¸·Î ´Ù¸¥ Å×ÀÌºí¿¡ ´ëÇؼ­´Â .....(In this case, you have the necessary privileges to
perform the request, but the server cannot tell that from either table by itself;) ;
µÎ ¿£Æ®¸®¿¡ ÀÇÇØ ½ÂÀÎµÈ ±ÇÇÑÀÌ Á¶ÇյǾî¾ß ÇÑ´Ù.

host Å×À̺íÀº "¾ÈÀüÇÑ" ¼­¹ö ¸ñ·ÏÀ» À¯ÁöÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù. TcX¿¡¼­´Â, host Å×À̺í
¿¡´Â Áö¿ª ³×Æ®¿÷ÀÇ ¸ðµç ½Ã½ºÅÛÀÌ Æ÷ÇԵǾî ÀÖ´Ù. ¿©±â¼­´Â ¸ðµç ±ÇÇÑÀÌ Çã¿ëµÈ´Ù.

¾ÈÀüÇÏÁö ¾Ê´Â È£½ºÆ®¸¦ °¡¸®Å°±â À§ÇØ host Å×À̺íÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¾ÈÀüÇÏ´Ù°í »ý°¢µÇ
Áö ¾Ê´Â °ø°³ Áö¿ª¿¡ À§Ä¡ÇÑ public.your.domain ½Ã½ºÅÛÀÌ ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ. »ç¿ëÀÚ´Â »ç
¿ëÀÚ ³×Æ®¿÷ÀÇ ¸ðµç È£½ºÆ®¿¡ Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç, host Å×ÀÌºí ¿£Æ®¸®°¡ ´ÙÀ½°ú °°Àº ½Ã½ºÅÛ
¸¸ Á¦¿ÜÇÑ´Ù :

+--------------------+----+-
| Host               | Db | ...
+--------------------+----+-
| public.your.domain | %  | ... (all privileges set to 'N')
| %.your.domain      | %  | ... (all privileges set to 'Y')
+--------------------+----+-

´ç¿¬È÷ Á¢±Ù ±ÇÇÑÀÌ ¿øÇϴ´ë·Î µÇ¾î ÀÖ´ÂÁö ¾ðÁ¦³ª ½ÂÀÎ Å×ÀÌºí¿¡¼­ ¸ñ·ÏÀ» Å×½ºÆÃÇØ¾ß ÇÑ
´Ù. (¿¹¸¦ µé¾î mysqlaccess ¸¦ »ç¿ë)



6.7 ±ÇÇÑ º¯°æ½Ã Àû¿ë ¹æ¹ý


mysqld °¡ ½ÃÀÛÇÒ ¶§, ¸ðµç ½ÂÀÎ Å×ÀÌºí ³»¿ëÀÌ ¸Þ¸ð¸®·Î ¿Ã¶ó°¡°í À̶§ºÎÅÍ À¯È¿ÇÏ°Ô µÈ
´Ù.

GRANT, REVOKE, SET PASSWORD ¸¦ ÀÌ¿ëÇØ ½ÂÀÎ Å×ÀÌºí¿¡ º¯°æÀ» ÇÏ¸é ¹Ù·Î ¼­¹ö¿¡¼­ ÀνÄÀ»
ÇÑ´Ù.

±ÇÇÑ Å×À̺íÀ» Á÷Á¢ º¯°æÇß´Ù¸é(INSERT, UPDATE µîÀ» »ç¿ëÇÏ¿©), ¼­¹ö¿¡¼­ ½ÂÀÎ Å×À̺íÀ»
Àç°¡µ¿Çϵµ·Ï Çϱâ À§ÇØ FLUSH PRIVIEGES ¹®À̳ª mysqladmin flush-privileges ¸¦ ½ÇÇàÇؾß
ÇÑ´Ù.±×·¸°Ô ÇÏÁö ¾ÊÀ¸¸é ¼­¹ö¸¦ ´Ù½Ã ½ÃÀÛÇϱâ Àü±îÁö º¯°æµÈ ±ÇÇÑÀÌ Àû¿ëµÇÁö ¾Ê´Â´Ù.

¼­¹ö¿¡¼­ ±ÇÇÑ Å×À̺íÀÌ º¯°æµÇ¾ú´Ù´Â °ÍÀ» °¨ÁöÇßÀ» ¶§, ÀÌ¹Ì Á¸ÀçÇÏ´ø Ŭ¶óÀ̾ðÆ® ¿¬°áÀº
´ÙÀ½°ú °°ÀÌ ¿µÇâÀ» ¹Þ´Â´Ù:

1. Å×À̺í°ú Ä÷³ ±ÇÇÑ º¯°æÀº Ŭ¶óÀ̾ðÆ®ÀÇ ´ÙÀ½ ¿äûºÎÅÍ Àû¿ëµÈ´Ù.
2. µ¥ÀÌÅͺ£À̽º ±ÇÇÑ º¯°æÀº ´ÙÀ½ÀÇ USE db_name ¸í·ÉºÎÅÍ Àû¿ëµÈ´Ù.
3. ÀüüÀûÀÎ ±ÇÇÑ°ú ºñ¹Ð¹øÈ£ º¯°æÀº Ŭ¶óÀ̾ðÆ®°¡ ´ÙÀ½¿¡ ¿¬°áÇÒ ¶§ºÎÅÍ Àû¿ëµÈ´Ù.
{{}}

6.8 Ãʱâ mysql ±ÇÇѼ³Á¤

mysqlÀ» ¼³Ä¡ÇÏ°í ³ª¼­, mysql_install_db ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇؼ­ Ãʱâ Á¢±Ù ±ÇÇÑÀ» ¼³Á¤Çؾß
ÇÑ´Ù. 4.7.1 [Quick install] Âü°í. mysql_install_db ½ºÅ©¸³Æ®´Â mysqld ¼­¹ö¸¦ ½ÃÀÛÇÏ°í,
´ÙÀ½°ú °°ÀÌ ½ÂÀÎ Å×À̺íÀÇ ±ÇÇÑÀ» ÃʱâÈ­ÇÑ´Ù:

- mysql root »ç¿ëÀÚ´Â ½´ÆÛÀ¯ÀúÀÌ¸ç ¸ðµç °ÍÀ» ÇÒ ¼ö ÀÖ´Ù. ·ÎÄà ȣ½ºÆ®¿¡¼­¸¸ ¿¬°áÇÒ ¼ö
ÀÖ´Ù.
ÁÖÀÇ : óÀ½¿¡ root ºñ¹Ð¹øÈ£´Â ºñ¾îÀÖ´Ù. ±×·¡¼­ ´©±¸³ª ºñ¹Ð¹øÈ£¾øÀÌ root·Î ¿¬°áÇÒ ¼öÀÖ
°í ¸ðµç ±ÇÇÑÀ» ½ÂÀι޴´Ù.

- ÀÍ¸í »ç¿ëÀÚ´Â 'test' ³ª 'test_' ·Î ½ÃÀÛÇÏ´Â µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ¸ðµç ±ÇÇÑÀ» ½ÂÀιÞ
´Â´Ù. ¸ðµç »ç¿ëÀÚ°¡ ·ÎÄà ȣ½ºÆ®¿¡¼­ ¿¬°áÇÒ ¼ö ÀÖÀ¸¸ç ÀÍ¸í »ç¿ëÀÚ·Î °£ÁֵȴÙ.

- ´Ù¸¥ ±ÇÇÑÀº °ÅºÎµÈ´Ù. ¿¹¸¦ µé¾î ÀÏ¹Ý »ç¿ëÀÚ´Â mysqladmin shutdown À̳ª mysqladmin p
rocesslist ¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù.


¼³Ä¡ÇßÀ» ¶§ Ãʱ⠱ÇÇÑÀÌ Æø³Ð°Ô  ¼³Á¤µÇ¾î Àֱ⠶§¹®¿¡ °¡Àå ¸ÕÀú mysql root »ç¿ëÀÚÀÇ ºñ
¹Ð¹øÈ£¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÏ¸é µÈ´Ù. (PASSWORD() ÇÔ¼ö¸¦ ÀÌ¿ëÇØ ºñ¹Ð¹øÈ£
¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù!):

shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
         WHERE user='root';
mysql> FLUSH PRIVILEGES;

or

shell> mysqladmin -u root password new_password
(** PASSWORD() ¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¾Ê¾Æµµ µÇ¹Ç·Î Æí¸®ÇÔ. ¶ÇÇÑ SQL¹®¿¡¼­ grant ¸í·ÉÀ»
ÀÌ¿ëÇØ ¼³Á¤ÇÒ ¼öµµ ÀÖÁö¿ä **)

ù¹ø° ¹æ¹ýÀ» »ç¿ëÇϸé Á÷Á¢ user Å×À̺íÀÇ ºñ¹Ð¹øÈ£¸¦ ¾÷µ¥ÀÌÆ®ÇÑ´Ù. ÀÌ°æ¿ì ¼­¹ö°¡ ´Ù½Ã
½ÂÀÎ Å×À̺íÀ» Àеµ·Ï ÇØ¾ß ÇÑ´Ù.(FLUSH PRIVILEGES »ç¿ë). ¿Ö³ÄÇÏ¸é ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â º¯°æ
»çÇ×À» ¾Ë¸± ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.

(** ½ÂÀÎ Å×À̺íÀ» ´Ù½Ã ÀÐÁö ¾Ê¾Æ¼­ ÀÌÀü¿¡ ¼³Á¤Çß´ø ºñ¹Ð¹øÈ£°¡ Á¦´ë·Î ¾ÈµÇ´Â °æ¿ì°¡ ÀÖ
À» °ÍÀÔ´Ï´Ù. ²À ±â¾ïÇÏ°í ÀÖ¾î¾ßÇØ¿ä **)

root ºñ¹Ð¹øÈ£°¡ ¼³Á¤µÇ¾úÀ¸¸é ¼­¹ö¿¡ root·Î Á¢¼ÓÇÒ¶§¸¶´Ù ºñ¹Ð¹øÈ£¸¦ ¸í½ÃÇØ¾ß ÇÑ´Ù.

Ãß°¡·Î ¼Â¾÷À» Çϰųª Å×½ºÆ®ÇÒ ¶§´Â ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇÒ ÇÊ¿ä°¡ ¾ø±â ¶§¹®¿¡ root ºñ¹Ð¹øÈ£
¸¦ ºó°ªÀ¸·Î ³²°ÜµÎ°í ½ÍÀ» °ÍÀÌ´Ù. ±×·¸Áö¸¸ ½ÇÁ¦ ÀÛ¾÷À» Çϱâ Àü¿¡´Â ¹Ýµå½Ã ºñ¹Ð¹øÈ£¸¦
¼³Á¤Çß´ÂÁö È®ÀÎÇØ¾ß ÇÑ´Ù.

±âº»±ÇÇÑÀ» ¾î¶»°Ô ¼³Á¤ÇÏ´ÂÁö mysql_install_db ½ºÅ©¸³Æ®¸¦ »ìÆ캸ÀÚ. ´Ù¸¥ »ç¿ëÀÚ¿¡°Ô ±Ç
ÇÑÀ» ¾î¶»°Ô ¼³Á¤ÇÒÁö ÀÌ°ÍÀ» ±âº»À¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.

À§¿¡¼­ ¼³¸íÇÑ °Í°ú ´Ù¸£°Ô Ãʱ⠱ÇÇÑÀ» ¼³Á¤Çϱ⠿øÇϸé, mysql_install_db ½ºÅ©¸³Æ®¸¦ ½Ç
ÇàÇϱâ Àü¿¡ ¼öÁ¤ÇÏ¸é µÈ´Ù.

¿ÏÀüÇÏ°Ô ½ÂÀÎ Å×À̺íÀ» ´Ù½Ã ¸¸µé±â À§ÇØ mysql µ¥ÀÌÅͺ£À̽º¸¦ Æ÷ÇÔÇÏ´Â µð·ºÅ丮ÀÇ '*IS
M' °ú '*.ISD' ÆÄÀÏÀ» Á¦°ÅÇØ¾ß ÇÑ´Ù. (ÀÌ µð·ºÅ丮´Â database µð·ºÅ丮¿¡¼­ 'mysq''À̶ó
´Â À̸§ÀÌ ºÙ¾îÀÖ´Ù. mysqld --help Çؼ­ database µð·ºÅ丮ÀÇ ¸ñ·ÏÀ» º¼ ¼ö ÀÖ´Ù.) ¿øÇÏ´Â
´ë·Î ±ÇÇÑÀ» ¼öÁ¤ÇÑ ÈÄ mysql_install_db ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏÀÚ.


6.9 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 reloa
d, 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 µ¥ÀÌÅͺ£À̽º¿¡, ¸ðµç ¼¼ È£½ºÆ®»ó¿¡¼­´Â cus
tomer µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÏ±æ ¿øÇÑ´Ù. ¸ðµç ¼¼ È£½ºÆ®»ó¿¡¼­ 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 ¿¡¼­ ÀÌ·¯ÇÑ À¯Æ¿¸®Æ¼¸¦ ãÀ» ¼ö ÀÖ´Ù.


6.10 ºñ¹Ð¹øÈ£ ¼³Á¤ ¹æ¹ý

¾ÕÀÇ ¿¹Á¦´Â Áß¿äÇÑ ¿øÄ¢À» º¸¿©ÁØ´Ù : INSERT ³ª UPDATE ¹®¿¡¼­ °ø¹éÀÌ ¾Æ´Ñ ºñ¹Ð¹øÈ£¸¦
ÀúÀåÇÒ ¶§ ¹Ýµå½Ã ¾ÏȣȭÇϱâ À§ÇØ PASSWORD() ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù!! user Å×À̺íÀº ºñ¹Ð
¹øÈ£¸¦ Ç÷¹ÀÎÅؽºÆ®(**ÀÏ¹Ý ÅؽºÆ® ÆÄÀÏ**)°¡ ¾Æ´Ï¶ó ¾ÏȣȭµÈ ÇüÅ·ΠÀúÀåÇϱ⠶§¹®ÀÌ´Ù.
ÀÌ·¯ÇÑ »ç½ÇÀ» Àؾî¹ö¸®¸é ´ÙÀ½°ú °°ÀÌ ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇÏ·Á°í ÇÒ °ÍÀÌ´Ù:

shell> mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password)
     VALUES('%','jeffrey','bLa81m0');
mysql> FLUSH PRIVILEGES;

Ç÷¹ÀÎÅؽºÆ® °ª 'bLa81m0' Àº user Å×ÀÌºí¿¡ ºñ¹Ð¹øÈ£·Î ÀúÀåÀÌ µÈ´Ù.jeffrey¶ó´Â »ç¿ëÀÚ
°¡ ÀÌ ºñ¹Ð¹øÈ£¸¦ »ç¿ëÇØ ¼­¹ö¿¡ ¿¬°áÇÏ·Á°í ÇÒ ¶§ mysql Ŭ¶óÀ̾ðÆ®¸¦ ÀÌ ºñ¹Ð¹øÈ£¸¦ ¾ÏÈ£
È­Çؼ­ ±× °á°ú¸¦ ¼­¹ö·Î º¸³½´Ù. ¼­¹ö´Â ¾ÏȣȭµÈ ºñ¹Ð¹øÈ£('bLa81m0'ÀÌ ¾Æ´Ï´Ù)¸¦ user
Å×À̺íÀÇ ºñ¹Ð¹øÈ£(Ç÷¹ÀÎÅؽºÆ® 'bLa81m0' °ªÀÌ´Ù)¿Í ºñ±³ÇÑ´Ù. ºñ±³´Â ½ÇÆÐÇÏ°í ¼­¹ö´Â
¿¬°áÀ» °ÅºÎÇÑ´Ù:

shell> mysql -u jeffrey -pbLa81m0 test
Access denied

ºñ¹Ð¹øÈ£´Â user Å×ÀÌºí¿¡ ÀÔ·ÂµÉ ¶§ ¹Ýµå½Ã ¾ÏȣȭµÇ¾î¾ß Çϱ⠶§¹®¿¡, INSERT ¹®Àº ´ÙÀ½
°ú °°ÀÌ »ç¿ëÇØ¾ß ÇÑ´Ù:

mysql> INSERT INTO user (Host,User,Password)
     VALUES('%','jeffrey',PASSWORD('bLa81m0'));

¶ÇÇÑ SET PASSWORD ¹®À» »ç¿ëÇÒ ¶§µµ PASSWORD() ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù:

mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('bLa81m0');

Âü°í : PASSWORD() ÇÔ¼ö´Â ºñ¹Ð¹øÈ£ ¾Ïȣȭ¸¦ ¼öÇàÇÑ´Ù. ±×·¸Áö¸¸ À¯´Ð½º¿¡¼­ ºñ¹Ð¹øÈ£¸¦
¾ÏȣȭÇÏ´Â ¹æ¹ý°ú´Â ´Ù¸£´Ù. À¯´Ð½º ºñ¹Ð¹øÈ£¿Í mysql ºñ¹Ð¹øÈ£°¡ µ¿ÀÏÇÒ ¶§ PASSWORD()
°¡ À¯´Ð½º ºñ¹Ð¹øÈ£ ÆÄÀÏ(** /etc/passwd ÆÄÀÏ **)¿¡ ¾ÏȣȭµÇ¾î ÀúÀåµÈ °ª°ú °°´Ù°í »ý°¢
ÇÏ¸é ¾È µÈ´Ù.

GRANT ... IDENTIFIED BY ¹®À̳ª mysqladmin password ¸í·ÉÀ» »ç¿ëÇØ ºñ¹Ð¹øÈ£¸¦ ¼³Á¤Çϸé
PASSWORD() ÇÔ¼ö´Â ÇÊ¿ä¾ø´Ù. µÑ´Ù ºñ¹Ð¹øÈ£¸¦ ¾ÏȣȭÇؼ­ ÀúÀåÇÑ´Ù:

mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'bLa81m0';
shell> mysqladmin -u jeffrey password bLa81m0

(** ´ç±Ù, GRANT ¹®À̳ª mysqladmin password ¸í·ÉÀ» »ç¿ëÇÏ´Â°Ô ÆíÇÏ°ÚÁö¿ä? mysqlÀÇ ¾ÏÈ£
È­ ¾Ë°í¸®ÁòÀÌ À¯´Ð½º¿Í ´Ù¸£µí À¯´Ð½º °èÁ¤°ú mysqlÀÇ »ç¿ëÀÚ´Â ÀüÇô ´Ù¸£´Ù´Â °Íµµ ´Ù½Ã
Çѹø ±â¾ïÇÏ°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.**)



6.11 Á¢±Ù °ÅºÎ ¿¡·¯°¡ ³ª´Â ÀÌÀ¯

mysql ¼­¹ö¿¡ ¿¬°áÇÏ·Á ÇÒ ¶§ Á¢±Ù °ÅºÎ ¿¡·¯°¡ ³ª¸é, ¾Æ·¡¿¡¼­ ¼³¸íÇÏ´Â °Í¿¡ µû¶ó ÇØ°á
¹æ¹ýÀ» ãÀ» ¼ö ÀÖ´Ù:

- Ãʱ⠽ÂÀÎ Å×ÀÌºí ³»¿ëÀ» ¼³Á¤Çϱâ À§ÇØ mysqlÀ» ¼³Ä¡ÇÑ ÈÄ mysql_install_db ½ºÅ©¸³Æ®¸¦
½ÇÇàÇÏ¿´´Â°¡? ½ÇÇàÇÏÁö ¾Ê¾Ò´Ù¸é ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏÀÚ. 6.8 [Default privileges] Âü°í.
´ÙÀ½ ¸í·ÉÀ» ÀÌ¿ëÇØ Ãʱ⠱ÇÇÑÀ» ½ÃÇèÇØ º¼ ¼ö ÀÖ´Ù:

      shell> mysql -u root test

¿¡·¯¾øÀÌ ¼­¹ö¿¡ Á¢¼ÓÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. mysql µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¿¡ 'user.ISD' ÆÄÀÏ
ÀÌ ÀÖ´ÂÁö È®ÀÎÇغ¸¾Æ¾ß ÇÑ´Ù. (ÀϹÝÀûÀ¸·Î 'mysql ¼³Ä¡ µð·ºÅ丮/var/mysql/user.IDS' ÀÌ
´Ù)

- ¼³Ä¡¸¦ »õ·ÎÇÏ°í ³­ÈÄ , ¼­¹ö¿¡ ¿¬°áÇÏ°í »ç¿ëÀÚ¿Í Á¢±Ù ±ÇÇÑÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù:

      shell> mysql -u root mysql

Ãʱ⿡ mysql root »ç¿ëÀÚ¸¸ ºñ¹Ð¹øÈ£°¡ ¾ø±â ¶§¹®¿¡ ¼­¹ö¿¡ ¿¬°áÇÒ ¼ö ÀÖ´Ù. º¸¾È¹®Á¦°¡
Àֱ⠶§¹®¿¡, ´Ù¸¥ mysql »ç¿ëÀÚ¸¦ ¼³Á¤Çϱâ Àü¿¡ ¸ÕÀú rootÀÇ ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù.
root·Î Á¢¼ÓÇÏ·ÁÇϴµ¥ ´ÙÀ½ÀÇ ¿¡·¯°¡ ³µ´Ù°í °¡Á¤ÇÏÀÚ:

      Access denied for user: '@unknown' to database mysql

ÀÌ°ÍÀº user Å×ÀÌºí¿¡ User Ä÷³ = root ¶ó´Â ¸ñ·ÏÀÌ ¾ø°í, mysqld°¡ »ç¿ëÀÚ Å¬¶óÀ̾ðÆ®ÀÇ
È£½ºÆ®À̸§À» Çؼ®ÇÒ ¼ö ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ·± °æ¿ì --skip-grant-tables ¿É¼ÇÀ» ÀÌ
¿ëÇØ ¼­¹ö¸¦ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÏ°í '/etc/hosts' ¸¦ ÆíÁýÇϰųª '\windows\hosts' ÆÄÀÏ¿¡ »ç
¿ëÀÚ È£½ºÆ® ¸ñ·ÏÀ» Ãß°¡ÇØ¾ß ÇÑ´Ù.

- 3.22.11 ÀÌÀü ¹öÀü¿¡¼­ 3.22.11À̳ª ÀÌÈÄ ¹öÀüÀ¸·Î ¾÷µ¥ÀÌÆ®Çß´Ù¸é, mysql_fix_privilege
_tables ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇߴ°¡? ÇÏÁö ¾Ê¾Ò´Ù¸é ½ÇÇàÇÏÀÚ. mysql 3.22.11¿¡¼­ GRANT ¹® ±â
´ÉÀÌ °¡´ÉÇØÁö¸é¼­ ½ÂÀÎ Å×ÀÌºí ±¸Á¶°¡ ¹Ù²î¾ú´Ù.

- (INSERT ³ª UPDATE ¹®À» »ç¿ëÇØ) ½ÂÀÎ Å×À̺íÀ» Á÷Á¢ °íÃÆ°í º¯È­°¡ ¾ÆÁ÷ ¹Ý¿µµÇÁö ¾ÊÀº
°ÍÀ¸·Î º¸À̸é, FLUSH PRIVILEGES ¹®À» »ç¿ëÇϰųª mysqladmin flush-privileges ¸í·ÉÀ» »ç
¿ëÇØ ¼­¹ö°¡ ½ÂÀÎ Å×À̺íÀ» ´Ù½Ã Àеµ·Ï ÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ.±×·¸Áö ¾ÊÀ¸¸é ¼­¹ö°¡
Àç½ÃÀÛÇϱâ Àü±îÁö´Â º¯È­µÈ °ÍÀÌ ¹Ý¿µµÇÁö ¾Ê´Â´Ù. root ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇÏ°í ³ª¼­ ±ÇÇÑÀ»
flush Çϱâ±îÁö´Â ºñ¹Ð¹øÈ£¸¦ ¸í½ÃÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¿Ö³Ä¸é ¼­¹ö´Â ¾ÆÁ÷ ºñ¹Ð¹øÈ£¸¦ ¹Ù²Ù¾ú
´ÂÁö ¸ð¸£±â ¶§¹®ÀÌ´Ù.

- ¼¼¼Ç Áß°£¿¡ ±ÇÇÑÀÌ º¯°æµÈ °ÍÀ¸·Î º¸ÀÌ¸é ½´ÆÛÀ¯Àú°¡ ¹Ù²Ù¾úÀ» °ÍÀÌ´Ù. ½ÂÀÎ Å×À̺íÀ»
Àç½ÃÀÛÇÏ´Â °ÍÀº »õ·Î¿î Ŭ¶óÀ̾ðÆ® Á¢¼Ó¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö¸¸ ÀÌ¹Ì Á¸ÀçÇÏ°í ÀÖ´ø ¿¬°áÀº 6.
7 [Privileges changes]¿¡¼­ ¼³¸íÇÑ´ë·Î ¿µÇâÀ» ¹ÌÄ£´Ù.

- ½ÃÇèÇϱâ À§ÇØ, mysqld ´ë¸ó¿¡  --skip-grant-tables ¿É¼ÇÀ» ÁÖ¾î ½ÃÀÛÇÏÀÚ. ±×·¯°í³ª¼­
mysql ½ÂÀÎ Å×À̺íÀ» º¯°æÇÒ ¼ö ÀÖ°í º¯°æµÈ°ÍÀÌ ¿øÇϴ´ë·Î ÀÛµ¿ÇÏ´ÂÁö¸¦ üũÇÏ´Â mysqla
ccess ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿øÇϴ´ë·Î ¼öÁ¤ÀÌ µÇ¾úÀ¸¸é mysqld ¼­¹ö°¡ »õ·Î¿î ½ÂÀÎ
Å×À̺í·Î ½ÃÀÛÇÒ ÀÖµµ·Ï mysq1admin flush-priveleges ¸¦ ½ÇÇàÇÑ´Ù.
ÁÖÀÇ : ½ÂÀÎÅ×À̺íÀ» Àç·ÎµùÇÏ´Â °ÍÀº --skip-grant-tables ¿É¼ÇÀ» ¹«È¿È­ÇÑ´Ù. À̸¦ ÅëÇØ
¼­¹ö¸¦ ´Ù¿î½ÃÅ°°í ´Ù½Ã Àç½ÃÀÛÇÏÁö ¾Ê°íµµ ½ÂÀÎ Å×À̺íÀ» ½ÃÀÛÇÒ ¼ö ÀÖ´Ù.

- ÆÞ, Python, ODBC ÇÁ·Î±×·¥¿¡¼­ Á¢±ÙÇϴµ¥ ¹®Á¦°¡ ÀÖ´Ù¸é, mysql -u user_name db_name  
¶Ç´Â mysql -u user_name -pyour_pass db_name À¸·Î ¼­¹ö¿¡ Á¢¼ÓÀ» ½ÃµµÇغ¸ÀÚ. (-p ¿Í ºñ
¹Ð¹øÈ£»çÀÌ¿¡´Â °ø¹éÀÌ ¾ø´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ. ¶ÇÇÑ --password=your_pass ÇüÅ·εµ »ç¿ëÇÒ
¼ö ÀÖ´Ù) mysql Ŭ¶óÀ̾ðÆ®·Î Á¢¼ÓÀÌ µÇ¸é ÇÁ·Î±×·¥¿¡ ¹®Á¦°¡ ÀÖ´Â °ÍÀ̸ç Á¢±Ù ±ÇÇÑ¿¡´Â
¹®Á¦°¡ ¾ø´Ù.

- ºñ¹Ð¹øÈ£°¡ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ¸¸é, INSERT, UPDATE, SET PASSWORD ¹®¿¡¼­ ºñ¹Ð¹øÈ£¸¦
¼³Á¤Çϸ鼭 PASSWORD() ÇÔ¼ö¸¦ ¹Ýµå½Ã »ç¿ëÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ. PASSWORD() ÇÔ¼ö´Â
GRANT ... INDENTIFIED BY ¹®À̳ª mysqladmin password ¸í·ÉÀ» »ç¿ëÇß´Ù¸é ºÒÇÊ¿äÇÏ´Ù. 6.1
0 [Passwords] Âü°í.

- localhost ´Â Áö¿ª È£½ºÆ® À̸§°ú °°Àº ¸»ÀÌ´Ù. ¶ÇÇÑ È£½ºÆ®¸¦ ¸í¹éÇÏ°Ô ¼³Á¤ÇÏÁö ¾ÊÀº
°æ¿ì Ŭ¶óÀ̾ðÆ®¿¡¼­ ¿¬°áÇÏ·Á´Â È£½ºÆ®ÀÇ ±âº»°ªÀÌ´Ù. ±×·¯³ª MIT-pthreads¸¦ »ç¿ëÇÏ´Â ½Ã
½ºÅÛ¿¡¼­´Â localhost·ÎÀÇ ¿¬°áÀÌ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. (localhost ¿¬°áÀº À¯´Ð½º ¼ÒÄÏ
À» ÅëÇØ ¸¸µé¾îÁø´Ù. ±×·¸Áö¸¸ MIT-pthreads¿¡¼­´Â À¯´Ð½º ¼ÒÄÏÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù.) ÀÌ¿Í
°°Àº ½Ã½ºÅÛ¿¡¼­ ¹®Á¦¸¦ ÇÇÇÏ·Á¸é, ¼­¹ö¿¡ È£½ºÆ® À̸§À» ¸íÈ®ÇÏ°Ô ¸»ÇØÁÖ±â À§ÇØ --host
¿É¼ÇÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ±×·¯¸é mysqld ¼­¹ö¿¡ TCP/IP ¿¬°áÀ» ¸¸µç´Ù. ÀÌ°æ¿ì, ¼­¹ö È£½ºÆ®
ÀÇ user Å×ÀÌºí ¸ñ·Ï¿¡ ½ÇÁ¦ È£½ºÆ®À̸§ÀÌ ÀÖ¾î¾ß ÇÑ´Ù. (¼­¹ö¿Í µ¿ÀÏÇÑ È£½ºÆ®¿¡¼­ Ŭ¶óÀÌ
¾ðÆ® ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù°í ÇÏ´õ¶óµµ ¸¶Âù°¡ÁöÀÌ´Ù.)

- mysql -u user_name db_name À¸·Î µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÏ·Á ÇÒ ¶§ Á¢±Ù °ÅºÎ ¿¡·¯°¡ ³ª
¸é, user Å×ÀÌºí¿¡ ¹®Á¦°¡ ÀÖÀ» °ÍÀÌ´Ù. mysql -u root mysql ¸¦ ½ÇÇàÇÏ¿© Á¡°ËÇÏ°í ´ÙÀ½ÀÇ
SQL ¹®À» »ç¿ëÇÏÀÚ:

      mysql> SELECT * FROM user;

¿©±â¼­ »ç¿ëÀÚÀÇ È£½ºÆ®À̸§°ú mysql »ç¿ëÀÚ À̸§°ú ¸Â´Â Host ¿Í User Ä÷³ÀÇ ¸ñ·ÏÀÌ Æ÷ÇÔ
µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.

- Access denied ¿¡·¯ ¸Þ½ÃÁö´Â Á¢¼ÓÇÏ·Á´Â »ç¿ëÀÚ¿Í È£½ºÆ® À̸§, ±×¸®°í ºñ¹Ð¹øÈ£¸¦ »ç¿ë
Çß´ÂÁö ¿©ºÎ¸¦ º¸¿©ÁÙ °ÍÀÌ´Ù. ÀϹÝÀûÀ¸·Î user Å×ÀÌºí¿¡ ¿¡·¯ ¸Þ½ÃÁö¿¡¼­ º¸¿©ÁØ È£½ºÆ®
À̸§°ú »ç¿ëÀÚ À̸§°ú Á¤È®ÇÏ°Ô ¸Â´Â ¸ñ·ÏÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.


- ´Ù¸¥ ½Ã½ºÅÛ¿¡¼­ mysql ¼­¹ö¿¡ Á¢¼ÓÇÒ ¶§ ´ÙÀ½ÀÇ ¿¡·¯ ¸Þ½ÃÁö°¡ ³ª¿À¸é, user Å×ÀÌºí¿¡
¿¬°áÀ» ÇÏ·Á°í Çϴ ȣ½ºÆ® À̸§ÀÌ ¾ø´Ù´Â °ÍÀ» ¸»ÇÑ´Ù:

      Host ... is not allowed to connect to this MySQL server

(¼­¹ö È£½ºÆ®¿¡¼­!) ¸í·ÉÇà À¯Æ¿¸®Æ¼ÀÎ mysqlÀ» »ç¿ëÇÏ¿© user Å×ÀÌºí¿¡ ¿¬°áÇÏ°íÀÚ ÇÏ´Â
»ç¿ëÀÚ/È£½ºÆ® À̸§À» Ãß°¡ÇÏ¿© ÇØ°áÇÒ ¼ö ÀÖ´Ù. mysql 3.22 ¸¦ »ç¿ëÇÏ°í ÀÖÁö ¾Ê°í ¿¬°áÇÏ
°íÀÚ ÇÏ´Â ½Ã½ºÅÛÀÇ IP ¼ýÀÚ³ª È£½ºÆ® À̸§À» ¸ð¸¥´Ù¸é, user Å×ÀÌºí¿¡ Host Ä÷³ °ªÀ¸·Î
'%' ¸ñ·ÏÀ» ÀÔ·ÂÇÏ°í ¼­¹ö ½Ã½ºÅÛ¿¡¼­ --log ¿É¼ÇÀ» »ç¿ëÇØ mysqld ¸¦ Àç½ÃÀÛÇÏÀÚ. Ŭ¶óÀÌ
¾ðÆ® ½Ã½ºÅÛ¿¡¼­ ¿¬°áÀ» ½ÃµµÇÑ ÈÄ mysql ·Î±×¿¡´Â ¾î¶»°Ô ½ÇÁ¦·Î ¿¬°áÀ» Çß´ÂÁö¿¡ ´ëÇÑ Á¤
º¸°¡ µé¾îÀÖ´Ù. (±×·¯°í³ª¼­ '%'¸¦ ·Î±×¿¡ ³ª¿Â ½ÇÁ¦ È£½ºÆ® À̸§À¸·Î ¹Ù²Û´Ù. ±×·¸Áö 앟À¸
¸é º¸¾È¿¡ ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù.)

- mysql -u root test ´Â ÀÛµ¿À» Çϴµ¥ mysql -h your_hostname -u root test ¿¡¼­ Á¢±Ù¿¡
¿¡·¯°¡ ³ª¸é, user Å×ÀÌºí¿¡ Á¤È®ÇÑ È£½ºÆ® À̸§ÀÌ ¾øÀ» °ÍÀÌ´Ù. ÀϹÝÀûÀÎ ¹®Á¦´Â user Å×
À̺íÀÇ Host °ª¿¡´Â ¿ÏÀüÇÏÁö ¾ÊÀº È£½ºÆ® À̸§(** µµ¸ÞÀÎÀº »©°í È£½ºÆ® À̸§¸¸ ³ÖÀº °æ¿ì
**) ÀÌ µé¾î°¡ Àִµ¥ ½Ã½ºÅÛÀÇ ³×ÀÓ Çؼ® ·çƾÀº FQDN(fully-qualified domain name - **
¿ÏÀüÇÑ µµ¸ÞÀÎ À̸§°ú È£½ºÆ® À̸§À» »ç¿ë**)À¸·Î ó¸®ÇÏ´Â °æ¿ìÀÌ´Ù(¶Ç´Â °Å²Ù·Î Çؼ®).¿¹
¸¦ µé¾î, user Å×ÀÌºí¿¡ È£½ºÆ® À̸§ÀÌ 'taejun' À¸·Î µÇ¾îÀִµ¥, DNS´Â mysql¿¡ È£½ºÆ®
À̸§ÀÌ 'taejun.subnet.se'¶ó°í ¾Ë·ÁÁÙ ¼ö ÀÖÀ¸¸ç ÀÌ°æ¿ì´Â Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.
user Å×ÀÌºí¿¡ Host Ä÷³ °ªÀ¸·Î¼­ ÇØ´çÇÏ´Â IP ¼ýÀÚ³ª È£½ºÆ® À̸§À» Ãß°¡ÇÏÀÚ. (´ë½Å, us
er Å×ÀÌºí¿¡ Host °ªÀ¸·Î ¿ÍÀϵåÄ«µå ¹®ÀÚ¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, 'taejun.%'. ±×·¯
³ª È£½ºÆ®À̸§ ³¡¿¡ '%'¸¦ »ç¿ëÇÏ´Â °ÍÀº ¾ÈÀüÇÏÁö ¾ÊÀ¸¸ç ±ÇÇÏÁöµµ ¾Ê´Â´Ù!)

- mysql -u user_name test ´Â ÀÛµ¿Çϴµ¥ mysql -u user_name other_db_name Àº ÀÛµ¿ÇÏÁö
¾Ê´Â´Ù¸é db Å×ÀÌºí¿¡ other_db_name ¸ñ·ÏÀÌ ¾ø´Â °æ¿ìÀÌ´Ù.

- ¼­¹ö ½Ã½ºÅÛ¿¡¼­ mysql -u user_name db_name Àº ÀÛµ¿À» Çϴµ¥, ´Ù¸¥ Ŭ¶óÀ̾ðÆ® ½Ã½ºÅÛ
¿¡¼­ mysql -u user_name db_name Àº ÀÛµ¿À» ÇÏÁö ¾Ê´Â´Ù¸é, user Å×À̺íÀ̳ª db Å×ÀÌºí¿¡
Ŭ¶óÀ̾ðÆ® ½Ã½ºÅÛÀÇ ¸ñ·ÏÀÌ ¾ø´Â °ÍÀÌ´Ù.

- ¿Ö Access denied °¡ ³ª´ÂÁö ÇØ°áÇÏÁö ¸øÇϸé, user Å×ÀÌºí¿¡¼­ ¿ÍÀϵåÄ«µå('%' ¶Ç´Â '
_')¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â Host °ªÀ» °¡Áø ¸ñ·ÏÀ» ¸ðµÎ Á¦°ÅÇÏÀÚ. ¸Å¿ì ÀϹÝÀûÀÎ ¿¡·¯´Â Host='%
' ±×¸®°í User='some user'·Î ÀÔ·ÂÀ» ÇÏ°í³ª¼­ , ÀÌ·¸°Ô ÇÏ¸é °°Àº ½Ã½ºÅÛ¿¡¼­ ¿¬°áÇÒ ¶§ l
ocalhost¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù°í »ý°¢ÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀÌ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â
ÀÌÀ¯´Â ±âº» ±ÇÇÑ¿¡ Host='localhost' ¿Í User='' ¸ñ·ÏÀÌ Æ÷ÇԵǾî Àֱ⠶§¹®ÀÌ´Ù. Host °ª
¿¡ '%' º¸´Ù ´õ ºÐ¸íÇÑ 'localhost' ¸ñ·ÏÀÌ Àֱ⠶§¹®¿¡, localhost¿¡¼­ Á¢¼ÓÇÒ ¶§ »õ·Î¿î
¸ñ·Ïº¸´Ù ¸ÕÀú ¼±ÅÃÀÌ µÈ´Ù. Á¤È®ÇÑ ÀýÂ÷´Â µÎ¹ø° Ç׸ñÀ¸·Î Host='localhost' ¿Í User='so
me_user' ¸¦ ÀÔ·ÂÇϰųª Host='localhost' ¿Í User='' ¸¦ Á¦°ÅÇÏ´Â °ÍÀÌ´Ù.

- ´ÙÀ½ÀÇ ¿¡·¯°¡ ³ª´Â °æ¿ì:

      Access to database denied

db ³ª host Å×ÀÌºí¿¡ ¹®Á¦°¡ ÀÖÀ» °ÍÀÌ´Ù. ¼±ÅÃÇÑ db Å×À̺íÀÇ ¸ñ·Ï¿¡ Host Ä÷³ÀÌ ºñ¾îÀÖ
´Ù¸é, host Å×ÀÌºí¿¡ db Å×ÀÌºí ¸ñ·Ï¿¡ Àû¿ëµÇ´Â È£½ºÆ® À̸§ÀÌ ÀÖ´ÂÁö¸¦ È®ÀÎÇØ¾ß ÇÑ´Ù.
(** ÀϹÝÀûÀ¸·Î db Å×ÀÌºí¿¡ host °ªÀ» ºñ¿öµÎ´Â °æ¿ì, host Å×ÀÌºí¿¡¼­ Á¢±ÙÇϴ ȣ½ºÆ®¸¦
Á¦¾îÇÒ ¼ö ÀÖ´Ù **)

- ´ÙÀ½ÀÇ ¿¡·¯°¡ ³ª´Â °æ¿ì:


      Access to database denied

SELECT ... INTO OUTFILE ¶Ç´Â LOAD DATA INFILE ÀÇ SQL ¹®À» »ç¿ëÇÏ´Â °æ¿ì, user Å×À̺í
¸ñ·Ï¿¡¼­ file ±ÇÇÑÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê¾ÒÀ» °ÍÀÌ´Ù.

- ´Ù¸¥ ¸ðµç °ÍÀÌ ½ÇÆÐÇÏ¿´À» °æ¿ì, mysqld ´ë¸óÀ» µð¹ö±ë ¿É¼ÇÀ¸·Î ½ÃÀÛÇÏÀÚ. (¿¹¸¦ µé¾î,
--debug=d,general,query) ±×·¯¸é °¢ ¸í·É¿¡¼­ »ý±â´Â Á¤º¸¿Í ÇÔ²², Á¢¼ÓÀ» ½ÃµµÇϴ ȣ½º
Æ®¿Í »ç¿ëÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ Ãâ·ÂÇÒ °ÍÀÌ´Ù. G.1 [Debugging] Âü°í.

- mysql ½ÂÀÎ Å×ÀÌºí¿¡¼­ ´Ù¸¥ ¹®Á¦¿¡ ºÎµúÃÆ°í ÀÌ ¹®Á¦¸¦ ¸ÞÀϸµ¸®½ºÆ®¿¡ ¾Ë·Á¾ß°Ú´Ù°í ´À
³¢¸é, mysql ½ÂÀÎ Å×À̺íÀ» ´ýÇÁÇÏ¿© Á¦°øÇØ¾ß ÇÑ´Ù. mysqldump mysql ¸í·ÉÀ» »ç¿ëÇØ Å×ÀÌ
ºíÀ» ´ýÇÁÇÒ ¼ö ÀÖ´Ù. ¾ðÁ¦³ª mysqlbug ½ºÆ®¸³Æ®¸¦ »ç¿ëÇÏ¿© ¹®Á¦¸¦ ¿Ã¸®ÀÚ.

- ´ÙÀ½ÀÇ ¿¡·¯°¡ ³ª´Â °æ¿ì, mysqld ´ë¸óÀÌ ½ÇÇàµÇÁö ¾Ê°Å³ª À߸øµÈ ¼ÒÄÏÀ̳ª Æ÷Æ®·Î ¿¬°á
ÇÏ·Á°í ½ÃµµÇÏ´Â °æ¿ì:

      Can't connect to local MySQL server
      Can't connect to MySQL server on some_hostname

¸ÕÀú mysqld ´ë¸óÀÌ ½ÇÁ¦·Î ÀÛµ¿ÇÏ´ÂÁö ps¸¦ ÀÌ¿ëÇØ È®ÀÎÇÑ´Ù. ¼ÒÄÏ ÆÄÀÏÀÌ ÀÖ´ÀÁö È®ÀÎÇÏ
°í Á¡°ËÀ» ÇØ º¸¾Æ¾ß ÇÑ´Ù.(ÀϹÝÀûÀ¸·Î `/tmp/mysql.sock' ÀÓ) ¶Ç´Â telnet host_name 3306
À¸·Î Á¢¼ÓÀ» ½ÃµµÇغ¸ÀÚ. ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ À§ÇØ mysqladmin version °ú mysqladmin -h hos
t_name version À» »ç¿ëÇØ º¼ ¼ö ÀÖ´Ù. ¹°·Ð Âü°íÇÒ °ÍÀÌ ÀÖ´ÂÁö mysql µ¥ÀÌŸ µð·ºÅ丮ÀÇ
¿¡·¯ ·Î±× ÆÄÀÏÀ» Á¡°ËÇغ¸ÀÚ.

{{}}{{}}{{}}- Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥Àº ¼³Á¤ ÆÄÀÏÀ̳ª ȯ°æ º¯¼ö¿¡¼­ ÁöÁ¤ÇÑ ¿¬°á Æз¯¹ÌÅ͸¦ »ç¿ëÇÒ ¼ö
ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ. ¸í·ÉÇà¿¡¼­ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Âµ¥ Ŭ¶óÀ̾ðÆ®°¡ À߸øµÈ ±âº» ¿¬°á Æз¯
¹ÌÅ͸¦ º¸³»´Â °ÍÀ¸·Î »ý°¢µÇ¸é, Ȩ µð·ºÅ丮¿¡¼­ ȯ°æº¯¼ö³ª '.my.cnf' ÆÄÀÏÀ» Á¡°ËÇغ¸
ÀÚ. ºñ·Ï ¿©±â¼­ ÁöÁ¤ÇÑ ¿¬°á Æз¯¹ÌÅÍ¿Í´Â °ü°è°¡ ¸ÖÁö¸¸ ½Ã½ºÅÛÀÇ Àü¹ÝÀûÀÎ mysql ¼³Á¤
ÆÄÀÏÀ» Á¡°ËÇØ º¼ ¼ö ÀÖ´Ù. 4.14.4 [Option files] Âü°í. Ŭ¶óÀ̾ðÆ®¿¡¼­ ¾Æ¹«·± ¿É¼Çµµ ÁÖ
Áö ¾Ê¾Ò´Âµ¥ Access denied ¿¡·¯ ¸Þ½ÃÁö°¡ ³ª¿À´Â °æ¿ì, ¿É¼Ç ÆÄÀÏ Áß¿¡¼­ ¿¹ÀüÀÇ ºñ¹Ð¹øÈ£
¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ÂÁö È®ÀÎÇØ º¸ÀÚ. 4.14.4 [Option files] Âü°í.




6.12 Å©·¢Ä¿¿¡ ´ëºñÇÏ¿© mysqlÀ» ¾ÈÀüÇÏ°Ô ÇÏ´Â ¹æ¹ý

mysql ¼­¹ö¿¡ ¿¬°áÇÒ ¶§ ÀϹÝÀûÀ¸·Î ºñ¹Ð¹øÈ£¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ºñ¹Ð¹øÈ£´Â ¿¬°áÇÒ ¶§ ´Ü¼ø
ÇÑ ÅؽºÆ®·Î Àü¼ÛµÇÁö ¾Ê´Â´Ù.

¼­¹ö/Ŭ¶óÀ̾ðÆ® ¿¬°áÀº ¾ÏȣȭµÇÁö ¾Ê´Â´Ù; ¸ðµç Á¤º¸´Â ¿¬°áÀ» º¼ ¼ö ÀÖ´Â ´©±¸¶óµµ ÀÐÀ»
¼ö ÀÖ´Â ÅؽºÆ®·Î Àü¼ÛµÈ´Ù. ÀÌ ¹®Á¦¿¡ ´ëÇØ °ÆÁ¤ÀÌ µÇ¸é ¹®Á¦¸¦ ¾î·Æ°Ô Çϱâ À§ÇØ ¾ÐÃà ÇÁ
·ÎÅäÄÝ(mysql 3.22 ÀÌ»ó ¹öÀü)À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. º¸¾ÈÀ» ´õ È®½ÇÇÏ°Ô Çϱâ À§ÇØ ssh¸¦ ¼³
Ä¡ÇÒ ¼ö ÀÖ´Ù. (http://www.cs.hut.fi/ssh Âü°í) ÀÌ°ÍÀ» ÀÌ¿ëÇØ mysql ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®
»çÀÌ¿¡ ¾ÏȣȭµÈ TCP/IP ¿¬°áÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

mysql ½Ã½ºÅÛÀÇ º¸¾ÈÀ» À¯ÁöÇÏ°Ô À§ÇØ ´ÙÀ½ÀÇ Á¦¾ÈÀ» ½ÅÁßÇÏ°Ô °í·ÁÇÏÀÚ:

- ¸ðµç mysql »ç¿ëÀÚ°¡ ºñ¹Ð¹øÈ£¸¦ »ç¿ë. ¾î¶² »ç¿ëÀÚ°¡ ºñ¹Ð¹øÈ£°¡ ¾øÀ¸¸é 'mysql - u »ç
¿ëÀÚÀ̸§' À» ÀÌ¿ëÇØ °£´ÜÇÏ°Ô ±× »ç¿ëÀÚ·Î ·Î±×ÀÎÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ. ÀÌ°ÍÀº Ŭ
¶óÀ̾ðÆ®/¼­¹ö ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀϹÝÀûÀÎ ÀÛµ¿¹æ¹ýÀÌ´Ù. mysql_install_db ½ºÅ©¸³Æ®¸¦ ½ÇÇà
Çϱâ Àü¿¡ ÀÌ ½ºÅ©¸³Æ®¸¦ ¼öÁ¤ÇÏ¿© ¸ðµç »ç¿ëÀÚÀÇ ºñ¹Ð¹øÈ£¸¦ ¹Ù²Ü ¼ö ÀÖ´Ù. ¶Ç´Â mysql ro
ot »ç¿ëÀÚÀÇ ºñ¹Ð¹øÈ£¸¦ ¹Ù²Ü ¶§´Â ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù:

shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
         WHERE user='root';
mysql> FLUSH PRIVILEGES;

- mysql µ¥¸óÀ» À¯´Ð½ºÀÇ root »ç¿ëÀÚ·Î ½ÃÀÛÇÏÁö ¸»ÀÚ. mysqld ´Â ´Ù¸¥ »ç¿ëÀÚ°¡ ½ÇÇàÇÒ
¼ö ÀÖ´Ù.¶ÇÇÑ º¸¾ÈÀ» ´õ ¾ö°ÝÇÏ°Ô Çϱâ À§ÇØ mysqlÀ̶ó´Â À¯´Ð½º »ç¿ëÀÚ¸¦ ¸¸µé ¼ö ÀÖ´Ù.
´Ù¸¥ À¯´Ð½º »ç¿ëÀÚ·Î mysqld¸¦ ½ÇÇàÇϸé user Å×ÀÌºí¿¡¼­ root »ç¿ëÀÚ À̸§À» ¹Ù²Ü ÇÊ¿ä°¡
¾ø´Ù. mysqld¸¦ ´Ù¸¥ À¯´Ð½º »ç¿ëÀÚ°¡ ½ÃÀÛÇϱâ À§ÇØ mysql.server ½ºÅ©¸³Æ®¸¦ ¼öÁ¤ÇÏ¸é µÈ
´Ù. ÀϹÝÀûÀ¸·Î su ¸í·ÉÀ» »ç¿ëÇÑ´Ù. ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº 16.7 [Changing mysql user] Âü°í.

- mysqld¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ¸¸ÀÌ µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¿¡ Àбâ/¾²±â ±ÇÇÑÀ» °¡Áö°í
ÀÖ´ÂÁö È®ÀÎ.

- ¸ðµç »ç¿ëÀÚ¿¡°Ô process ±ÇÇÑÀ» ÁÖÁö ¸»ÀÚ. mysqladmin processlist À» Ãâ·ÂÇϸé ÇöÀç
½ÇÇàÇÏ´Â Äõ¸®ÀÇ ³»¿ëÀ» º¼ ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î ÀÌ·¯ÇÑ ¸í·ÉÀ» ½ÇÇàÇÒ ±ÇÇÑÀÌ ÀÖ´Â »ç¿ëÀÚ´Â
´Ù¸¥ »ç¿ëÀÚÀÇ UPDATE user SET password=PASSWORD(_'no_secure') ÁúÀǸ¦ º¼ ¼ö ÀÖ´Ù.mysql
Àº process ±ÇÇÑÀ» °¡Áø »ç¿ëÀÚ¸¦ À§ÇØ Ãß°¡ÀûÀÎ(extra) ¿¬°áÀ» ÀúÀåÇÑ´Ù.±×·¡¼­ mysql roo
t »ç¿ëÀÚ´Â ¸ðµç ÀϹÝÀûÀÎ ¿¬°áÀÌ »ç¿ëµÇ¾ú¾îµµ ·Î±×ÀÎÇÏ°í Á¡°ËÀ» ÇÒ ¼ö ÀÖ´Ù.

- ¸ðµç »ç¿ëÀÚ¿¡°Ô file ±ÇÇÑÀ» ÁÖÁö ¸»ÀÚ. ÀÌ·¯ÇÑ ±ÇÇÑÀÌ ÀÖ´Â »ç¿ëÀÚ´Â mysqld ´ë¸óÀÇ ±Ç
ÇÑÀÌ ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛÀÇ ¾î´À °÷¿¡¶óµµ ÆÄÀÏÀ» ÀúÀåÇÒ ¼ö ÀÖ´Ù.Á» ´õ ¾ÈÀüÇÏ°Ô Çϱâ À§ÇØ
SELECT ... INTO OUTFILE ·Î »ý¼ºµÇ´Â ¸ðµç ÆÄÀÏÀº ¸ðµç »ç¿ëÀÚ°¡ Àб⸸ ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ
¹Ì Á¸ÀçÇÏ´Â ÆÄÀÏÀ» µ¤¾î¾º¿ï ¼ö ¾ø´Ù.
(** file ±ÇÇÑÀº LOAD DATA INFILE , SELECT .. INTO OUTFILE ¹®À» ÀÌ¿ëÇÏ¿© ¼­¹ö¿¡ ÆÄÀÏÀ»
ÀúÀåÇÏ°í ÀÐÀ» ¼ö ÀÖ´Â ±ÇÇÑÀ» Çã¿ëÇÑ´Ù. ÀÌ·¯ÇÑ ±ÇÇÑÀ» °¡Áø »ç¿ëÀÚ´Â mysql ¼­¹ö°¡ Àаí
¾µ ¼ö ÀÖ´Â ÆÄÀÏÀ» ÀÐ°í ¾µ ¼ö ÀÖ´Â ±ÇÇÑÀÌ Çã¿ëµÈ´Ù. ÀÏ¹Ý »ç¿ëÀÚ¿¡°Ô ÀÌ·± ±ÇÇÑÀ» ÁÙ ÇÊ
¿ä´Â ¾ø´Ù. ÇÊ¿äÇÑ ºÎºÐ¸¸ ±ÇÇÑÀ» ÁÖ´Â °ÍÀÌ ÁÁ´Ù. ±ÇÇÑÀ» ³²¿ë¸»ÀÚ. **)

- DNS ¸¦ ½Å·ÚÇÏÁö ¸øÇÑ´Ù¸é ½ÂÀÎ Å×ÀÔ¸£¿¡¼­ È£½ºÆ®À̸§ ´ë½Å IP¸¦ »ç¿ëÇÏÀÚ. ±âº»ÀûÀ¸·Î
mysqld ÀÇ --secure ¿É¼ÇÀº È£½ºÆ®À̸§À» ¾ÈÀüÇÏ°Ô ÇÑ´Ù. ¾î¶² °æ¿ì ¿ÍÀϵåÄ«µå ¹®ÀÚ°¡ Æ÷
ÇÔµÈ È£½ºÆ®À̸§ °ªÀ» »ç¿ëÇÒ¶§´Â ¸Å¿ì Á¶½ÉÇØ¾ß ÇÑ´Ù.

- mysql.server ½ºÅ©¸³Æ®¿¡¼­ À¯´Ð½º root »ç¿ëÀÚÀÇ ºñ¹Ð¹øÈ£¸¦ ³Ö´Â´Ù¸é, ÀÌ ½ºÅ©¸³Æ®´Â
¿ÀÁ÷ root¸¸ÀÌ ÀÐÀ» ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù.

´ÙÀ½ÀÇ mysqld ¿É¼ÇÀº º¸¾È°ú °ü·ÃµÇ¾î ÀÖ´Ù:

--secure : gethostbyname() ½Ã½ºÅÛ ÄÝ¿¡ ÀÇÇØ ¸®ÅÏµÈ IP ¼ýÀÚ°¡ ¿ø·¡ÀÇ È£½ºÆ®À̸§À» reso
lve ÇÑ °Í°ú °°ÀºÁö¸¦ Á¡°ËÇÑ´Ù. ÀÌ°ÍÀº ¾î¶² »ç¶÷ÀÌ ´Ù¸¥ È£½ºÆ® À̸§À» ¿¡¹Ä·¹ÀÌÅÍÇؼ­
Á¢±ÙÇÏ´Â °ÍÀ» ¾î·Æ°Ô ¸¸µç´Ù. ÀÌ ¿É¼ÇÀº ¶ÇÇÑ È£½ºÆ®À̸§ÀÌ ¿ÂÀüÇÑÁö¿¡ ´ëÇÑ Á¡°ËÀ» Ãß°¡
ÇÑ´Ù. Çؼ®Çϴµ¥ ¶§·Î´Â ½Ã°£ÀÌ ¸¹ÀÌ °É·Á¼­ mysql 3.21¿¡¼­´Â ±âº»ÀûÀ¸·Î ¼³Á¤ÀÌ µÇ¾î ÀÖ
Áö ¾Ê´Ù. mysql 3.22¿¡¼­´Â È£½ºÆ®À̸§À» ij½¬ÇÏ°í ÀÌ ¿É¼ÇÀÌ ±âº»ÀûÀ¸·Î ¼³Á¤µÇ¾î ÀÖ´Ù.
(** ÇÔ¼ö gethostbyname()Àº È£½ºÆ® À̸§À» ÀÎÀÚ·Î ¹Þ¾Æ ±×¿¡ ÇØ´çÇÏ´Â IP ÁÖ¼Ò ¹× ±âŸ Á¤
º¸¸¦ ÇØ´çÇÏ´Â ±¸Á¶Ã¼¿¡ ´ã¾Æ ±× ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. ½±°Ô ¸»Çؼ­ È£
½ºÆ® À̸§À» ³ÖÀ¸¸é ÇØ´ç IP ÁÖ¼Ò¸¦ ã¾ÆÁÖÁö¿ä.**)

--skip-grant-tables : ÀÌ ¿É¼ÇÀ» »ç¿ëÇÏ¸é ¼­¹ö°¡ ±ÇÇÑ ½Ã½ºÅÛÀ» ÀüÇô »ç¿ëÇÏÁö ¾Ê´Â´Ù.
±×·¯¸é ¸ðµç »ç¿ëÀÚ°¡ ¸ðµç µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ´Ù! (mysqladmin reload ¸¦ ½ÇÇàÇÏ
¿© ½ÇÇàÁßÀÎ ¼­¹ö°¡ ½ÂÀÎ Å×À̺íÀ» »ç¿ëÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù.)

--skip-name-resolve : È£½ºÆ®À̸§ÀÌ Çؼ®µÇÁö ¾Ê´Â´Ù. ½ÂÀÎ Å×À̺íÀÇ ¸ðµç Host Ä÷³°ªÀº
¹Ýµå½Ã IP ¼ýÀÚÀ̰ųª ·ÎÄÃÈ£½ºÆ®À̾î¾ß ÇÑ´Ù.

--skip-networking : ³×Æ®¿÷À» ÅëÇÑ TCP/IP ¿¬°áÀ» Çã¿ë¾ÈÇÔ. mysqld¿Í ¸ðµç ¿¬°áÀº À¯´Ð½º
µµ¸ÞÀÎ ¼ÒÄÏÀ» ÅëÇØ ¸¸µé¾îÁø´Ù. ÀÌ ¿É¼ÇÀº MIT-pthreads¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛ¿¡¼­´Â Á¦´ë·Î
ÀÛµ¿À» ÇÏÁö ¾Ê´Â´Ù. ¿Ö³Ä¸é MIT-pthreads ÆÐÅ°Áö´Â À¯´Ð½º ¼ÒÄÏÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®ÀÌ
´Ù. (** ¸®´ª½º¸¦ »ç¿ëÇÏ´Â »ç¶÷µé¿¡°Ô´Â »ó°ü¾ø°ÚÁÒ? À¯´Ð½º µµ¸ÞÀÎ ¼ÒÄÏÀ» Áö¿øÇϴϱñ.
ÀÌ¿Í ºñ½ÁÇÏ°Ô postgresµµ 6.3¹öÀü ÀÌÈĺÎÅÍÀΰ¡¿ä? ±âº»ÀûÀ¸·Î À¯´Ð½º µµ¸ÞÀÎ ¼ÒÄÏÀ¸·Î ¹Ù
²î¾úÁö¿ä. **)
9. mysql ¼­¹ö ±â´É(functions)

9.1 mysql¿¡¼­ Áö¿øÇÏ´Â ¾ð¾î
mysqldÀÇ ¿¡·¯ ¸Þ½ÃÁö´Â ´ÙÀ½ÀÇ ¾ð¾î·Î ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù. : Czech, Dutch, English(±âº»
°ª), ±âŸ µîµî (** ±âŸ ¾ð¾î´Â ¸Å´º¾ó Âü°í. ÇѱÛ, ÀϺ»¾î µî µ¿¾ç±ÇÀº ¿©±â¼­ ºüÁ®ÀÖ½À´Ï
´Ù. 9.1.1 ÀýÀ» Âü°íÇϼ¼¿ä. **)

mysqld¸¦ ƯÁ¤ÇÑ ¾ð¾î·Î ½ÃÀÛÇÏ·Á¸é --language=lang ¶Ç´Â -L lang ¿É¼ÇÀ» »ç¿ëÇÏ¸é µË´Ï
´Ù.

¿¹> # mysqld--language=swedish

¶Ç´Â

# mysqld --language=/usr/local/share/swedish

¸ðµç ¾ð¾î´Â ¼Ò¹®ÀڷΠǥ±âÇÕ´Ï´Ù.

¾ð¾î ÆÄÀÏÀº (±âº»°ªÀ¸·Î) 'mysql_base_dir/share/LANGUAGE/'¿¡ ÀÖ½À´Ï´Ù.

¿¡·¯ ¸Þ½ÃÁö ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®ÇÏ·Á¸é 'errmsg.txt' ÆÄÀÏÀ»  ÆíÁýÇÏ°í 'errmsg.sys' ÆÄÀÏÀ» ¸¸
µé±â À§ÇØ ´ÙÀ½ÀÇ ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù.

# comp_err errmsg.txt errmsg.sys

¸¸¾à mysqlÀÇ »õ·Î¿î ¹öÀüÀ¸·Î ¾÷±×·¹À̵åÇÏ¸é »õ·Î¿î 'errmsg.txt' ÆÄÀÏ·Î À§¿Í °°Àº °úÁ¤
À» °ÅÃÄ¾ß ÇÕ´Ï´Ù.


9.1.1 µ¥ÀÌÅÍ¿Í Á¤¿­¿¡ »ç¿ëÇÏ´Â ¹®ÀÚ ¼Â
±âº»ÀûÀ¸·Î mysqlÀº ISO-8859-1 (Latin 1) ¹®ÀÚ ¼ÂÀ» »ç¿ëÇÕ´Ï´Ù. ÀÌ ¹®ÀÚ¼ÂÀº ¹Ì±¹°ú ¼­À¯
·´¿¡¼­ »ç¿ëÇÏ´Â ¹®ÀÚ ¼ÂÀÔ´Ï´Ù.

¹®ÀÚ¼ÂÀº À̸§¿¡ ¾î¶² ¹®ÀÚ¼ÂÀ» »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö ±×¸®°í SELECT ¹®¿¡¼­ ORDER BY ¿Í
GROUP BY ¹®À» »ç¿ëÇÒ ¶§ ¾î¶»°Ô Á¤·ÄµÇ´ÂÁö¸¦ °áÁ¤ÇÕ´Ï´Ù.

ÄÄÆÄÀÏÇÒ¶§ configure¿¡¼­ --with-charset=charset ¿É¼ÇÀ» »ç¿ëÇÏ¿© ¹®ÀÚ¼ÂÀ» ¹Ù²Ü ¼ö ÀÖ½À
´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº 4.7.1 À» Âü°íÇϼ¼¿ä.
(** ÇѱÛÀ» »ç¿ëÇϱâ À§Çؼ­ ÀÌ ºÎºÐÀº Áß¿äÇÕ´Ï´Ù. ¿ì¸®´Â  ÄÄÆÄÀÏÇÒ¶§ ¹®ÀÚ¼ÂÀ» sjis·Î ¹Ù
²Ù¾î ÁÖ¸é µË´Ï´Ù. sjis´Â ÀϺ»¾î 2¹ÙÀÌÆ® ¹®ÀÚ  ¼ÂÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇØ¾ß Á¤·ÄÀÌ Á¦´ë·Î µÇ°í
Á¤±ÔÇ¥Çö½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. **)  


9.1.2 »õ·Î¿î ¹®Àڼ Ãß°¡
** »ý·« **


9.1.3 ¸ÖƼ¹ÙÀÌÆ® ¹®ÀÚ Áö¿ø
¸ÖƼ ¹ÙÀ̽º ¹®ÀÚ¼ÂÀ» ¸¸µé¸é _MB ¸ÅÅ©·Î¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

** »ý·« **


9.2 ¾÷µ¥ÀÌÆ® ·Î±×
mysqld¸¦ ½ÃÀÛÇÒ ¶§ --log-update=file_name ¿É¼ÇÀ»  »ç¿ëÇϸé mysqld´Â µ¥ÀÌŸ¸¦ ¾÷µ¥ÀÌ
Æ®ÇÑ ¸ðµç  sql ¹®À»  Æ÷ÇÔÇÏ´Â ·Î±×  ÆÄÀÏÀ» ±â·ÏÇÕ´Ï´Ù.  ÆÄÀÏÀº  data µð·ºÅ丮(**  º¸Åë
mysql ¼³Ä¡ µð·ºÅ丮 ¹ØÀÇ data  µð·ºÅ丮 **)¿¡ ±â·ÏµÇ¸ç file_name.#  ÇüÅ·ΠµË´Ï´Ù. #Àº
mysqladmin refresh ³ª mysqladmin flush -logs, FLUSH LOGS ¹®, ¶Ç´Â ¼­¹ö¸¦ Àç½ÃÀÛÇÒ
¶§¸¶´Ù Áõ°¡µË´Ï´Ù.

--log ³ª -l ¿É¼ÇÀ» »ç¿ëÇϸé ÆÄÀÏ À̸§Àº 'hostname.log'°¡ µÇ¸ç, restart³ª refreshes¸¦  ÇØ
µµ »õ·Î¿î ·Î±× ÆÄÀÏÀÌ ¸¸µé¾îÁöÁö ¾Ê½À´Ï´Ù. ±âº»ÀûÀ¸·Î mysql.server ½ºÅ©¸³Æ®´Â  -l ¿É¼Ç
À¸·Î mysql ¼­¹ö¸¦ ½ÃÀÛÇÕ´Ï´Ù. production enviroment(?)¸¦ »ç¿ëÇÏ¿© ½ÃÀÛÇÒ¶§ ´õ ³ªÀº ¼º
´ÉÀÌ ÇÊ¿äÇϸé mysql.server¿¡¼­ -l ¿É¼ÇÀ» Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.

¾÷µ¥ÀÌÆ® ·Î±×´Â Áö´ÉÀûÀ̼­ ½ÇÁ¦·Î µ¥ÀÌŸ°¡ ¾÷µ¥ÀÌÆ®µÉ ¶§¸¸ ·Î±× ±â·ÏÀ» ³²±é´Ï´Ù. ±×·¡
¼­ WHERE¸¦ »ç¿ëÇÑ UPDATE³ª DELETE¿¡¼­ ÇØ´çÇÏ´Â ·¹Äڵ带 ãÁö ¸øÇÏ¸é ·Î±× ÆÄÀÏ
¿¡ ±â·ÏÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ ÀÌ¹Ì Á¸ÀçÇÏ´Â °ªÀ» »ç¿ëÇÒ¶§µµ Update ¹®Àº ¹«½ÃµË´Ï´Ù.

¾÷µ¥ÀÌÆ® ·Î±× ÆÄÀÏ¿¡¼­ µ¥ÀÌÅͺ£À̽º¸¦  ¾÷µ¥ÀÌÆ®ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ  ÇÏ¸é µË´Ï´Ù. (·Î±×
ÆÄÀÏÀÌ 'file_name.#'ÀÇ ÇüŶó°í °¡Á¤)

# ls -1 -t -r file_name.[0-9]* | xargs cat | mysql

ls´Â Á¤È®ÇÑ ¼ø¼­·Î ¸ðµç ·Î±× ÆÄÀÏÀ» °¡Á®¿Ã ¶§ »ç¿ëÇÕ´Ï´Ù.

ÀÌ°ÍÀº µ¥ÀÌÅͺ£À̽º¿¡ ¼Õ»óÀÌ »ý±ä µÚ ¹é¾÷ ÆÄÀÏ·Î º¹±¸ÇÒ ¶§ À¯¿ëÇϸç, ¹é¾÷°ú ¼Õ»óÀÌ »ý
±ä ½Ã°£ »çÀÌ¿¡ ÀϾ ¾÷µ¥ÀÌÆ®¸¦ ´Ù½Ã ÇÒ¶§(redo) »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

¶ÇÇÑ ´Ù¸¥ È£½ºÆ®¿¡ ¹Ì·¯¸µµÈ µ¥ÀÌÅͺ£À̽º¸¦  °¡Áö°í ÀÖÀ¸¸ç ¸¶½ºÅÍ µ¥ÀÌÅͺ£À̽º¿¡  »ý±ä
º¯È­¸¦ º¹»çÇÒ¶§ ¾÷µ¥ÀÌÆ® ·Î±×¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

9.3 mysql Å×À̺í ÃÖ´ë Å©±â
mysql ÀÚü´Â Å×À̺í ÃÖ´ë Å©±â°¡ 4GÀÌ¸ç ¿î¿µ ½Ã½ºÅÛÀº °¢ÀÚÀÇ °íÀ¯ÇÑ ÆÄÀÏ Å©±â  Á¦ÇÑÀÌ
ÀÖ½À´Ï´Ù. ¸®´ª½º¿¡¼­´Â ÇöÀç 2G ÀÔ´Ï´Ù. ¼Ö¶ó¸®½º 2.5.1¿¡¼­´Â 4GÀ̸ç,  ¼Ö¶ó¸®½º 2.6¿¡¼­´Â
1000G°¡ µÉ °ÍÀÔ´Ï´Ù. ÇöÀç Å×À̺í Å©±â Á¦ÇÑÀº 4GÀ̰ųª, (MYSQL Á¦ÇÑ) ¿î¿µ ½Ã½ºÅÛ Á¦
ÇÑÀÔ´Ï´Ù. 4G ÀÌ»óÀ¸·Î È®´ëÇϱâ À§ÇØ ¾ÕÀ¸·Î mysqlÀ»  ¹Ù²Ü °ÍÀÔ´Ï´Ù. ºÎ·Ï F¸¦ Âü°íÇϼ¼
¿ä.

°Å´ë Å×À̺íÀ» Àбâ Àü¿ëÀ¸·Î ÇÏ¸é  ¸¹Àº Å×À̺íÀ» Çϳª·Î ¸ðÀ¸°í  ¾ÐÃàÇÏ´Â pack_isam À»
»ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. pack_isamÀº ÀϹÝÀûÀ¸·Î Å×À̺íÀ» ÃÖ¼Ò 50%  ¾ÐÃàÇÏ¿© È¿°úÀûÀ¸·Î ´õ
Å« Å×À̺íÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. 12.3 [pack_isam]À» Âü°íÇϼ¼¿ä.

´Ù¸¥ ¼Ö·ç¼ÇÀº MERGE ¶óÀ̺귯¸®¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç  identical Å×À̺íÀ» ¸ð¾Æ Çϳª·Î °ü
¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. (¿©±â¼­  IdenticalÀº ¸ðµç Å×À̺íÀÌ identical  Ä÷³ Á¤º¸·Î ¸¸µé¾îÁø´Ù´Â
°ÍÀ»  ÀǹÌÇÕ´Ï´Ù.)  ÇöÀç  MERGE´Â  À妽º¸¦  Áö¿øÇÏÁö  ¾Ê±â  ¶§¹®¿¡  Å×À̺íÀÇ  ¸ðÀ½
(collection)¸¸À» °Ë»öÇϴµ¥¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °¡±î¿î  ½ÃÀϳ»¿¡ ¿©±â¿¡ À妽º¸¦ Ãß°¡
ÇÒ °ÍÀÔ´Ï´Ù.

(** Âü°í·Î Àбâ Àü¿ë Å×À̺íÀº mysql¿¡ ¶óÀ̼¾½º¸¦ ÁöºÒÇÏ°í ±¸ÀÔÇßÀ» ¶§¸¸ ¸¸µé ¼ö ÀÖ½À
´Ï´Ù. ´ÜÁö Àб⸸ ÇÏ´Â °ÍÀº °¡´ÉÇÏÁö¸¸ ¾ÐÃàÀÌ µÈ Àбâ Àü¿ë Å×À̺íÀº ¸¸µé ¼ö  ¾ø½À´Ï´Ù.
**)
10. mysqlÀÇ ÃÖ´ë ¼º´É Çâ»ó ¹æ¹ý

10.1 ¹öÆÛ Å©±â Á¶Á¤
mysqld ¼­¹ö°¡ »ç¿ëÇÏ´Â ±âº» ¹öÆÛ Å©±â´Â ´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î ¾Ë ¼ö ÀÖ´Ù.

shell> mysqld --help

ÀÌ ¸í·ÉÀº ¸ðµç mysqld ¿É¼ÇÀÇ ¸ñ·Ï°ú ¼³Á¤ º¯¼ö¸¦ º¸¿©ÁØ´Ù. Ãâ·ÂµÇ´Â ³»¿ëÀº ±âº»°ªÀ»
Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç ´ÙÀ½°ú ºñ½ÁÇÏ´Ù.

Possible variables for option --set-variable (-O) are:
back_log              current value: 5
connect_timeout       current value: 5
join_buffer           current value: 131072
key_buffer            current value: 1048540
long_query_time       current value: 10
max_allowed_packet    current value: 1048576
max_connections       current value: 90
max_connect_errors    current value: 10
max_join_size         current value: 4294967295
max_sort_length       current value: 1024
net_buffer_length     current value: 16384
record_buffer         current value: 131072
sort_buffer           current value: 2097116
table_cache           current value: 64
tmp_table_size        current value: 1048576
thread_stack          current value: 131072
wait_timeout          current value: 28800

mysqld ¼­¹ö°¡ ÇöÀç °¡µ¿ÁßÀÌ¸é ´ÙÀ½ÀÇ ¸í·ÉÀ» ÅëÇØ ½ÇÁ¦ º¯¼ö°ªÀ» º¼ ¼ö ÀÖ´Ù.

shell> mysqladmin variables

°¢ ¿É¼ÇÀº ¹Ø¿¡¼­ ¼³¸íÇÑ´Ù. ¹öÆÛ  Å©±â, ±æÀÌ, ½ºÅà ũ±â´Â ¹ÙÀÌÆ®ÀÌ´Ù. 'K'(ų·Î¹ÙÀÌÆ®)
³ª 'M'(¸Þ°¡¹ÙÀÌÆ®)¸¦ ¾Õ¿¡ ºÙ¿© °ªÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é 16M´Â 16 ¸Þ°¡¹ÙÀÌÆ®¸¦
°¡¸®Å²´Ù. ´ë¼Ò¹®ÀÚ´Â ±¸º°ÇÏÁö ¾Ê´Â´Ù. 16M ¿Í 16mÀº °°´Ù.

-back_log
mysqlÀÌ °¡Áú ¼ö ÀÖ´Â ÃÖ´ë ¿¬°á ¿äûÀÇ ¼ö. ÀÌ°ÍÀº main mysql ½º·¹µå°¡ ¸Å¿ì ªÀº ½Ã°£
µ¿¾È ¸Å¿ì ¸¹Àº ¿¬°á ¿äûÀ» ¹ÞÀ» ¶§ ±â´ÉÀ» ÇÑ´Ù. À̶§ ¸ÞÀÎ ½º·¹µå°¡ ¿¬°áÀ» üũÇÏ°í »õ
·Î¿î ½º·¹µå¸¦ ½ÃÀÛÇϴµ¥´Â ¾à°£ÀÇ ½Ã°£ÀÌ °É¸°´Ù.(±×·¯³ª ¾ÆÁÖ ÂªÀº ½Ã°£ÀÓ) back_log °ª
Àº mysqlÀÌ ¼ø°£ÀûÀ¸·Î »õ·Î¿î ¿äû¿¡ ´äÇÏ´Â °ÍÀ» ¸ØÃß±âÀü¿¡ ÀÌ ÂªÀº ½Ã°£µ¿¾È ¾ó¸¶³ª
¸¹Àº ¿äûÀ» ½×¾ÆµÎ°í ÀÖ´ÂÁö¸¦ ÁöÁ¤ÇÑ´Ù. ¸Å¿ì ªÀº ½Ã°£µ¿¾È ¸Å¿ì ¸¹Àº ¿¬°áÀÌ ¿¹»óµÉ¶§
¸¸ ÀÌ °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù.

´Ù¸¥ ¸»·Î ÀÌ °ªÀº tcp/ip ¿¬°áÀ» ¹Þ´Â listen queueÀÇ Å©±âÀÌ´Ù. °¢ ¿î¿µÃ¼Á¦¸¶´Ù ÀÌ·¯ÇÑ Å¥
ÀÇ Å©±â¿¡ ÇÑ°è°¡ ÀÖ´Ù. Unix system call listen(2) ¸Å´º¾óÆäÀÌÁö¿¡ ÀÚ¼¼ÇÑ Á¤º¸°¡ ÀÖ´Ù. ba
ck_log°ªÀÇ ÇÑ°è´Â ¿î¿µÃ¼Á¦ ¹®¼­¸¦ È®ÀÎÇغÁ¶ó. back_log¸¦ ÃÖ´ë°ªº¸´Ù ´õ ³ô¿©µµ È¿°ú°¡
¾ø´Ù.

-connect_timeout
Bad handshake¿¡ ¹ÝÀÀÇϱâ Àü¿¡ ¿¬°á ÆÐŶÀ» mysql ¼­¹ö¿¡¼­ ±â´Ù¸®´Â ½Ã°£.(ÃÊ)

-join_buffer
(À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â Á¶ÀÎÀÇ) full-join¿¡¼­ »ç¿ëÇÏ´Â ¹öÆÛÀÇ Å©±â. ¹öÆÛ´Â µÎ Å×ÀÌºí »ç
ÀÌ¿¡¼­ °¢ full-join¸¶´Ù Çѹø ÇÒ´çÀÌ µÈ´Ù. À妽ÌÀ» Ãß°¡ÇÏÁö ¸øÇÒ ¶§ Á¶ÀÎ ¹öÆÛ¸¦ Áõ°¡½Ã
Å°¸é full joinÀÇ ¼Óµµ¸¦ Çâ»ó½Ãų ¼ö ÀÖ´Ù. (ÀϹÝÀûÀ¸·Î ºü¸£°Ô Á¶ÀÎÀ» ÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ý
ÀºÀ妽º¸¦ Ãß°¡ÇÏ´Â °ÍÀÌ´Ù)

-key_buffer
À妽º ºí¶ôÀº ¹öÆÛ¸µµÇ°í ¸ðµç ½º·¹µå¿¡¼­ °øÀ¯ÇÑ´Ù. Å° ¹öÆÛ´Â À妽º ºí¶ô¿¡¼­ »ç¿ëÇÏ´Â
¹öÆÛÀÇ Å©±âÀÌ´Ù. À妽º°¡ ¸¹Àº Å×ÀÌºí¿¡¼­ delete³ª insert ÀÛ¾÷À» ¸¹ÀÌ Çϸé Å° ¹öÆÛ°ªÀ»
Áõ°¡½ÃÅ°´Â °ÍÀÌ ÁÁ´Ù. ´õ ºü¸¥ ¼Óµµ¸¦ ³»·Á¸é LOCK TABLES¸¦ »ç¿ëÇÏÀÚ. [Lock Tables]
Âü°í.

-max_allowed_packet
ÇÑ ÆÐŶÀÇ ÃÖ´ë Å©±â. ¸Þ½ÃÁö ¹öÆÛ´Â net_buffer_length ¹ÙÀÌÆ®·Î ÃʱâÈ­µÇÁö¸¸ ÇÊ¿äÇϸé ÃÖ
´ë Çã¿ë ÆÐŶ ¹ÙÀÌÆ®¸¦ Áõ°¡½Ãų ¼ö ÀÖ´Ù.±âº»°ªÀº Å« ÆÐŶÀ» Àâ±â¿¡´Â ÀÛ´Ù. °Å´ë BLOB
Ä÷³À» »ç¿ëÇÑ´Ù¸é °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù. »ç¿ëÀÚ°¡ ¿øÇÏ´Â ÃÖ´ë blob¸¸Å­ Å©°Ô  ÇØ¾ß ÇÑ´Ù.

-max_connections
µ¿½Ã Ŭ¶óÀ̾ðÆ® ¼ýÀÚ. mysqld°¡ ÇÊ¿ä·ÎÇÏ´Â ÆÄÀÏ Áö½ÃÀÚ(descriptor)ÀÇ ¼ýÀÚ¸¸Å­ °ªÀ» ´Ã·Á
¾ß ÇÑ´Ù. ¹Ø¿¡¼­ ÆÄÀÏ µð½ºÅ©¸³ÅÍ Á¦ÇÑ¿¡ ´ëÇÑ ³»¿ëÀ» Âü°íÇÏÀÚ.

-max_connect_errors
È£½ºÆ®¿¡¼­ ÃÖ´ë ¿¬°á ¿¡·¯ÀÌ»óÀÇ interrupted ¿¬°áÀÌ ÀÖÀ¸¸é ´õ ¸¹Àº ¿¬°áÀ» À§ÇØ È£½ºÆ®´Â
blockÈ­µÈ´Ù. FLUSH HOSTS ¸í·ÉÀ¸·Î È£½ºÆ®ÀÇ blockÀ» ÇØÁ¦ÇÒ ¼ö ÀÖ´Ù.

-max_join_size
ÃÖ´ë Á¶ÀÎ Å©±âÀÌ»óÀ¸·Î ·¹Å©µµ¸¦ Àд Á¶ÀÎÀ» ÇÏ¸é ¿¡·¯°¡ ³­´Ù. ¸¸¾à »ç¿ëÀÚ°¡ where ¹®
À» »ç¿ëÇÏÁö ¾Ê°í ½Ã°£ÀÌ ¸¹ÀÌ °É¸®¸é¼­ ¸î¹é¸¸°³ÀÇ ·¹Äڵ带 Àд Á¶ÀÎÀ» ¼öÇàÇÏ·Á Çϸé
ÀÌ °ªÀ» ¼³Á¤ÇÑ´Ù.

-max_sort_length
BLOB³ª TEXT °ªÀ¸·Î Á¤¿­ÇÒ¶§ »ç¿ëÇÏ´Â ¹ÙÀÌÆ®ÀÇ ¼ýÀÚ. (°¢ °ªÁß ¿ÀÁ÷ ù¹ø° max_sort
_length ¹ÙÀÌÆ®¸¸ »ç¿ëµÈ´Ù. ³ª¸ÓÁö´Â ¹«½ÃµÈ´Ù)

-net_buffer_length
ÁúÀÇ¿¡¼­ Åë½Å ¹öÆÛ°¡ ÃʱâÈ­µÇ´Â Å©±â. ÀϹÝÀûÀ¸·Î ¹Ù²îÁö ¾ÊÁö¸¸ ¸Å¿ì ÀûÀº ¸Þ¸ð¸®¸¦ °¡
Áö°í ÀÖÀ» ¶§ ¿¹»óµÇ´Â ÁúÀÇ¿¡ ¸Â°Ô ¼¼ÆÃÇÒ ¼ö ÀÖ´Ù. (ÀÌ°ÍÀº Ŭ¶óÀ̾ðÆ®¿¡ °¡´Â ¿¹»óµÈ sql
¹®ÀÇ ±æÀÌÀÌ´Ù. ÁúÀǹ®ÀÌ ÀÌ Å©±â¸¦ ³ÑÀ¸¸é ¹öÆÛ´Â ÀÚµ¿À¸·Î max_allowed_packet ¹ÙÀÌÆ®±î
Áö Áõ°¡ÇÑ´Ù)

-record_buffer
¼øÂ÷ÀûÀÎ °Ë»öÀ» ÇÏ´Â °¢ ½º·¹µå¿¡¼­ °¢ °Ë»ö Å×ÀÌºí¿¡ ÇÒ´çÇÏ´Â ¹öÆÛ Å©±â. ¼øÂ÷ÀûÀÎ °Ë»ö
À» ¸¹ÀÌ Çϸé ÀÌ °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù.

-sort_buffer
Á¤·ÄÀÌ ÇÊ¿äÇÑ °¢ ½º·¹µå¿¡¼­ ÇÒ´çÇÏ´Â ¹öÆÛ Å©±â. order by ³ª group by ¿ÀÆÛ·¹À̼ÇÀ» ºü
¸£°Ô ÇÏ·Á¸é ÀÌ °ªÀ» Áõ°¡½ÃŲ´Ù. 16.4 [Àӽà ÆÄÀÏ] Âü°í.

-table_cache
¸ðµç ½º·¹µå¿¡¼­ ¿­ ¼ö ÀÖ´Â Å×À̺íÀÇ ¼ýÀÚ. mysqld°¡ ÇÊ¿ä·Î ÇÏ´Â ÆÄÀÏ µð½ºÅ©¸³ÅÍÀÇ ¼ý
ÀÚ¸¸Å­ ÀÌ °ªÀ» Áõ°¡½ÃÄѶó. mysqlÀº °¢ À¯ÀÏÇÑ ¿ÀÇ Å×ÀÌºí¿¡¼­ µÎ°³ÀÇ ÆÄÀÏ µð½ºÅ©¸³ÅÍ°¡
ÇÊ¿äÇÏ´Ù. ÆÄÀÏ µð½ºÅ©¸³ÅÍ Á¦ÇÑÀ»  Âü°íÇÑ´Ù. Å×À̺í ij½¬°¡ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö´Â 10.6 [Å×
À̺í ij½¬]¸¦ Âü°íÇÑ´Ù.

-tmp_table_size
Àӽà Å×À̺íÀÌ ÀÌ °ªÀ» ³ÑÀ¸¸é mysqlÀº "The Table tbl_name is full"À̶ó´Â ¿¡·¯ ¸Þ½ÃÁö¸¦
³½´Ù. ¸Å¿ì ¸¹Àº group by ÁúÀǸ¦ »ç¿ëÇϸé ÀÌ °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù.

-thread_stack
°¢ ½º·¹µåÀÇ ½ºÅà »çÀÌÁî. creash-me test(**¿ªÀÚÁÖ : µ¥ÀÌÅͺ£À̽ºÀÇ º¥Ä¡¸¶Å·À» ÇÏ´Â Å×½º
Æ®ÀÔ´Ï´Ù. ¸»±×´ë·Î µ¥ÀÌÅͺ£À̽º¸¦ Á׿©ÁÖÁö¿ä) ¿¡¼­ ÀâÈ÷´Â ¸¹Àº Á¦ÇÑÀº ÀÌ °ª¿¡ ´Þ·ÁÀÖ
´Ù. ±âº»°ªÀº ÀϹÝÀûÀ¸·Î ÃæºÐÈ÷ Å©´Ù. 11ÀåÀÇ [º¥Ä¡¸¶Å©] ÂüÁ¶

-wait_timeout
¿¬°áÀ» ²÷±âÀü¿¡ ¿¬°á È°µ¿(activity)À» ¼­¹ö¿¡¼­ ±â´Ù¸®´Â ½Ã°£(ÃÊ).

table_cache ¿Í max_connections´Â ¼­¹ö°¡ ¿­ ¼ö ÀÖ´Â ÃÖ´ë ÆÄÀÏ °¹¼ö¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù. ÀÌ
°ªÀ» Áõ°¡½ÃÅ°¸é ¿î¿µ½Ã½ºÅÛ¿¡¼­ ¿ÀÇ ÆÄÀÏ µð½ºÅ©¸³ÅÍÀÇ per-process ¼ýÀÚÀÇ ÇÑ°è±îÁö ¿Ã
¸± ¼ö ÀÖ´Ù. (** ... imposed by your operating system on the per-process number of
open file descriptors. ¹ø¿ªÀÌ ÀÌ»óÇϹǷΠ¿µ¹® Âü°í)
±×·¯³ª ¸¹Àº ½Ã½ºÅÛ¿¡¼­ ÀÌ ÇѰ踦 Áõ°¡½Ãų¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é °¢ ½Ã½ºÅÛ¿¡¼­ ÀÌ ÇÑ°è
¸¦ º¯È­½ÃÅ°´Â ¹æ¹ýÀÌ ¸Å¿ì ´Ù¾çÇϹǷΠ¿î¿µÃ¼Á¦ ¹®¼­¸¦ Âü°íÇØ¾ß ÇÑ´Ù.

table_cache ´Â max_connections ¿Í °ü°è°¡ ÀÖ´Ù. ¿¹¸¦ µé¸é 200°³ÀÇ ¿¬°áÀÌ ÀÖÀ¸¸é ÃÖ¼Ò 2
00 * n ÀÇ Å×À̺í ij½¬¸¦ °¡Á®¾ß ÇÑ´Ù. ¿©±â¼­ nÀº Á¶Àο¡¼­ Å×À̺íÀÇ ÃÖ´ë ¼ýÀÚÀÌ´Ù.

mysqlÀº ¸Å¿ì À¯¿ëÇÑ ¾Ë°í¸®ÁòÀ» »ç¿ëÇϱ⠶§¹®¿¡ ÀϹÝÀûÀ¸·Î´Â ¸Å¿ì ÀûÀº ¸Þ¸ð¸®·Î »ç¿ë
ÇÒ ¼ö ÀÖÀ¸¸ç ¸Þ¸ð¸®°¡ ¸¹À» ¼ö·Ï ¼º´ÉÀÌ ´õ ¸¹ÀÌ Çâ»óµÈ´Ù.

¸¹Àº ¸Þ¸ð¸®¿Í ¸¹Àº Å×À̺íÀ» °¡Á³°í Áß°£Á¤µµ ¼ýÀÚÀÇŬ¶óÀ̾ðÆ®¿¡¼­ ÃÖ´ëÀÇ ¼º´ÉÀ» ¿øÇÑ´Ù
¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù.

shell> safe_mysqld -O key_buffer=16M -O table_cache=128 \
         -O sort_buffer=4M -O record_buffer=1M &

¸Þ¸ð¸®°¡ Àû°í ¿¬°áÀÌ ¸¹À¸¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù.

shell> safe_mysqld -O key_buffer=512k -O sort_buffer=100k \
         -O record_buffer=100k &

¶Ç´Â:

shell> safe_mysqld -O key_buffer=512k -O sort_buffer=16k \
         -O table_cache=32 -O record_buffer=8k -O net_buffer=1K &

¸Å¿ì ¸¹Àº ¿¬°áÀÌ ÀÖÀ» ¶§ mysqld°¡ °¢ ¿¬°á¸¶´Ù ÃÖ¼ÒÇÑÀÇ ¸Þ¸ð¸®¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇÏÁö
¾Ê¾Ò´Ù¸é "swapping problems" ¹®Á¦°¡ »ý±æ °ÍÀÌ´Ù.

mysqld¿¡¼­ ¿É¼ÇÀ» ¹Ù²Ù¾úÀ¸¸é ±×°ÍÀº ¼­¹öÀÇ ÇØ´çÇÏ´Â ÀνºÅϽº¿¡¸¸ ¿µÇâÀ» ¹ÌÄ£´Ù´Â °Í
À» ±â¾ïÇÏÀÚ.

¿É¼ÇÀ» ¹Ù²Ù¾úÀ»¶§ÀÇ È¿°ú¸¦ º¸±â À§ÇØ ´ÙÀ½°ú °°ÀÌ Çغ¸ÀÚ.

shell> mysqld -O key_buffer=32m --help

¸¶Áö¸·¿¡ --help ¿É¼ÇÀÌ µé¾î°£ °ÍÀ» ±â¾ïÇÏÀÚ. ±×·¸Áö ¾ÊÀ¸¸é Ä¿¸Çµå ¶óÀο¡¼­ »ç¿ëÇÑ ¿É
¼ÇÀÇ È¿·ÂÀº Ãâ·Â¿¡´Â ¹Ý¿µµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.


10.2 ¸Þ¸ð¸® »ç¿ë ¹æ¹ý <¸Þ¸ð¸® ÃÖÀûÈ­>

¾Æ·¡¿¡¼­ ¼³¸íÇÏ´Â ¸ñ·ÏÀº mysqld ¼­¹ö°¡ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ³ªÅ¸³»°í ÀÖ
´Ù. ¸Þ¸ð¸® »ç¿ë°ú °ü·ÃµÈ ¼­¹öÀÇ º¯¼ö À̸§ÀÌ ÁÖ¾îÁø´Ù.


- Å° ¹öÆÛ(º¯¼ö key_buffer)´Â ¸ðµç ½º·¹µå¿¡¼­ °øÀ¯ÇÑ´Ù. ¼­¹ö¿¡¼­ »ç¿ëÇÏ´Â ´Ù¸¥ ¹öÆÛ´Â
ÇÊ¿äÇÑ´ë·Î ÇÒ´çÀÌ µÈ´Ù.

- °¢ ¿¬°áÀº °¢ ½º·¹µå¸¶´ÙÀÇ Æ¯Á¤ÇÑ °ø°£À» »ç¿ëÇÑ´Ù. ½ºÅÃ(64k, º¯¼ö thread_stack) , ¿¬°á
¹öÆÛ(º¯¼ö net_buffer_length), result ¹öÆÛ (º¯¼ö net_buffer_length) µî. ¿¬°á ¹öÆÛ¿Í result
¹öÆÛ´Â ÇÊ¿äÇÒ¶§ max_allowed_packet ±îÁö µ¿ÀûÀ¸·Î Áõ°¡µÈ´Ù. ÁúÀÇ°¡ ¼öÇàµÉ ¶§ ÇöÀçÀÇ
ÁúÀǹ®ÀÇ º¹»ç¹®ÀÌ ¶ÇÇÑ ÇÒ´çÀÌ µÈ´Ù.
(** When a query is running a copy of the current query string is also alloced.)

- ¸ðµç ½º·¹µå´Â °°Àº ±âº» ¸Þ¸ð¸®¸¦ °øÀ¯ÇÑ´Ù.
- ¸Þ¸ð¸® ¸ÊÀº ¾ÆÁ÷ Áö¿øÀÌ ¾ÈµÈ´Ù. (¾ÐÃà Å×À̺íÀ» Á¦¿ÜÇÏ°í. ±×·¯³ª ÀÌ°ÍÀº ´Ù¸¥ À̾߱âÀÌ
´Ù) ¿Ö³ÄÇϸé 4GBÀÇ 32ºñÆ® ¸Þ¸ð¸® °ø°£Àº ´ëºÎºÐÀÇ ´ëÇü Å×ÀÌºí¿¡¼­ ÃæºÐÈ÷ Å©±â°¡ ¾Ê±â
¶§¹®ÀÌ´Ù. ¿ì¸®°¡ 64ºñÆ® ÁÖ¼Ò °ø°£À» °¡Áø ½Ã½ºÅÛÀ» °¡Áö°Ô µÉ ¶§ ¿ì¸®´Â ¸Þ¸ð¸® ¸ÊÇÎÀ»
À§ÇÑ ÀϹÝÀûÀÎ Áö¿øÀ» Ãß°¡ÇÒ °ÍÀÌ´Ù.

- Å×ÀÌºí¿¡¼­ ¼øÂ÷ÀûÀÎ °Ë»öÀ» ÇÏ´Â °¢ ¿äûÀº read ¹öÆÛ¿¡ ÇÒ´çÀÌ µÈ´Ù. (º¯¼ö record_buff
er)

- ¸ðµç Á¶ÀÎÀº Çѹø¿¡ ¼öÇàÀÌ µÇ¸ç ´ëºÎºÐÀÇ Á¶ÀÎÀº Àӽà Å×À̺íÀ» »ý¼ºÇÏÁö ¾Ê°í ¼öÇàÀÌ
µÈ´Ù. ´ëºÎºÐÀÇ Å×À̺íÀº ¸Þ¸ð¸® ±â¹Ý(HEAP) Å×À̺íÀÌ´Ù. °Å´ë ±æÀÌÀÇ ·¹Äڵ带 °¡Á³°Å³ª
BLOB Ä÷³À» Æ÷ÇÔÇÑ Àӽà Å×À̺íÀº µð½ºÅ©¿¡ ÀúÀåÀÌ µÈ´Ù. ÇöÀçÀÇ ¹®Á¦´Â ¸Þ¸ð¸® ±â¹Ý Å×
À̺íÀÌ tmp_table_size¸¦ ÃÊ°úÇßÀ»¶§ "The table tbl_name is full"À̶ó´Â ¿¡·¯°¡ »ý±â´Â °Í
ÀÌ´Ù. °¡±î¿î ½ÃÀϾȿ¡ ÇÊ¿äÇÒ¶§ ÀÚµ¿ÀûÀ¸·Î ¸Þ¸ð¸® ±â¹Ý(HEAP) Å×À̺íÀ» µð½ºÅ© ±â¹Ý(NI
SAM) Å×À̺í·Î ¹Ù²Ùµµ·Ï °íÄ¥ °ÍÀÌ´Ù.
ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ mysqldÀÇ tmp_table_size ¿É¼ÇÀ» ¼³Á¤ÇÏ¿© Àӽà Å×À̺í Å©±â¸¦
´ÃÀ̰ųª Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥¿¡¼­ SQL_BIG_TABLES¶ó´Â sql ¿É¼ÇÀ» ¼³Á¤ÇÏ¿©¾ß ÇÑ´Ù. 7.
24 SET OPTION À» Âü°íÇÏÀÚ.
mysql 3.20¿¡¼­ Àӽà Å×À̺íÀÇ ÃÖ´ë Å©±â´Â record_buffer*16ÀÌ´Ù. 3.20 ¹öÀüÀ» »ç¿ëÇÏ°í ÀÖ
´Ù¸é record_bufferÀÇ °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù. ¶ÇÇÑ mysqld¸¦ ½ÃÀÛÇÒ ¶§ --big-tables ¿É¼ÇÀ»
»ç¿ëÇÏ¿© Ç×»ó Àӽà Å×À̺íÀ» µð½ºÅ©¿¡ ÀúÀåÇÒ ¼ö ÀÖÁö¸¸ ÁúÀÇ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù.

- Á¤¿­À» ÇÏ´Â ´ëºÎºÐÀÇ ¿äûÀº Á¤·Ä ¹öÆÛ¿Í Çϳª³ª µÎ°³ÀÇ Àӽà ÆÄÀÏÀ» ÇÒ´çÇÑ´Ù. 16.4ÀÇ
[Àӽà ÆÄÀÏ]À» Âü°íÇÑ´Ù.

- ´ëºÎºÐÀÇ ÆÄ¡(parsing)°ú °è»êÀº Áö¿ª ¸Þ¸ð¸®¿¡¼­ ÀÌ·ç¾îÁø´Ù. ÀÛÀº ¾ÆÀÌÅÛ¿¡´Â ¸Þ¸ð¸® o
verhead°¡ ÇÊ¿ä¾ø°í ÀϹÝÀûÀÎ ´À¸° ¸Þ¸ð¸® ÇÒ´ç(slow memory allocation)°ú freeing(¸Þ¸ð¸®
ÇØÁ¦)´Â ¹«½ÃµÈ´Ù. ¸Þ¸ð¸®´Â ¿ÀÁ÷ ¿¹»óÁö ¸øÇÑ °Å´ë ¹®ÀÚ¿­¿¡¼­ ÇÒ´çÀÌ µÈ´Ù.( mallloc() °ú
free() »ç¿ë)

- °¢ À妽º ÆÄÀÏÀº Çѹø¿¡ ¿­¸®¸ç °¢ º´Çà¼öÇàµÇ´Â ½º·¹µå¿¡¼­ µ¥ÀÌÅÍ ÆÄÀÏÀº Çѹø¿¡ ¿­
¸°´Ù. °¢ º´Çà¼öÇà ½º·¹µå¸¶´Ù Å×ÀÌºí ±¸Á¶, °¢ Ä÷³ÀÇ Ä÷³ ±¸Á¶, 3 * n ÀÇ ¹öÆÛ Å©±â°¡ ÇÒ
´çµÈ´Ù. ( nÀº ÃÖ´ë ·¹ÄÚµå ±æÀÌÀ̸ç BLOB Ä÷³Àº ÇØ´çÇÏÁö ¾Ê´Â´Ù) BLOB´Â BLOB µ¥ÀÌ
ÅÍÀÇ ±æÀÌ¿¡ 5¿¡¼­ 8 ¹ÙÀÌÆ®¸¦ ´õÇÑ °ªÀ» »ç¿ëÇÑ´Ù.

- BLOB Ä÷³À» °¡Áø °¢ Å×ÀÌºí¿¡¼­ ¹öÆÛ´Â °Å´ë BLOB °ªÀ» ÀÐÀ» ¼ö ÀÖµµ·Ï µ¿ÀûÀ¸·Î Ä¿
Áø´Ù. Å×À̺íÀ» °Ë»öÇÏ¸é ¹öÆÛ´Â ÃÖ´ë BLOBÀÇ °ª¸¸Å­ ¹öÆÛ°¡ ÇÒ´çÀÌ µÈ´Ù.

- ¸ðµç »ç¿ëÁßÀÎ Å×À̺íÀÇ Å×À̺í Çڵ鷯´Â ij½¬¿¡ ÀúÀåµÇ¸ç FIFO·Î °ü¸®°¡ µÈ´Ù. ÀϹÝÀû
À¸·Î ij½¬´Â 64 ¿£Æ®¸®¸¦ °®´Â´Ù. µ¿½Ã¿¡ µÎ°³ÀÇ ½ÇÇà ½º·¹µå¿¡¼­ Å×À̺íÀ» »ç¿ëÇϸé ij½¬
´Â Å×À̺íÀÇ µÎ ¿£Æ®¸®¸¦ Æ÷ÇÔÇÑ´Ù. 10.6 [Å×À̺í ij½¬]¸¦ Âü°íÇÑ´Ù.

- mysqladmin flush-tables ¸í·ÉÀº »ç¿ëÇÏÁö ¾Ê´Â ¸ðµç Å×À̺íÀ» ´Ý°í ÇöÀç ½ÇÇàµÇ´Â ½º·¹
µå°¡ ³¡³¯ ¶§ ¸ðµç »ç¿ëÁßÀÎ Å×À̺íÀ» ´Ý´Â´Ù°í Ç¥½ÃÇÑ´Ù. ÀÌ°ÍÀº È¿°úÀûÀ¸·Î »ç¿ëÁßÀÎ ¸Þ
¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù.


ps ¿Í ´Ù¸¥ ½Ã½ºÅÛ »óȲ ÇÁ·Î±×·¥Àº mysqld°¡ ¸¹Àº ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ°í ÀÖ´Ù°í º¸°íÇÒ °ÍÀÌ
´Ù. ÀÌ°ÍÀº ´Ù¸¥ ¸Þ¸ð¸® ÁÖ¼ÒÀÇ ½º·¹µå-½ºÅö§¹®¿¡ »ý±ä´Ù. ¿¹¸¦ µé¸é ¼Ö¶ó¸®½ºÀÇ ps ´Â ½º
ÅûçÀÌÀÇ »ç¿ëÇÏÁö ¾Ê´Â ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ¸Þ¸ð¸®·Î °£ÁÖÇÑ´Ù. ÀÌ°ÍÀº swap -s¸¦ ÀÌ¿ë »ç
¿ë°¡´ÉÇÑ ½º¿ÒÀ» üũÇÏ¿© È®ÀÎÇÒ¼ö ÀÖ´Ù. ¿ì¸®´Â mysqld¸¦ »ó¿ë ¸Þ¸ð¸® À¯Ãâ ÃøÁ¤ ÇÁ·Î±×
·¥À¸·Î Å×½ºÆÃÇؼ­ mysqld¿¡´Â ¸Þ¸ð¸® À¯ÃâÀÌ ¾ø´Ù.


10.3 ¼Óµµ Çâ»ó¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ÄÄÆÄÀÏ/¸µÅ© ¹æ¹ý <ÄÄÆÄÀϽà ÃÖÀûÈ­Çϱâ>

´ÙÀ½ Å×½ºÆ®ÀÇ ´ëºÎºÐÀº ¸®´ª½º¿Í mysql º¥Ä¡¸¶Å©¸¦ °¡Áö°í ¼öÇàµÇ¾úÁö¸¸ ´Ù¸¥ ¿î¿µ ½Ã½º
ÅÛ¿¡µµ ¾Ï½ÃÇØÁÖ´Â °ÍÀÌ ÀÖ´Ù.

staticÀ¸·Î ¸µÅ©¸¦ ÇÒ¶§ °¡Àå ºü¸¥ ½ÇÇà ¼Óµµ¸¦ ¾òÀ» ¼ö ÀÖ´Ù. µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇϱâ À§
ÇØ TCP/IPº¸´Ù´Â À¯´Ð½º ¼ÒÄÏÀ» »ç¿ëÇÏ¸é ´õ ÁÁÀº ¼º´ÉÀ» ³¾ ¼ö ÀÖ´Ù.

¸®´ª½º¿¡¼­ pgcc¿Í -O6À» »ç¿ëÇÏ¸é °¡Àå ºü¸£´Ù. 'sql_yacc.cc'¸¦ ÀÌ ¿É¼ÇÀ¸·Î ÄÄÆÄÀÏÇÏ·Á¸é
gcc/pgcc´Â ¸ðµç ¼º´ÉÀ» ³»±â À§ÇØ ¸¹Àº ¸Þ¸ð¸®°¡ ÇÊ¿äÇϱ⠶§¹®¿¡ 180MÀÇ ¸Þ¸ð¸®°¡ ÇÊ¿ä
ÇÏ´Ù. ¶ÇÇÑ mysqlÀ» ¼³Á¤ÇÒ¶§ libstdc++ ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÏÁö ¾Ê±â À§ÇØ CXX=gcc¶ó°í ¼³
Á¤ÇØ¾ß ÇÑ´Ù.

- pgcc¸¦ »ç¿ëÇÏ°í ¸ðµÎ´Ù -O6 ¿É¼ÇÀ¸·Î ÄÄÆÄÀÏÇϸé mysqld ¼­¹ö´Â gcc·Î ÄÄÆÄÀÏÇÑ °Íº¸
´Ù 11% »¡¶óÁø´Ù.

- µ¿ÀûÀ¸·Î ¸µÅ©Çϸé (-staticÀ» »ç¿ëÇÏÁö ¾Ê°í) 13% ´À·ÁÁø´Ù.
  If you connect using TCP/IP rather than Unix sockets, the result is 7.5% slower.
- À¯´Ð½º ¼ÒÄÏÀ» »ç¿ëÇÏ´Â °Íº¸´Ù tcp/ip·Î ¿¬°áÇÏ´Â °ÍÀÌ 7.5% ´À·ÁÁø´Ù.

- On a Sun sparcstation 10, gcc 2.7.3 is 13% faster than Sun Pro C++ 4.2.
- On Solaris 2.5.1, MIT-pthreads is 8-12% slower than Solaris native threads.
(** ¹ø¿ªÀ» ¾ÈÇÑ ÀÌÈÄ. ¸®´ª½º¶û »ó°ü¾øÀ¸´Ï±ñ... **)

TcX¿¡¼­ Á¦°øÇÑ mysql ¸®´ª½º ¹èÆ÷ÆÇÀº pgcc·Î ÄÄÆÄÀϵǾú°í Á¤ÀûÀ¸·Î ¸µÅ©µÇ¾ú´Ù.


10.4 How MySQL uses indexes

prefix- and end-space compressed. See section 7.26 CREATE INDEX syntax (Compatibil
ity function).

¸ðµç À妽º(PRIMARY, UNIQUE and INDEX()) ´Â B-trees ¿¡ ÀúÀåµÈ´Ù. ¹®ÀÚ¿­Àº ÀÚµ¿Àû
À¸·Î ¾Õ µÚÀÇ °ø°£(?)ÀÌ ¾ÐÃàµÈ´Ù. 7.26 [À妽º »ý¼º] Âü°í.

À妽ºÀÇ »ç¿ë :
- WHERE ¹®¿¡¼­ ÇØ´çÇÏ´Â ·¹ÄÚµå »¡¸®  Ã£±â
- Á¶ÀÎÀ» ¼öÇàÇÒ¶§ ´Ù¸¥ Å×ÀÌºí¿¡¼­ ·¹ÄÚµå °¡Á®¿À±â
- ƯÁ¤ Å°¿¡¼­ MAX() ³ª MIN() °ª ã±â
- ¼ÒÆÃÀ̳ª ±×·ìÈ­ÇÒ¶§ À妽º Å°¸¦ »ç¿ëÇϸé Å×À̺íÀ» Á¤¿­Çϰųª ±×·ìÈ­ÇÑ´Ù. Å°¿¡  DES
C°¡ ºÙÀ¸¸é ¿ª¼øÀ¸·Î À妽º¸¦ Àд´Ù.
- ¾î¶² °æ¿ì¿¡´Â µ¥ÀÌÅÍ ÆÄÀÏ¿¡ ¹¯Áö ¾Ê°í °ªÀ» °¡Á®¿Â´Ù. ¾î¶² Å×ÀÌºí¿¡¼­ »ç¿ëÇÏ´Â ¸ðµç
Ä÷³ÀÌ ¼ýÀÚÀÌ°í ƯÁ¤ Å°·Î Çü¼ºµÇ¾îÀÖÀ¸¸é ºü¸¥ ¼Óµµ·Î À妽º Æ®¸®¿¡¼­ °ªÀ» °¡Á®¿Ã ¼ö
ÀÖ´Ù.

´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

mysql> SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;


´ÙÁß Ä÷³ À妽º°¡ col1 °ú col2¿¡ ÀÖÀ¸¸é ÇØ´çÇÏ´Â ·¹Äڵ带 Á÷Á¢ °¡Á®¿Ã ¼ö ÀÖ´Ù.  ºÐ¸®
µÈ ´ÜÀÏ Ä÷³ À妽º°¡ col1 °ú col2 ¿¡ ÀÖÀ¸¸é ÃÖÀûÈ­±â´Â ¾î¶² À妽º°¡ ´õ ÀûÀº ·¹ÄÚµå
¸¦ °¡Á³´ÂÁö È®ÀÎÇÏ°í ·¹Äڵ带 °¡Á®¿À±â À§ÇØ ±× À妽º¸¦ »ç¿ëÇϵµ·Ï °áÁ¤ÇÑ´Ù.

Å×À̺íÀÌ ´ÙÁß Ä÷³ À妽º¸¦ °¡Á³´Ù¸é ÃÖÀûÈ­±â°¡ ·¹Äڵ带 ã´Âµ¥ ¾î¶² À妽ºÅ°¸¦ »ç¿ë
ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é ¼¼°¡Áö Ä÷³ À妽º(col1, col2, col3)¸¦ °¡Á³´Ù¸é (col1), (col1,col2)
(col1,col2,col3) À妽º¸¦ »ç¿ëÇÏ¿© °Ë»öÀ» ÇÒ ¼ö ÀÖ´Ù.  

MySQL can't use a partial index if the columns don't form a leftmost prefix of the inde
x.
Suppose you have the SELECT statements shown below:
(** Çؼ®ÀÌ Àß ¾ÈµÇ´Âµ¥ ¿¹Á¦¸¦ º¸½Ã¸é ¹«½¼ ¸»ÀÎÁö ¾Ë ¼ö ÀÖÀ» °ÍÀÓ**)

mysql> SELECT * FROM tbl_name WHERE col1=val1;
mysql> SELECT * FROM tbl_name WHERE col2=val2;
mysql> SELECT * FROM tbl_name WHERE col2=val2 AND col3=val3;

If an index exists on (col1,col2,col3), only the first query shown above uses the index.
The second and third queries do involve indexed columns, but (col2) and (col2,col3) are
not leftmost prefixes of (col1,col2,col3).

À妽º°¡ (col1,col2,col3)·Î ÀÖ´Ù¸é À§ÀÇ ÁúÀÇÁß ¿ÀÁ÷ ù¹ø° ÁúÀǸ¸ À妽º¸¦ »ç¿ëÇÑ´Ù. µÎ
¹ø° ¹× ¼¼¹ø° ÁúÀÇÀº À妽ºµÈ Ä÷³ÀÌ Æ÷ÇԵǾî ÀÖÁö¸¸ (col2) ¿Í (col2,col3)´Â (col1,col2,c
ol3) À妽º¿¡ ÇØ´çÇÏÁö ¾Ê´Â´Ù.

MySQL also uses indexes for LIKE comparisons if the argument to LIKE is a constant
string that doesn't start with a wildcard character. For example, the following SELECT
stat ements use indexes:

mysqlÀº ¶ÇÇÑ LIKEÀÇ Àμö°¡ ¿ÍÀϵåÄ«µå ¹®ÀÚ·Î ½ÃÀÛÇÏÁö ¾Ê´Â »ó¼ö ¹®ÀÚ¿­ÀÏÀ̶ó¸é LIK
E ºñ±³¹®¿¡¼­ À妽º¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ÀÇ SELECT ¹®Àº À妽º¸¦ »ç¿ëÇÑ´Ù.

mysql> select * from tbl_name where key_col LIKE "Patrick%";
mysql> select * from tbl_name where key_col LIKE "Pat%_ck%";

ù¹ø° ¹®Àå¿¡¼­´Â "Patrick" <= key_col < "Patricl" À» °¡Áø ·¹Äڵ常 °í·ÁµÈ´Ù. µÎ¹ø° ¹®
Àå¿¡¼­´Â "Pat" <= key_col < "Pau" À» °¡Áø ·¹Äڵ常 °í·ÁµÈ´Ù.


´ÙÀ½ÀÇ SELECT ¹®Àº À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù:

mysql> select * from tbl_name where key_col LIKE "%Patrick%";
mysql> select * from tbl_name where key_col LIKE other_col;

ù¹ø° ¹®Àå¿¡¼­ LIKE °ªÀº ¿ÍÀϵåÄ«µå ¹®ÀÚ·Î ½ÃÀÛÇÏ°í ÀÖ´Ù. µÎ¹ø° ¹®Àå¿¡¼­´Â LIKE
°ªÀÌ »ó¼ö°¡ ¾Æ´Ï´Ù.



10.5 WHERE ¹®¿¡¼­ ÃÖÀûÈ­Çϱâ
(À̹ø ÀýÀº ¿ÏÀüÇÑ ³»¿ëÀ» Æ÷ÇÔÇÏ°í ÀÖÁö´Â ¾Ê´Ù. mysqlÀº ¸¹Àº ÃÖÀûÈ­¹æ¹ýÀÌ ÀÖ´Ù.)

In general, when you want to make a slow SELECT ... WHERE faster, the first thing t
o check is whether or not you can add an index. All references between different tables
should usually be done with indexes. You can use the EXPLAIN command to determine
which indexes are used for a SELECT. See section 7.21 EXPLAIN syntax (Get informat
ion about a SELECT).
ÀϹÝÀûÀ¸·Î ´À¸° SELECT ... WHERE ¹®À» ºü¸£°Ô ÇÏ·Á¸é °¡Àå ¸ÕÀú È®ÀÎÇØ¾ß ÇÒ °ÍÀÌ ÀÎ
µ¦½º Ãß°¡ ¹®Á¦ÀÌ´Ù. ´Ù¸¥ Å×À̺í»çÀÌ¿¡¼­ ¸ðµç ·¹ÆÛ·±½º(references ÂüÁ¶)´Â ÀϹÝÀûÀ¸·Î ÀÎ
µ¦½º¿¡ ÀÇÇØ ¼öÇàµÈ´Ù. SELECT ¹®¿¡¼­ ¾î¶² À妽º¸¦ »ç¿ëÇÏ´ÂÁö °áÁ¤Çϱâ À§ÇØ EXPLAI
N ¸í·ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. 7.21 [Explain]À» Âü°í.

mysql¿¡¼­ ¼öÇàÇÏ´Â ÃÖÀûÈ­´Â ´ÙÀ½°ú °°´Ù.


- ºÒÇÊ¿äÇÑ »ðÀÔ¾î Á¦°Å

     ((a AND b) AND c OR (((a AND b) AND (c AND d))))
  -> (a AND b ANDc) OR (a AND b AND c AND d)

-»ó¼ö Æúµù(folding)

     (a    -> b>5 AND b=c AND a=5

- »ó¼ö Á¶°Ç Á¦°Å(»ó¼ö Æúµù¶§¹®¿¡  ÇÊ¿ä)

     (B>=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)
  -> B=5 OR B=6

- À妽º¿¡¼­ »ç¿ëµÇ´Â »ó¼ö Ç¥ÇöÀº Çѹø¿¡ °è»êµÈ´Ù.
(Constant expressions used by indexes are evaluated only once.)

- WHERE ÀýÀÌ ¾ø´Â ´ÜÀÏ Å×À̺íÀÇ COUNT(*)´Â Å×À̺í Á¤º¸¿¡¼­ Á÷Á¢ °ªÀ» °¡Á®¿Â´Ù.
´ÜÀÏ Å×ÀÌºí¿¡¼­ »ç¿ëµÈ NOT NULL Ç¥Çöµµ ÀÌ¿Í °°ÀÌ ¼öÇàµÈ´Ù.  

- À¯È¿ÇÏÁö ¾ÊÀº »ó¼ö Ç¥ÇöÀº ¹Ì¸® Á¦°ÅµÈ´Ù. mysqlÀº ºÒ°¡´ÉÇÏ°í ÇØ´çÇÏ´Â ·¹Äڵ尡 ¾ø´Â
SELECT ¹®À» ºü¸£°Ô °¨ÁöÇÑ´Ù.

- GROUP BY ³ª ±×·ì Æã¼Ç(COUNT(), MIN() ...)À» »ç¿ëÇÏÁö ¾ÊÀ¸¸é HAVINGÀº WHERE
¿¡ ÇÕÃÄÁø´Ù.
(** HAVING Àý¿¡¼­´Â À妽º¸¦ »ç¿ëÇÏÁö ¸øÇÔ. ±×·¯¹Ç·Î °¡´ÉÇÑ HAVINGÀýÀ» »ç¿ëÇÏÁö
¾Ê´Â°Ô ¼Óµµ¸é¿¡¼­ ÁÁ´Ù **)

- °¢ ¼­ºê Á¶Àο¡¼­ ºü¸£°Ô WHERE ¹®À» °è»êÇÏ°í °¡´ÉÇÑÇÑ ·¹Äڵ带 Á¦¿ÜÇϵµ·Ï °£¼ÒÇÏ
°Ô WHERE ¹®ÀÌ ¸¸µé¾îÁø´Ù.

- mysqlÀº ÀϹÝÀûÀ¸·Î ÃÖ¼ÒÇÑÀÇ ·¹Äڵ带 ã±â À§ÇØ À妽º¸¦ »ç¿ëÇÑ´Ù. =, >, >=, <, <=,
BETWEEN ±×¸®°í  'something%' ó·³ ¾ÕÀÌ ¿ÍÀϵåÄ«µå·Î ½ÃÀÛÇÏÁö ¾Ê´Â LIKE ¹®µîÀ»
»ç¿ëÇÏ¿© ºñ±³¸¦ ÇÒ ¶§ À妽º¸¦ »ç¿ëÇÑ´Ù. (** 10.4 Àý¿¡¼­ ¼³¸íÇÏ¿´µíÀÌ like ¸¦ »ç¿ëÇÒ¶§
¿ÍÀϵåÄ«µå·Î ½ÃÀÛÇÏ´Â like ¹®À» »ç¿ëÇϸé À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ÀÏÁ¤ÇÑ ´Ü¾î·Î¸¸ ½Ã
ÀÛÇÏ´Â Ä÷³¿¡¼­ ÀڷḦ ãÀ» ¶§ À¯¿ëÇÒ °ÍÀÌ´Ù. **)

- Any index that doesn't span all AND levels in the WHERE clause is not used to opti
mize the query.

´ÙÀ½ÀÇ WHERE ¹®Àº À妽º¸¦ »ç¿ëÇÑ´Ù.:

... WHERE index_part1=1 AND index_part2=2
... WHERE index=1 OR A=10 AND index=2      /* index = 1 OR index = 2 */
... WHERE index_part1='hello' AND index_part_3=5
        /* optimized like "index_part1='hello'" */

´ÙÀ½ÀÇ WHERE ¹®Àº À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.:

... WHERE index_part2=1 AND index_part3=2  /* index_part_1 is not used */
... WHERE index=1 OR A=10                  /* No index */
... WHERE index_part1=1 OR index_part2=10  /* No index spans all rows */

- ÁúÀÇ¿¡¼­ ´Ù¸¥ Å×ÀÌºíº¸´Ù ¸ðµç »ó¼ö Å×À̺íÀ» ¸ÕÀú Àд´Ù. »ó¼ö Å×À̺íÀº ´ÙÀ½°ú °°´Ù.
      ¤·ºó Å×À̺íÀ̳ª 1°³ÀÇ ·¹Äڵ常 ÀÖ´Â Å×À̺í
      ¤·WHERE ¹®¿¡¼­ UNIQUE À妽º³ª PRIMARY KEY ¸¦ »ç¿ëÇÏ°í ¸ðµç À妽º
´Â »ó¼ö Ç¥ÇöÀ¸·ÎµÈ Å×À̺í

      ´ÙÀ½ÀÇ Å×À̺íÀº »ó¼ö Å×À̺í·Î »ç¿ëµÈ´Ù.

  mysql> SELECT * FROM t WHERE primary_key=1;
  mysql> SELECT * FROM t1,t2
             WHERE t1.primary_key=1 AND t2.primary_key=t1.id;

- ¸ðµç °¡´É¼ºÀ» ½ÃµµÇÏ¿© Å×À̺íÀ» Á¶ÀÎÇϴµ¥ °¡Àå ÁÁÀº Á¶ÀÎ Á¶ÇÕÀ» ã´Â´Ù. (ORDER B
Y³ª GROUP BYÀÇ ¸ðµç Ä÷³ÀÌ µ¿ÀÏÇÑ Å×ÀÌºí¿¡¼­ ³ª¿À¸é Á¶ÀÎÀ» ÇÒ¶§ ÀÌ Å×À̺íÀÌ ¸ÕÀú
¼±ÅõȴÙ)

- ORDER BY ¹®°ú ´Ù¸¥ GROUP BY ¹®ÀÌ ÀÖÀ» ¶§, ¶Ç´Â ORDER BY ³ª GROUP BY°¡
Á¶ÀΠťÀÇ Ã¹¹ø° Å×À̺íÀÌ ¾Æ´Ñ ´Ù¸¥ Å×À̺íÀÇ Ä÷³À» Æ÷ÇÔÇÏ°í ÀÖÀ¸¸é ÀÓ»ç Å×À̺íÀ» ¸¸
µç´Ù.

- °¢ Å×À̺í À妽º¸¦ ã°í ·¹ÄÚµåÀÇ 30%¹Ì¸¸À» »ç¿ëÇÏ´Â (best) À妽º°¡ »ç¿ëµÈ´Ù. ±×·±
À妽º°¡ ¾øÀ¸¸é ºü¸¥ Å×ÀÌºí °Ë»öÀÌ »ç¿ëµÈ´Ù.

- ¾î¶² °æ¿ì¿¡´Â mysqlÀº µ¥ÀÌÅÍ ÆÄÀÏÀ» Á¶È¸ÇÏÁö ¾Ê°í À妽º¿¡¼­ ·¹Äڵ带 ÀÐÀ» ¼ö ÀÖ
´Ù. À妽º¿¡¼­ »ç¿ëÇÑ ¸ðµç Ä÷³ÀÌ ¼ýÀÚ¶ó¸é ÁúÀǸ¦ ó¸®Çϴµ¥ ´ÜÁö À妽º Æ®¸®¸¸À» »ç
¿ëÇÑ´Ù.

- °¢ ·¹Äڵ尡 Ãâ·ÂµÇ±â Àü¿¡ HAVING Àý¿¡ ¸ÂÁö ¾Ê´Â ·¹ÄÚµå´Â °Ç³Ê¶Ú´Ù.

´ÙÀ½Àº ¸Å¿ì ºü¸¥ ÁúÀÇÀÇ ¿¹ÀÌ´Ù:

mysql> SELECT COUNT(*) FROM tbl_name;
mysql> SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;
mysql> SELECT MAX(key_part2) FROM tbl_name
         WHERE key_part_1=constant;
mysql> SELECT ... FROM tbl_name
         ORDER BY key_part1,key_part2,... LIMIT 10;
mysql> SELECT ... FROM tbl_name
         ORDER BY key_part1 DESC,key_part2 DESC,... LIMIT 10;

´ÙÀ½ÀÇ Ä¿¸®´Â À妽º Æ®¸®¸¸À» »ç¿ëÇÏ¿© °ªÀ» ±¸ÇÑ´Ù.(À妽º Ä÷³Àº ¼ýÀÚ¶ó°í °¡Á¤):

mysql> SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;
mysql> SELECT COUNT(*) FROM tbl_name
         WHERE key_part1=val1 and key_part2=val2;
mysql> SELECT key_part2 FROM tbl_name GROUP BY key_part1;

´ÙÀ½ÀÇ ÁúÀÇ´Â °³º°ÀûÀÎ Á¤¿­À» ÇÏÁö ¾Ê°í Á¤¿­µÈ ¼ø¼­´ë·Î ¿­À» °¡Á®¿À´Â µ¥ À妽º¸¦ »ç
¿ëÇÑ´Ù:

mysql> SELECT ... FROM tbl_name ORDER BY key_part1,key_part2,...
mysql> SELECT ... FROM tbl_name ORDER BY key_part1 DESC,key_part2 DESC,...


10.6 Å×ÀÌºí ¿­°í ´Ý´Â ¹æ¹ý

open Å×À̺íÀÇ Ä³½¬´Â table_cacheÀÇ ÃÖ´ë°ª±îÁö Ä¿Áú ¼ö ÀÖ´Ù. (±âº»°ª 64 ; ÀÌ °ªÀº mysql
d¿¡¼­ -0 table_cache=# À¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù) ij½¬°¡ ²Ë áÀ»¶§, ±×¸®°í ´Ù¸¥ ½º·¹µå°¡ Å×ÀÌ
ºíÀ» ¿­·Á°í ÇÒ ¶§, ¶Ç´Â mysqladmin refresh ³ª mysqladmin flush-tables¸¦ »ç¿ëÇÒ¶§¸¦ Á¦
¿ÜÇÏ°í´Â Å×À̺íÀº °áÄÚ ´ÝÈ÷Áö ¾Ê´Â´Ù.

Å×À̺í ij½¬°¡ ²Ë Â÷¸é ¼­¹ö´Â ij½¬ ¿£Æ®¸®¸¦ »ç¿ëÇϵµ·Ï Á¶ÀýÇϱâ À§ÇØ ´ÙÀ½ÀÇ ÀýÂ÷¸¦ »ç
¿ëÇÑ´Ù.

- °¡Àå ¸ÕÀú »ç¿ëÇß´ø ¼ø¼­´ë·Î ÇöÀç »ç¿ëÇÏÁö ¾Ê´Â Å×À̺íÀ» ´Ý´Â´Ù.
- ij½¬°¡ ²Ë á°í ¾î¶² Å×ÀÌºíµµ ´ÝÈ÷Áö ¾ÊÁö¸¸ »õ·Î¿î Å×À̺íÀ» ¿­¾î¾ß ÇÑ´Ù¸é ij½¬°¡ ÇÊ
¿äÇÑ ¸¸Å­ ÀÓ½ÃÀûÀ¸·Î È®ÀåµÈ´Ù.
- ij½¬°¡ ÀÓ½ÃÀûÀ¸·Î È®ÀåµÈ »óÅÂÀÌ°í Å×À̺íÀ» »ç¿ëÇÒ ¼ö ¾ø´Â »óȲÀ¸·Î °¡¸é Å×À̺íÀ»
´Ý°í ij½¬¸¦ ÇØÁ¦ÇÑ´Ù.

Å×À̺íÀº °¢ µ¿½Ãº´ÇàÀûÀÎ Á¢±Ù¶§¸¶´Ù ¿­¸°´Ù. µ¿ÀÏÇÑ Å×ÀÌºí¿¡ Á¢±ÙÇÏ´Â µÎ°³ÀÇ ½º·¹µå°¡
Àְųª °°Àº ÁúÀÇ¿¡¼­ Å×ÀÌºí¿¡ µÎ¹ø Á¢±ÙÇϸé(with AS) Å×À̺íÀ» µÎ¹ø ¿­¿©¾ß ÇÑ´Ù´Â ÀÇ
¹ÌÀÌ´Ù. Å×À̺íÀÇ Ã¹¹ø° °³¹æÀº µÎ°³ÀÇ ÆÄÀÏ µð½ºÅ©¸³Å͸¦ °¡Áø´Ù. ; Ãß°¡ÀûÀÎ Å×À̺íÀÇ °³
¹æÀº ÇϳªÀÇ ÆÄÀÏ µð½ºÅ©¸³Å͸¦ °¡Áú »ÓÀÌ´Ù. óÀ½¿¡ °³¹æ¿¡ »ç¿ëÇÏ´Â Ãß°¡ÀûÀº ÆÄÀÏ µð½º
Å©¸³ÅÍ´Â À妽º ÆÄÀÏ¿¡ »ç¿ëµÈ´Ù. ; ÀÌ µð½ºÅ©¸³ÅÍ´Â ¸ðµç ½º·¹µå¿¡¼­ °øÀ¯µÈ´Ù.


10.6.1 µ¥ÀÌÅͺ£À̽º¿¡¼­ ¸¹Àº ¼öÀÇ Å×À̺íÀ» ¸¸µé¶§ÀÇ ´ÜÁ¡

µð·ºÅ丮¿¡ ¸¹Àº ÆÄÀÏÀÌ ÀÖ´Ù¸é open, close ±×¸®°í create ¿ÀÆÛ·¹À̼ÇÀº ´À·ÁÁú °ÍÀÌ´Ù. ¼­
·Î ´Ù¸¥ ¸¹Àº Å×ÀÌºí¿¡¼­ SELECT ¹®À» ¼öÇàÇϸé Å×À̺í ij½¬°¡ ²Ë Âû ¶§ ¾à°£ÀÇ overhea
d°¡ ÀÖÀ» °ÍÀÌ´Ù. ¿Ö³Ä¸é °³¹æµÈ Å×À̺íÀÌ ÀÖ´Ù¸é ´Ù¸¥ Å×À̺íÀº ´ÝÇô¾ß Çϱ⠶§¹®ÀÌ´Ù. Å×
À̺í ij½¬¸¦ Å©°Ô Çؼ­ ÀÌ·¯ÇÑ ¿À¿ì¹öÇìµå¸¦ ÁÙÀÏ ¼ö ÀÖ´Ù.


10.7 ¸¹Àº Å×À̺íÀ» ¿©´Â ÀÌÀ¯

mysqladmin status ¸¦ ½ÇÇàÇÒ ¶§ ´ÙÀ½°ú °°ÀÌ ³ª¿Ã °ÍÀÌ´Ù:

Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12

´ÜÁö 6Å×À̺íÀ» »ç¿ëÇߴµ¥ ÀÌ·¯ÇÑ °á°ú´Â ´çȲ½º·¯¿ï °ÍÀÌ´Ù.

mysqlÀº ¸ÖƼ½º·¹µå¸¦ »ç¿ëÇÑ´Ù. ±×·¡¼­ µ¿½Ã¿¡ °°Àº Å×ÀÌºí¿¡¼­ ¸¹Àº ÁúÀǸ¦ ÇÒ ¼ö ÀÖ´Ù.
°°Àº ÆÄÀÏ¿¡ ´ëÇÏ¿© ´Ù¸¥ »óȲÀ» °¡Áö´Â µÎ°³ÀÇ ½º·¹µå¿¡ ´ëÇÑ ¹®Á¦¸¦ ÁÙÀ̱â À§ÇØ Å×À̺í
Àº °¢ µ¿½Ãº´ÇàÀûÀÎ ½º·¹µå¸¶´Ù µ¶¸³ÀûÀ¸·Î °³¹æµÈ´Ù. ÀÌ°ÍÀº Å×ÀÌŸ ÆÄÀÏ¿¡¼­ ¾à°£ÀÇ ¸Þ¸ð
¸®¿Í ÇϳªÀÇ Ãß°¡ÀûÀÎ ÆÄÀÏ µð½ºÅ©¸³Å͸¦ »ç¿ëÇÑ´Ù. ¸ðµç ½º·¹µå¿¡¼­ À妽º ÆÄÀÏÀº °øÀ¯µÈ
´Ù.


10.8 µ¥ÀÌÅͺ£À̽º¿Í Å×ÀÌºí¿¡¼­ ½Éº¼¸¯ ¸µÅ© »ç¿ë

µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¿¡¼­ Å×À̺í°ú µ¥ÀÌÅͺ£À̽º¸¦ ´Ù¸¥ À§Ä¡·Î ¿Å±â°í »õ·Î¿î À§Ä¡·Î ½É
º¼¸¯ ¸µÅ©¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇÏ´Â °ÍÀ» ¿øÇÒ °æ¿ì°¡ ÀÖ´Ù. ¿¹¸¦ µé¸é µ¥ÀÌÅͺ£À̽º
¸¦ ´õ ¿©À¯°ø°£ÀÌ ¸¹Àº ÆÄÀϽýºÅÛÀ¸·Î ¿Å±â´Â °æ¿ì µî.

mysql¿¡¼­ Å×À̺íÀÌ ½Éº¼¸µ ¸µÅ©µÇ¾ú´Ù´Â °ÍÀ» °¨ÁöÇÏ¸é ½Éº¼¸µ ¸µÅ©°¡ °¡¸®Å°´Â Å×À̺íÀ»
´ë½Å »ç¿ëÇÒ ¼ö ÀÖ´Ù. realpath() call À» Áö¿øÇÏ´Â ¸ðµç ½Ã½ºÅÛ¿¡¼­ ÀÛµ¿ÇÑ´Ù. (ÃÖ¼ÒÇÑ ¸®´ª
½º¿Í ¼Ö¶ó¸®½º´Â realpath()¸¦ Áö¿øÇÑ´Ù) realpath()¸¦ Áö¿øÇÏÁö ¾Ê´Â ½Ã½ºÅÛ¿¡¼­ µ¿½Ã¿¡ ½Ç
Á¦ °æ·Î¿Í ½Éº¼¸¯ ¸µÅ©µÈ °æ·Î¿¡ Á¢±ÙÇÏ¸é ¾ÈµÈ´Ù. ÀÌ·± °æ¿ì¿¡´Â ¾÷µ¥ÀÌÆ® µÈÈÄ¿¡ Å×À̺í
ÀÌ ¸ð¼øµÉ ¼ö ÀÖ´Ù.

mysqlÀº ±âº»°ªÀ¸·Î µ¥ÀÌÅͺ£À̽º ¸µÅ©¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. µ¥ÀÌÅͺ£À̽º°£¿¡ ½Éº¼¸¯ ¸µÅ©
¸¦ »ç¿ëÇÏÁö ¾Ê´Â ÀÛµ¿À» Àß ÇÒ °ÍÀÌ´Ù. mysql µ¥ÀÌÅÍ µð·ºÅ丮¿¡ db1 µ¥ÀÌÅͺ£À̽º°¡ ÀÖ
°í db1À» °¡¸®Å°´Â db2 ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé¾ú´Ù°í Çغ¸ÀÚ:

shell> cd /path/to/datadir
shell> ln -s db1 db2

ÀÌÁ¦ db1¿¡ tbl_a¶ó´Â Å×À̺íÀÌ ÀÖ´Ù¸é db2¿¡µµ tbl_a°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù. ÇÑ ½º·¹µå°¡ db1.tbl
_a¸¦ ¾÷µ¥ÀÌÆ®ÇÏ°í ´Ù¸¥ ½º·¹µå°¡ db2.tbl_a¸¦ ¾÷µ¥ÀÌÆ®ÇÏ¸é ¹®Á¦°¡ »ý±æ °ÍÀÌ´Ù.

Á¤¸»·Î ÀÌ ±â´ÉÀÌ ÇÊ¿äÇϸé , `mysys/mf_format.c'¿¡¼­ ´ÙÀ½ÀÇ Äڵ带 ¼öÁ¤ÇØ¾ß ÇÑ´Ù.:

if (!lstat(to,&stat_buff))  /* Check if it's a symbolic link */
  if (S_ISLNK(stat_buff.st_mode) && realpath(to,buff))

À§ Äڵ带 ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù :

if (realpath(to,buff))


10.9 Å×ÀÌºí¿¡ ¶ô °Å´Â ¹æ¹ý

mysqlÀÇ ¸ðµç ¶ôÀº deadlock-free ÀÌ´Ù. ¾ðÁ¦³ª ÁúÀǸ¦ ½ÃÀÛÇÒ¶§ Çѹø¿¡ ¸ðµç ÇÊ¿äÇÑ ¶ôÀ»
¿äûÇÏ°í ¾ðÁ¦³ª °°Àº ¼ø¼­´ë·Î Å×ÀÌºí¿¡ ¶ôÀ» °É¾î °ü¸®ÇÑ´Ù.

WRITE ¶ôÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù:

- Å×ÀÌºí¿¡ ¶ôÀÌ ¾øÀ¸¸é ±× Å×ÀÌºí¿¡ write ¶ôÀ» °Ç´Ù.
- ÀÌ·± °æ¿ì°¡ ¾Æ´Ï¶ó¸é write ¶ô Å¥¿¡ ¶ôÀ» ¿äûÇÑ´Ù.

READ ¶ôÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù:

- Å×ÀÌºí¿¡ write ¶ôÀÌ ¾øÀ¸¸é ±× Å×ÀÌºí¿¡ read ¶ôÀ» °Ç´Ù.
- ÀÌ·± °æ¿ì°¡ ¾Æ´Ï¶ó¸é read ¶ô Å¥¿¡ ¶ôÀ» ¿äûÇÑ´Ù.

¶ôÀÌ ÇØÁ¦µÇ¾úÀ» ¶§ ¶ôÀº write ¶ô Å¥ÀÇ ½º·¹µå¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ±×·¯°í ³ª¼­ read ¶ô
Å¥ÀÇ ½º·¹µå¿¡¼­ »ç¿ëÇÑ´Ù.

Å×ÀÌºí¿¡¼­ ¾÷µ¥ÀÌÆ®¸¦ ¸¹ÀÌ Çϸé SELECT ¹®Àº ´õ ÀÌ»ó ¾÷µ¥ÀÌÆ®°¡ ¾øÀ» ¶§±îÁö ±â´Ù¸°
´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ Å×ÀÌºí¿¡¼­ INSERT ¿Í SELECT ¿ÀÆÛ·¹À̼ÇÀ» ¸¹ÀÌ »ç¿ëÇÏ
´Â °æ¿ì¿¡ ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. Àӽà Å×ÀÌºí¿¡ ·¹Äڵ带 ÀÔ·ÂÇÏ°í Çѹø¿¡ Àӽà Å×ÀÌºí¿¡
¼­ ½ÇÁ¦ Å×À̺í·Î ·¹Äڵ带 ¾÷µ¥ÀÌÆ®ÇÑ´Ù.

´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ:

mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
mysql> insert into real_table select * from insert_table;
mysql> delete from insert_table;
mysql> UNLOCK TABLES;

¸¸¾à ¾î¶² °æ¿ì¿¡ SELECT¹®¿¡ ¿ì¼±±ÇÀ» ÁÖ°í ½Í´Ù¸é INSERT ¿É¼Ç¿¡¼­ LOW_PRIORITY
or HIGH_PRIORITY ¿É¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. 7.13 [Insert] Âü°í. (** LOW_PRIORITY¸¦ Áö
Á¤Çϸé Ŭ¶óÀ̾ðÆ®¿¡¼­ Å×À̺íÀ» ÀÐÁö ¾ÊÀ» ¶§±îÁö INSERT ¹® ¼öÇàÀÌ ¹Ì·ç¾îÁø´Ù. **)

´ÜÀÏ Å¥¸¦ »ç¿ëÇϱâ À§ÇØ `mysys/thr_lock.c' ÀÇ ¶ôÅ· Äڵ带 ¹Ù²Ü ¼ö ÀÖ´Ù. ÀÌ·± °æ¿ì writ
e ¶ô°ú read ¶ôÀº °°Àº ¿ì¼±±ÇÀ» °¡Áö¸ç ¾î¶² ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â À¯¿ëÇÒ ¼ö ÀÖ´Ù.

10.10 Å×À̺íÀ» ºü¸£°í ÀÛ°Ô ¹è¿­ÇÏ´Â ¹æ¹ý <** Å×À̺í ÃÖÀûÈ­ **>

´ÙÀ½Àº Å×ÀÌºí¿¡¼­ ÃÖ´ëÀǼº´ÉÀ» ³»´Â ¹æ¹ý°ú ÀúÀå °ø°£À» Àý¾àÇÒ ¼ö ÀÖ´Â Å×Å©´ÐÀÌ´Ù:

- °¡´ÉÇÑÇÑ NOT NULL·Î Ä÷³À» ¼±¾ðÇÑ´Ù. ¼Óµµ°¡ »¡¶óÁö¸ç °¢ Ä÷³¸¶´Ù 1 ºñÆ®¸¦ Àý¾àÇÒ
¼ö ÀÖ´Ù.
- default °ªÀ» °¡Áú ¶§ À¯¸®ÇÏ´Ù. ÀԷµǴ °ªÀÌ ±âº»°ª°ú ´Ù¸¦ ¶§¸¸ È®½ÇÇÏ°Ô °ªÀÌ ÀԷµÈ
´Ù. INSERT ¹®¿¡¼­ ù¹ø° TIMESTAMP Ä÷³À̳ª AUTO-INCREAMENT Ä÷³ÀÇ °ªÀ»
ÀÔ·ÂÇÒ ÇÊ¿ä°¡ ¾ø´Ù. 18.4.49 [mysql_insert_id()] Âü°í.
- °¡´ÉÇÑÇÑ Å×À̺íÀ» ÀÛ°Ô ¸¸µå·Á¸é ´õ ÀÛÀº integer ŸÀÔÀ» »ç¿ëÇÏÀÚ. ¿¹¸¦ µé¸é MEDIUM
INT °¡ º¸Åë INT º¸´Ù ÁÁ´Ù.
- °¡º¯ ±æÀÌ Ä÷³ÀÌ ¾ø´Ù¸é(VARCHAR, TEXT or BLOB columns), °íÁ¤ ±æÀÌ ·¹ÄÚµå Æ÷
¸ËÀÌ »ç¿ëµÈ´Ù. ÀÌ °æ¿ì ¼Óµµ´Â ´õ ºü¸£Áö¸¸ ºÒÇàÈ÷µµ(ÈæÈæ~) ³¶ºñµÇ´Â °ø°£ÀÌ ´õ ¸¹´Ù. 10.1
4 [Row format] Âü°í.
- mysqlÀÌ ÁúÀǸ¦ È¿°úÀûÀ¸·Î ÃÖÀûÈ­Çϱâ À§ÇØ ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÑÈÄ isamchk --a
nalyze¸¦ ½ÇÇàÇÏÀÚ. ÀÌ·¸°Ô ÇÏ¸é µ¿ÀÏÇÑ °ªÀ» °¡Áø ÁÙÀÇ Æò±Õ ¼ýÀÚ¸¦ °¡¸®Å°´Â °¢ À妽ºÀÇ
°ªÀ» ¾÷µ¥ÀÌÆ®ÇÑ´Ù. (¹°·Ð unique À妽º¿¡¼­´Â Ç×»ó 1ÀÌ´Ù)
- À妽º¿Í À妽º¿¡ µû¸¥ µ¥ÀÌŸ¸¦ Á¤¿­ÇÏ·Á¸é
isamchk --sort-index --sort-records=1 À» »ç¿ëÇÏÀÚ.(if you want to sort on index 1).
À妽º¿¡ µû¶ó Á¤·ÄµÈ ¸ðµç ·¹Äڵ带 Àбâ À§ÇØ unique À妽º¸¦ °¡Á³´Ù¸é ÀÌ·¸°Ô ÇÏ´Â °Í
ÀÌ ¼Óµµ¸¦ ºü¸£°Ô ÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ýÀÌ´Ù.
- INSERT ¹®¿¡¼­ °¡´ÉÇÑ ´ÙÁß °ª ¸ñ·ÏÀ» »ç¿ëÇÏÀÚ. °³º°ÀûÀÎ SELECT ¹®º¸´Ù ÈξÀ ºü¸£
´Ù. µ¥ÀÌŸ¸¦ Å×ÀÌºí¿¡ ÀÔ·ÂÇÒ ¶§ LOAD DATA INFILEÀ» »ç¿ëÇÏÀÚ. ¸¹Àº INSERT ¹®À»
»ç¿ëÇÏ´Â °Íº¸´Ù º¸Åë 20¹è ºü¸£´Ù. 7.15 [Load] Âü°í.

¸¹Àº À妽º¸¦ °¡Áø Å×ÀÌºí¿¡ µ¥ÀÌŸ¸¦ ÀÔ·ÂÇÒ¶§ ´ÙÀ½ÀÇ °úÁ¤À» »ç¿ëÇÏ¸é ¼Óµµ¸¦ Çâ»ó½Ãų
¼ö ÀÖ´Ù.
1. mysqlÀ̳ª Perl ¿¡¼­ CREATE TABLE·Î Å×À̺íÀ» ¸¸µç´Ù.
2. mysqladmin flush-tables ½ÇÇà. (** ¿­¸° Å×À̺íÀ» ¸ðµÎ ´ÝÀ½ **)
3. isamchk --keys-used=0 /path/to/db/tbl_name »ç¿ë. Å×ÀÌºí¿¡¼­ ¸ðµç À妽º »ç¿ëÀ» Á¦
°ÅÇÑ´Ù.
4. LOAD DATA INFILE ¸¦ ÀÌ¿ë Å×ÀÌºí¿¡ µ¥ÀÌŸ¸¦ ÀÔ·Â.
5. pack_isamÀ» °¡Áö°í ÀÖ°í Å×À̺íÀ» ¾ÐÃàÇϱ⠿øÇϸé pack_isamÀ» ½ÇÇà.
6. isamchk -r -q /path/to/db/tbl_name ¸¦ ÀÌ¿ë À妽º¸¦ ´Ù½Ã »ý¼º.
7. mysqladmin flush-tables ½ÇÇà.

- LODA DATA INFILE °ú INSERT ¹®¿¡¼­ ´õ ºü¸¥ ¼Óµµ¸¦ ³»·Á¸é Å° ¹öÆÛ¸¦ Áõ°¡½ÃŲ
´Ù. mysqld³ª safe_mysqld¿¡¼­ -O key_buffer=# ¿É¼ÇÀ» »ç¿ëÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î 16M´Â
dzºÎÇÑ ·¥À» °¡Á³´Ù¸é ÈǸ¢ÇÑ °ªÀÌ´Ù.
- ´Ù¸¥ ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿© µ¥ÀÌŸ¸¦ ÅؽºÆ® ÆÄÀÏ·Î ´ýÇÁÇÒ¶§ SELECT ... INTO OUTFIL
E À» »ç¿ëÇÏÀÚ. 7.15 [LOAD DATA INFILE] Âü°í.
- ¿¬¼ÓÀ¸·Î ´Ù·®ÀÇ insert¿Í update¸¦ ÇÒ ¶§ LOCK TABLEÀ» »ç¿ëÇÏ¿© Å×ÀÌºí¿¡ ¶ôÀ» °É
¸é ¼Óµµ¸¦ Çâ»ó½Ãų ¼ö ÀÖ´Ù. LOAD DATA INFILE ±×¸®°í SELECT ...INTO OUTFILE
´Â ¿øÀÚÀûÀ̱⠶§¹®¿¡ LOCK TABLEÀ» »ç¿ëÇÏ¸é ¾ÈµÈ´Ù. 7.23 [LOCK TABLES/UNLOCK
TABLES] Âü°í.

Å×À̺íÀÌ ¾ó¸¶³ª ´ÜÆíÈ­µÇ¾ú´ÂÁö Á¡°ËÇÏ·Á¸é '.ISM' ÆÄÀÏ¿¡¼­ isamchk -evi ¸¦ ½ÇÇàÇÑ´Ù. 1
3Àå [Maintenance] Âü°í.



10.11 INSERT ¹®¿¡¼­ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ºÎºÐ <** insert ÃÖÀûÈ­ **>

insert ÇÏ´Â ½Ã°£Àº ´ÙÀ½¿Í °°ÀÌ ±¸¼ºµÈ´Ù:

  Connect: (3)
  Sending query to server: (2)
  Parsing query: (2)
  Inserting record: (1 x size of record)
  Inserting indexes: (1 x indexes)
  Close: (1)

(¼ýÀÚ)´Â ºñ·ÊÀûÀÎ ½Ã°£ÀÌ´Ù. ÀÌ°ÍÀº Å×À̺íÀ» °³¹æÇÒ¶§ ÃʱâÀÇ overhead¸¦ °í·ÁÇÏ°í ÀÖÁö
´Â ¾Ê´Ù. (¸Å µ¿½Ãº´ÇàÀûÀ¸·Î ¼öÇàµÇ´Â ÁúÀǸ¶´Ù ¹ß»ý)

The size of the table slows down the insertion of indexes by N log N (B-trees).


Å×À̺íÀÇ Å©±â´Â N log N(B-trees)¿¡ µû¶ó À妽ºÀÇ ÀÔ·ÂÀÌ ´À·ÁÁø´Ù. (**¸»ÀÌ Á» ÀÌ»ó. Å×
À̺íÀÌ Ä¿Áü¿¡ µû¶ó À妽º »ý¼ºµµ ´À·ÁÁø´Ù´Â ¶æÀÌ°ÚÁÕ **)

Å×ÀÌºí¿¡ ¶ôÀ» °É°Å³ª insert ¹®¿¡¼­ ´ÙÁß °ª ¸ñ·ÏÀ» »ç¿ëÇÏ¿© ÀÔ·Â ¼Óµµ¸¦ ºü¸£°Ô ÇÒ ¼ö
ÀÖ´Ù. ´ÙÁß °ª ¸ñ·ÏÀ» »ç¿ëÇÏ¸é ´ÜÀÏ insert º¸´Ù 5¹è Á¤µµ ¼Óµµ°¡ »¡¶óÁø´Ù.

mysql> LOCK TABLES a WRITE;
mysql> INSERT INTO a VALUES (1,23),(2,34),(4,33);
mysql> INSERT INTO a VALUES (8,26),(6,29);
mysql> UNLOCK TABLES;

ÁÖ¿äÇÑ ¼Óµµ Â÷ÀÌ´Â ¸ðµç INSERT ¹®ÀÌ ¿Ï·áµÇ°í ³­ ÈÄ¿¡ Çѹø¿¡ À妽º ¹öÆÛ°¡ ¾²¿©±âÁö
¶§¹®¿¡ »ý±ä´Ù. º¸Åë ¼­·Î ´Ù¸¥ ¿©·¯ INSERT ¹®ÀÌ ÀÖÀ¸¸é ¸¹Àº À妽º ¹öÆÛ Ç÷¯½¬°¡ ÀÖ
À» °ÍÀÌ´Ù. ¸ðµç ÁÙÀ» ´ÜÀÏ ¹®À¸·Î ÀÔ·ÂÇÏ¸é ¶ôÀº ÇÊ¿ä¾ø´Ù.

¶ôÅ·Àº ¶ÇÇÑ ´ÙÁß ¿¬°á Å×½ºÆ®ÀÇ ÃÑ ½Ã°£À» ÁÙÀÏ ¼ö´Â ÀÖ´Ù. ±×·¯³ª ¾î¶² ½º·¹µå¿¡¼­´Â ÃÑ
´ë±â½Ã°£Àº Áõ°¡ÇÒ ¼ö ÀÖ´Ù.(¿Ö³Ä¸é ¶ôÀ» ±â´Ù¸®±â ¶§¹®ÀÌ´Ù)
¿¹¸¦ µé¾îº¸ÀÚ:

thread 1 does 1000 inserts
thread 2, 3, and 4 does 1 insert
thread 5 does 1000 inserts

¶ôÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é 2, ,3 4´Â 1°ú 5 Àü¿¡ ³¡¸¶Ä¥ °ÍÀÌ´Ù. ¶ôÀ» »ç¿ëÇϸé 2,3,4´Â ¾Æ¸¶µµ 1
À̳ª 5 Àü¿¡ ³¡³ªÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¯³ª ÃÑ ½Ã°£Àº 40% »¡¶óÁø´Ù.

INSERT, UPDATE, DELETE ¿ÀÆÛ·¹À̼ÇÀº mysql¿¡¼­ ¸Å¿ì ºü¸£´Ù. ±×·¸±â ¶§¹®¿¡ ÁÙ¿¡¼­
5°³  ÀÌ»óÀÇ insert³ª update¸¦ ÇÒ ¶§ ¶ôÀ» Ãß°¡ÇÏ¸é ´õ ÁÁÀº ¼º´ÉÀ» ¾òÀ» ¼ö ÀÖ´Ù. ÁÙ¿¡ ¸Å
¿ì ¸¹Àº ÀڷḦ ÀÔ·ÂÇÑ´Ù¸é ´Ù¸¥ ½º·¹µå¿¡¼­ Å×ÀÌºí¿¡ Á¢±ÙÇϵµ·Ï Çϱâ À§ÇØ ¶§¶§·Î(°¢ 100
0ÁÙ¸¶´Ù) UNLOCK TABLES¸¦ »ç¿ëÇÏ´Â LOCK TABLES ½ÇÇàÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô Çϸé ÁÁ
Àº ¼º´ÉÀ» ³¾ ¼ö ÀÖ´Ù. (** ¿­½ÉÈ÷ ÀÔ·ÂÀ» ÇÏ°í Áß°£¿¡ ¶ôÀ» Ç®¾ú´Ù°¡ ´Ù½Ã ¶ôÀ» °Å´Â °Í
¹Ýº¹ÇÔ**)

¹°·Ð LOAD DATA INFILE ÀÌ ´õ ºü¸£´Ù.



10.12 DELETE ¹®¿¡¼­ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ºÎºÐ <** DELETE ¹® ÃÖÀûÈ­ **>

·¹Äڵ带 »èÁ¦ÇÏ´Â ½Ã°£Àº Á¤È®È÷ À妽º ¼ýÀÚ¿¡ ºñ·ÊÇÑ´Ù. ·¹Äڵ带 ºü¸£°Ô Áö¿ì±â À§ÇØ
À妽º ij½¬ÀÇ Å©±â¸¦ Áõ°¡½Ãų ¼ö ÀÖ´Ù. ±âº» À妽º ij½¬´Â 1M ÀÌ´Ù; ºü¸£°Ô »èÁ¦Çϱâ À§
ÇØ Áõ°¡µÇ¾î¾ß ÇÑ´Ù.(ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ´Ù¸é 16M·Î ÇÏÀÚ)


10.13 mysql¿¡¼­ ÃÖ´ë ¼Óµµ¸¦ ¾ò´Â ¹æ¹ý

º¥Ä¡¸¶Å·À» ½ÃÀÛÇÏÀÚ! mysql º¥Ä¡¸¶Å© ½ºÀ§Æ®¿¡¼­ ¾î¶² ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. (ÀϹÝ
ÀûÀ¸·Î 'sql-bench' µð·ºÅ丮¿¡ ÀÖÀ½) ±×¸®°í ÀԸ¿¡ ¸Â°Ô ¼öÁ¤ÇÏÀÚ. ÀÌ·¸°Ô ÇÏ¸é ´ç½ÅÀÇ ¹®
Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ÇØ°áÃ¥À» ãÀ» ¼ö ÀÖÀ¸¸ç ´ç½Å¿¡°Ô °¡Àå ºü¸¥ ÇØ°áÃ¥À» Å×½ºÆ®ÇÒ
¼ö ÀÖ´Ù.

- mysqld¸¦ ÀûÀýÇÑ ¿É¼ÇÀ¸·Î ½ÃÀÛÇÏÀÚ. ¸Þ¸ð¸®°¡ ¸¹À»¼ö·Ï ¼Óµµ°¡ ºü¸£´Ù.
10.1 [MySQL parameters] Âü°í.
- SELECT ¹®ÀÇ ¼Óµµ¸¦ ºü¸£°Ô Çϱâ À§ÇØ À妽º¸¦ ¸¸µéÀÚ.
10.4 [MySQL indexes] Âü°í.
- °¡´ÉÇÑ È¿À²ÀûÀ¸·Î Ä÷³ ŸÀÔÀ» ÃÖÀûÈ­ÇÏÀÚ. ¿¹¸¦ µé¸é °¡´ÉÇÑ NOT NULL·Î Ä÷³À» Á¤
ÀÇÇÏÀÚ. 10.10 [Table efficiency] Âü°í.
- --skip-locking ¿É¼ÇÀºSQL ¿äû¿¡¼­ ÆÄÀÏ ¶ôÅ·À» ¾ø¾Ø´Ù. ¼Óµµ°¡ »¡¶óÁöÁö¸¸ ´ÙÀ½ÀÇ °ú
Á¤À» µû¶ó¾ß ÇÑ´Ù:
      ¤· isamchk·Î Å×À̺íÀ» üũÇϰųª ¼ö¸®Çϱâ Àü¿¡ mysqladmin flush-tables ·Î ¸ð
µç Å×À̺íÀ» Ç÷¯½ÃÇØ¾ß ÇÑ´Ù. (isamchk -d tbl_nameÀº ¾ðÁ¦³ª Çã¿ëµÈ´Ù. ¿Ö³ÄÇϸé ÀÌ°Ç ´Ü
¼øÈ÷ Å×À̺íÀÇ Á¤º¸¸¦ º¸¿©Áֱ⠶§¹®ÀÌ´Ù)
      ¤· µ¿½Ã¿¡ ¶á µÎ°³ÀÇ mysql ¼­¹ö°¡ µ¿ÀÏÇÑ Å×À̺íÀ» ¾÷µ¥ÀÌÆ®ÇÏ·Á ÇÑ´Ù¸é µ¿ÀÏÇÑ
µ¥ÀÌÅÍ ÆÄÀÏ¿¡ µÎ°³ÀÇ mysql ¼­¹ö¸¦ ¶ç¿ì¸é ¾ÈµÈ´Ù.

      --skip-locking ¿É¼ÇÀº MIT-pthreads·Î ÄÄÆÄÀÏÇÒ¶§ ±âº»°ªÀÌ´Ù. ¿Ö³Ä¸é ¸ðµç Ç÷§
ÆûÀÇ MIT-pthreads¿¡¼­ flock()°¡ ¿ÏÀüÇÏ°Ô Áö¿øÀÌ µÇÁö ¾Ê±â ¶§¹®ÀÌ´Ù.

- ¾÷µ¥ÀÌÆ®¿¡ ¹®Á¦°¡ ÀÖ´Ù¸é ¾÷µ¥ÀÌÆ®¸¦ ¹Ì·ç°í ³ªÁß¿¡ ÇÏÀÚ. ¸¹Àº ¾÷µ¥ÀÌÆ®¸¦ ÇÏ´Â °ÍÀÌ
Çѹø¿¡ Çϳª¸¦ ¾÷µ¥ÀÌÆ®ÇÏ´Â °Íº¸´Ù ´õ ºü¸£´Ù.
- FreeBSD ½Ã½ºÅÛ¿¡¼­ MIT-pthreads¿¡ ¹®Á¦°¡ ÀÖÀ¸¸é FreeBSD 3.0 ÀÌÈÄ ¹öÀüÀ¸·Î ¾÷µ¥
ÀÌÆ® Çϴ°ÍÀÌ ÁÁ´Ù. ÀÌ·¸°Ô Çϸé À¯´Ð½º ¼ÒÄÏÀ» »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇϸç(FreBSD¿¡¼­ À¯´Ð
½º ¼ÒÄÏÀÌ MIT-pthreads¿¡¼­ TCP/IP ¿¬°áÀ» »ç¿ëÇÏ´Â °Íº¸´Ù ºü¸£´Ù) ±×¸®°í ½º·¹µå ÆÐÅ°
Áö°¡ Á¶Á¤(intergrated?)µÇ¾î¾ß ÇÑ´Ù.
- Å×À̺íÀ̳ª Ä÷³ ´Ü°è¸¦ üũÇÏ´Â GRANT´Â ¼º´ÉÀ» ¶³¾î¶ß¸°´Ù.


10.14 ·Î¿ì Æ÷¸Ë°ú ´Ù¸¥ Á¡Àº ¹«¾ùÀΰ¡? ¾ðÁ¦ VARCHAR/CHARÀ» »ç¿ëÇØ¾ß Çϴ°¡?

mysqlÀº ½ÇÁ¦ÀÇ SQL VARCHAR ŸÀÔÀÌ ¾ø´Ù. ±×´ë½Å mysqlÀº ·¹Äڵ带 ÀúÀåÇÏ°í ÀÌ°ÍÀ»
VARCHAR·Î ¿¡¹Ä·¹ÀÌÆ®Çϴµ¥ ¼¼°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.

Å×ÀÌºí¿¡ VARCHAR, BLOB, TEXT Ä÷³ÀÌ ¾øÀ¸¸é °íÁ¤ row size¸¦ »ç¿ëÇÑ´Ù. ±×¿Ü¿¡´Â
µ¿Àû row size¸¦ »ç¿ëÇÑ´Ù. CHAR °ú VARCHAR Ä÷³Àº ¾ÖÇø®ÄÉÀ̼ÇÀÇ °üÁ¡¿¡¼­ µ¿ÀÏÇÏ
°Ô Ãë±ÞµÈ´Ù; µÑ´Ù trailing space´Â Ä÷³À» °¡Á®¿Ã¶§ Á¦°ÅµÈ´Ù.

isamchk -d ¸¦ ÀÌ¿ë Å×ÀÌºí¿¡¼­ »ç¿ëÇÏ´Â Æ÷¸ËÀ» üũÇÒ ¼ö ÀÖ´Ù.
(-d ´Â "Å×ÀÌºí ¹¦»ç"¸¦ ÀǹÌ)

mysqlÀº ¼¼°¡Áö ´Ù¸¥ Å×À̺í Æ÷¸ËÀ» °¡Áö°í ÀÖ´Ù; °íÁ¤±æÀÌ, ´ÙÀ̳ª¹Í, ¾ÐÃà.


°íÁ¤ ±æÀÌ Å×À̺í
- ±âº» Æ÷¸Ë. Å×ÀÌºí¿¡ VARCHAR, BLOB, TEXT Ä÷³ÀÌ ¾øÀ» ¶§ »ç¿ë.
- ¸ðµç CHAR, NUMERIC, DECIMAL Ä÷³Àº Ä÷³ ±æÀÌ¿¡ space-padded ÀÌ´Ù. (** space-
padded¸¦ ¹«¾ùÀ̶ó°í ¹ø¿ªÇØ¾ß ÇÒÁö ¾Ö¸Å¸ðÈ£Çؼ­ **)
- ¸Å¿ì ºü¸§
- ij½¬Çϱ⠽±´Ù
- ¼Õ»ó ÈÄ º¹±¸°¡ ½±´Ù. ¿Ö³Ä¸é °íÁ¤µÈ À§ÀÌ¿¡ ·¹Äڵ尡 À§Ä¡Çϱ⠶§¹®ÀÌ´Ù.
- ¸¹Àº ¾çÀÇ ·¹Äڵ尡 Áö¿öÁ³°Å³ª ¿î¿µ ½Ã½ºÅÛ¿¡¼­ ÀÚÀ¯ °ø°£À» ´Ã¸®±æ ¿øÄ¡ ¾Ê´Â´Ù¸é (isa
mchk¸¦ ÀÌ¿ë) ÀçÁ¶Á÷È­ÇÒ ÇÊ¿ä¾ø´Ù.
- º¸Åë ´ÙÀ̳ª¹Í Å×ÀÌºíº¸´Ù ¸¹Àº µð½ºÅ© °ø°£À» ÇÊ¿ä·Î ÇÑ´Ù.


´ÙÀ̳ª¹Í Å×À̺í
- Å×À̺íÀÌ VARCHAR, BLOB, TEXT Ä÷³À» Æ÷ÇÔÇÏ°í ÀÖÀ» ¶§ »ç¿ë.
- ¸ðµç ¹®ÀÚ¿­ Ä÷³Àº ´ÙÀ̳ª¹ÍÇÏ´Ù.(4º¸´Ù ÀÛÀº ±æÀ̸¦ °¡Áø ¹®ÀÚ¿­ Á¦¿Ü)
- Ä÷³ÀÌ ¹®ÀÚ¿­ Ä÷³¿¡¼­ ºñ¾ú°Å³ª ('') ¼ýÀÚÇü Ä÷³¿¡¼­ 0(NULL °ªÀ» °¡Áø Ä÷³°ú µ¿ÀÏ
ÇÑ °ÍÀÌ ¾Æ´Ï´Ù) À» ³ªÅ¸³»´Â ºñÆ®¸ÊÀÌ ¸ðµç ·¹ÄÚµå ¾Õ¿¡ ¼±ÇàµÈ´Ù. ¹®ÀÚ¿­ Ä÷³¿¡¼­ trailin
g space¸¦ Á¦°ÅÇÑ ÈÄ zeroÀÇ ±æÀ̸¦ °¡Áö°Å³ª ¼ýÀÚÇü Ä÷³ÀÌ zeroÀÇ °ªÀ» °¡Áö¸é ºñÆ® ¸ÊÀ¸
·Î Ç¥½ÃµÇ°í µð½ºÅ©¿¡ ÀúÀåµÇÁö ¾Ê´Â´Ù. ºñÁö ¾ÊÀº ¹®ÀÚ´Â ¹®ÀÚ³»¿ë¿¡ ±æÀÌ ¹ÙÀÌÆ®¸¸Å­ Ãß
°¡µÇ¾î ÀúÀåµÈ´Ù.
- º¸Åë °íÁ¤ ±æÀÌ Å×ÀÌºíº¸´Ù µð½ºÅ© °ø°£ Àý¾à.
- ÁÙÀÇ ±æÀ̸¦ È®ÀåÇÏ´Â Á¤º¸¸¦ °¡Áö°í ÁÙÀ» ¾÷µ¥ÀÌÆ®Çϸé ÁÙÀº ´ÜÆíÈ­µÉ °ÍÀÌ´Ù. ÀÌ·± °æ
¿ì ´õ ÁÁÀº ¼º´ÉÀ» À§ÇØ ¶§¶§·Î isamchk -r À» ½ÇÇàÇØ¾ß ÇÑ´Ù. Åë°èÀûÀ¸·Î(?) isamchk -ei
tbl_nameÀ» »ç¿ëÇÏÀÚ.
- ¼Õ»óÈÄ º¹±¸°¡ ¾î·Æ´Ù. ¿Ö³Ä¸é ·¹Äڵ尡 ¸¹Àº Á¶°¢µå·Î ´ÜÆíÈ­µÇ°í ¸µÅ©(´ÜÆí)°¡ ¾ø¾îÁö
±â ¶§¹®ÀÌ´Ù.
- ´ÙÀ̳ª¹Í »çÀÌÁî Å×À̺íÀÇ ¿¹»óµÇ´Â ¿­ ±æÀÌ :
  3
  + (number of columns + 7) / 8
  + (number of char columns)
  + packed size of numeric columns
  + length of strings
  + (number of NULL columns + 7) / 8

°¢ ¸µÅ©¸¶´Ù 6 ¹ÙÀÌÆ®°¡ ´õ ÀÖ´Ù. ´ÙÀ̳ª¹Í ·¹ÄÚµå´Â ¾÷µ¥ÀÌÆ®·Î ·¹Äڵ尡 ´Ã¾î³¯¶§¸¶´Ù ¸µ
Å©µÈ´Ù. °¢ »õ·Î¿î ¸µÅ©´Â ÃÖ¼Ò 20¹ÙÀÌÆ®ÀÏ °ÍÀ̸ç, ±×·¡¼­ ´ÙÀ½ÀÇ È®ÀåÀº ¾Æ¸¶µµ µ¿ÀÏÇÑ ¸µ
Å©·Î µÉ °ÍÀÌ´Ù. ±×°Ô ¾Æ´Ï¶ó¸é ´Ù¸¥ ¸µÅ©°¡ ÀÖÀ» °ÍÀÌ´Ù. isamchk -ed ·Î ¾ó¸¶³ª ¸¹Àº ¸µ
Å©°¡ ÀÖ´ÂÁö üũÇÒ ¼ö ÀÖ´Ù. ¸ðµç ¸µÅ©´Â isamchk -r ·Î Á¦°ÅÇÒ ¼ö ÀÖ´Ù.(** ?? **)

There is a penalty of 6 bytes for each link. A dynamic record is linked whenever an up
date causes an enlargement of the record. Each new link will be at least 20 bytes, so th
e next enlargement will probably go in the same link. If not, there will be another link.
You may check how many links there are with isamchk -ed. All links may be removed
with isamchk -r.


¾ÐÃà Å×À̺í

- Àбâ Àü¿ë Å×À̺íÀº pack_isam À¯Æ¿¸®Æ¼·Î ¸¸µé ¼ö ÀÖ´Ù. È®Àå mysql À̸ÞÀÏ Áö¿øÀ» ±¸
ÀÔÇÑ ¸ðµç °í°´Àº ³»ºÎÀûÀÎ ¿ëµµ·Î pack_isamÀ» »ç¿ëÇÒ ±Ç¸®°¡ ÁÖ¾îÁø´Ù.
- ¾ÐÃàÇØÁ¦ ÄÚµå´Â ¸ðµç mysql ¹èÆ÷ÆÇ¿¡ ÀÖÀ¸¹Ç·Î pack_isamÀÌ ¾ø´Â °í°´µµ pack_isamÀ¸
·Î ¾ÐÃàµÈ Å×À̺íÀ» ÀÐÀ» ¼ö ÀÖ´Ù. (Å×À̺íÀÌ °°Àº Ç÷§Æû¿¡¼­ ¾ÐÃàµÇ¾î ÀÖ´ÂÇÑ)
- ¸Å¿ì ÀûÀº µð½ºÅ© ¿ë·®À» »ç¿ë.
- °¢ ·¹ÄÚµå´Â °³º°ÀûÀ¸·Î ¾ÐÃàÀÌ µÈ´Ù.( ¸Å¿ì ÀûÀº ¾×¼¼½º overhead) ·¹ÄÚµåÀÇ Çì´õ´Â Å×
À̺íÀÇ °¡Àå Å« ·¹Äڵ忡 µû¶ó (1-3 ¹ÙÀÌÆ®) °íÁ¤µÈ´Ù. °¢ Ä÷³Àº ´Ù¸£°Ô ¾ÐÃàÀÌ µÈ´Ù. ¾ÐÃà
ŸÀÔÀº ´ÙÀ½°ú °°´Ù:

      ¤· ÀϹÝÀûÀ¸·Î °¢ Ä÷³¸¶´Ù ´Ù¸¥ Huffman Å×À̺íÀÌ´Ù.
      ¤· Suffic °ø°£ ¾ÐÃà
      ¤· Prefix °ø°£ ¾ÐÃà
      ¤· 0 °ªÀ» °¡Áø ¼ýÀÚ´Â 1ºñÆ®·Î ÀúÀå.
      ¤· integer Ä÷³ÀÇ °ªÀÌ ÀÛÀº ¹üÀ§¸¦ °¡Á³´Ù¸é, Ä÷³Àº ÃÖ´ëÇÑ ÀÛÀº ŸÀÔÀ¸·Î ÀúÀå
µÈ´Ù. ¿¹¸¦ µé¸é BIGINT Ä÷³Àº ¸ðµç °ªÀÌ 0ºÎÅÍ 255¶ó¸é TINIINT Ä÷³(1¹ÙÀÌÆ®)·Î ÀúÀå
µÈ´Ù.
      ¤· Ä÷³ÀÌ ¸î°¡Áö °¡´ÉÇÑ °ªÀ¸·Î¸¸ ±¸¼ºµÇ¾î ÀÖ´Ù¸é, Ä÷³ ŸÀÔÀº ENUMÀ¸·Î º¯È¯
µÈ´Ù.
      ¤· Ä÷³Àº À§ ¾ÐÃà ¹æ¹ýÀ» Á¶ÇÕÇÏ¿© »ç¿ëÇÑ´Ù.
- °íÁ¤ ±æÀ̳ª ´ÙÀ̳ª¹Í ±æÀÌÀÇ Å×À̺íÀ» ´Ù·ê ¼ö ÀÖ´Ù. ±×·¯³ª BLOB³ª TEXT Ä÷³Àº ´Ù
·ê ¼ö ¾ø´Ù.
- isamchk·Î ¾ÐÃàÀ» ÇØÀçÇÒ ¼ö ÀÖ´Ù.

mysqlÀº ´Ù¸¥ À妽º ŸÀÔÀ» Áö¿øÇÑ´Ù. ±×·¯³ª ÀϹÝÀûÀΠŸÀÔÀº NISAMÀÌ´Ù. ÀÌ°ÍÀº B-tre
e À妽ºÀÌ¸ç ¸ðµç Å°ÀÇ °©À» ÇÕÇÏ¿© (Å° ±æÀÌ+4)*0.67·Î À妽º ÆÄÀÏÀÇ Å©±â¸¦ ´ë°­ °è»ê
ÇÒ ¼ö ÀÖ´Ù. (ÀÌ°ÍÀº ¸ðµç Å°°¡ Á¤·ÄµÈ ¼ø¼­·Î ÀÔ·ÂµÈ °¡Àå ³ª»Û °æ¿ìÀÌ´Ù)


String indexes are space compressed. If the first index part is a string, it will also be p
refix compressed. Space compression makes the index file smaller if the string column h
as a lot of trailing space or is a VARCHAR column that is not always used to the full
length. Prefix compression helps if there are many strings with an identical prefix.

¹®ÀÚ¿­ À妽º´Â °ø°£ÀÌ ¾ÐÃàµÈ´Ù. ù¹ø° À妽º ºÎºÐÀÌ ¹®ÀÚ¿­À̶ó¸é, prefix°¡ ¾ÐÃàµÈ´Ù.
¹®ÀÚ¿­ Ä÷³ÀÌ ´Ù·®ÀÇ trailing space¸¦ °¡Á³°Å³ª ¾ðÁ¦³ª ¿ÏÀüÇÑ ±æÀ̸¦ »ç¿ëÇÏÁö ¾Ê´Â VA
RCHAR Ä÷³ÀÏ ¶§ space ¾ÐÃàÀº À妽º ÆÄÀÏÀ» ´õ ÀÛ°Ô ¸¸µç´Ù. prefix ¾ÐÃàÀº ¸¹Àº ¹®ÀÚ
¿­¿¡ µ¿ÀÏÇÑ prefix°¡ ÀÖÀ» ¶§ À¯¿ëÇÏ´Ù.
{{
}}11. mysql º¥Ä¡¸¶Å© ½ºÀ§Æ®

¿©±â¿¡´Â mysql º¥Ä¡¸¶Å© ½ºÀ§Æ®(±×¸®°í crash-me)¿¡ ´ëÇÑ ±â¼úÀûÀÎ ¼³¸íÀÌ µé¾î°¡¾ß ÇÑ´Ù. ±×·¸
Áö¸¸ ¾ÆÁ÷ ÀÛ¼ºÀÌ µÇÁö ¾Ê¾Ò´Ù. ÇöÀç·Î¼­´Â ¹èÆ÷ÆÇÀÇ 'bench' µð·ºÅ丮¿¡¼­ ÄÚµå¿Í °á°ú¸¦ »ìÆ캸
¾Æ¾ß ÇÑ´Ù.(¶ÇÇÑ ´ÙÀ½ÀÇ À¥ÆäÀÌÁö¿¡¼­ »ìÆ캼 ¼ö ÀÖ´Ù.
{{{{http://www.mysql.com/crash-me-choose.htmy)
}}
}}

ÀÌ°ÍÀº »ç¿ëÀÚ¿¡°Ô  ÁÖ¾îÁø SQL ¼öÇàÀÌ Á¦´ë·Î ¼öÇàµÇ´ÂÁö ¾Æ´ÑÁö¸¦ ¾Ë·ÁÁÖ´Â º¥Ä¡¸¶Å©ÀÌ´Ù.

crash-me ´Â ½ÇÁ¦·Î ÁúÀǸ¦ ¼öÇàÇÏ¿© µ¥ÀÌÅͺ£À̽º¿¡¼­ Áö¿øÇÏ´Â ±â´É°ú ´É·Â, Á¦ÇÑ»çÇ× µîÀ» Ãø
Á¤ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ÀÇ »çÇ×À» ÃøÁ¤ÇÑ´Ù:

      ¤· Áö¿øÇÏ´Â Ä÷³ ŸÀÔ
      ¤· Áö¿øÇÏ´Â À妽º ¼ýÀÚ
      ¤· Áö¿øÇÏ´Â Æã¼Ç
      ¤· ÁúÀÇÀÇ ÃÖ´ë Å©±â
      ¤· VARCHAR Ä÷³ÀÇ ÃÖ´ë Å©±â
¹ø¿ªÀÚ : ¹®ÅÂÁØ(taejun@hitel.net)

12. mysql À¯Æ¿¸®Æ¼

12.1 ´Ù¾çÇÑ mysql ÇÁ·Î±×·¥ °³¿ä

mysql client ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¿© ¼­¹ö¿Í Åë½ÅÀ» ÇÏ´Â ¸ðµç mysql Ŭ¶óÀ̾ðÆ®´Â ´ÙÀ½ÀÇ
ȯ°æ º¯¼ö¸¦ »ç¿ëÇÑ´Ù:

Name                    Description
MYSQL_UNIX_PORT         ±âº» ¼ÒÄÏ; ·ÎÄÃÈ£½ºÆ®¿¡¼­ Á¢¼ÓÇÒ¶§ »ç¿ë
MYSQL_TCP_PORT          ±âº» TCP/ip port
MYSQL_PWD               ±âº» Æнº¿öµå
MYSQL_DEBUG             µð¹ö±ëÇÒ¶§ Debug-trace ¿É¼Ç
TMPDIR                  Àӽà Å×À̺í/ÆÄÀÏÀÌ »ý¼ºµÇ´Â µð·ºÅ丮

MYSQL_PWD ¸¦ »ç¿ëÇÏ´Â °ÍÀº º¸¾È¿¡ Ãë¾àÇÏ´Ù. 6.2 [Connecting] Âü°í.

'mysql' Ŭ¶óÀ̾ðÆ®´Â ¸í·ÉÇà ¶óÀÎ È÷½ºÅ丮¿¡ ȯ°æ º¯¼ö¸¦ ÀúÀåÇϱâ À§ÇØ MYSQL_HISTF
ILE À̶ó´Â ÆÄÀÏÀ» »ç¿ëÇÑ´Ù.

¸ðµç MYSQL ÇÁ·Î±×·¥Àº ¸Å¿ì ´Ù¾çÇÑ ¿É¼ÇÀÌ ÀÖ´Ù. ±×·¯³ª ¸ðµç MYSQL ÇÁ·Î±×·¥¿¡¼­ --
help ¿É¼ÇÀ» Á¦°øÇÑ´Ù. --help ¿É¼ÇÀ» ÀÌ¿ëÇØ ÇÁ·Î±×·¥ÀÇ ´Ù¾çÇÑ ¿É¼Ç¿¡ ´ëÇÑ ¸ðµç Á¤º¸¸¦
º¼ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, mysql --help ¸¦ Çغ¸ÀÚ.

¾Æ·¡ÀÇ ¸ñ·ÏÀº mysql ÇÁ·Î±×·¥¿¡ ´ëÇؼ­ ¼³¸íÇÏ°í ÀÖ´Ù:

isamchk : mysql Å×À̺í Á¤º¸ º¸±â, Á¡°Ë, ÃÖÀûÈ­, º¹±¸ À¯Æ¿¸®Æ¼. ¸¹Àº ±â´ÉÀÌ Àֱ⠶§¹®¿¡
º°µµÀÇ Àå¿¡¼­ ÀÚ¼¼È÷ ¼³¸íÇÏ°í ÀÖ´Ù. 13Àå Âü°í.

make_binary_release : ÄÄÆÄÀÏµÈ mysql ¹ÙÀ̳ʸ® ¹öÀüÀ» ¸¸µç´Ù. ´Ù¸¥ myql »ç¿ëÀÚÀÇ ÆíÀÇ
¸¦ À§ÇØ ftp.tcx.eÀÇ '/pub/mysql/Incoming' ¿¡ ¿Ã¸®ÀÚ.

msql2mysql : msql ÇÁ·Î±×·¥À» mysql·Î º¯È¯ÇÏ´Â ½© ½ºÅ©¸³Æ®. ¸ðµç °æ¿ì¸¦ ´Ù·ê ¼ö´Â ¾ø
Áö¸¸ º¯È¯ÇÒ¶§ À¯¿ëÇÒ °ÍÀÌ´Ù.

mysql : °£´ÜÇÑ SQL ½©. (GNU readline ȣȯ¼ºÀÖÀ½) »óÈ£´ëÈ­½Ä ¹× ºñ´ëÈ­½ÄÀ¸·Î »ç¿ëÇÒ
¼ö ÀÖ´Ù. ´ëÈ­½ÄÀ¸·Î »ç¿ëÇÏ´Â °æ¿ì, ÁúÀÇ °á°ú´Â ¾Æ½ºÅ°-Å×À̺í Æ÷¸ËÀ¸·Î Ãâ·ÂµÈ´Ù. ºñ´ëÈ­
½ÄÀ¸·Î »ç¿ëÇÒ °æ¿ì, °á°ú´Â ÅÜÀ¸·Î ºÐ¸®µÈ Æ÷¸ËÀ¸·Î Ãâ·ÂµÈ´Ù. (Ãâ·Â Æ÷¸ËÀº ¸í·ÉÇà ¶óÀÎ
¿É¼ÇÀ» ÀÌ¿ëÇØ ¹Ù²Ü ¼ö ÀÖ´Ù) ´ÙÀ½°ú °°ÀÌ ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù:

shell> mysql database < script.sql > output.tab

Ŭ¶óÀ̾ðÆ®¿¡¼­ ¸Þ¸ð¸®°¡ ºÎÁ·Çؼ­ ¹®Á¦°¡ »ý±â¸é --quick ¿É¼ÇÀ» »ç¿ëÇÏÀÚ. ±×·¯¸é ÁúÀÇ
°á°ú¸¦ °¡Á®¿À±â À§ÇØ mysql_store_result() ´ë½Å mysql_use_result()¸¦ »ç¿ëÇÑ´Ù.

mysqlaccess : host, user, database Á¶ÇÕÀÇ Á¢±Ù ±ÇÇÑ Á¡°Ë ½ºÅ©¸³Æ®.

mysqladmin : µ¥ÀÌÅͺ£À̽º »ý¼º ¹× »èÁ¦, ½ÂÀÎ Å×À̺í Àç·Îµù, µð½ºÅ©¿¡ Å×À̺í Ç÷¯½Ì, ·Î
±× ÆÄÀÏ Àç¿ÀÇ µîÀ» ¼öÇàÇÏ´Â °ü¸®ÀÚ¿ë À¯Æ¿¸®Æ¼. mysqladminÀº ¶ÇÇÑ ¼­¹ö¿¡¼­ ¹öÀü, ÇÁ·Î
¼¼½º, »óÅÂ(status) Á¤º¸¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù.

mysqlbug : mysql ¹ö±× ·¹Æ÷Æ® ½ºÅ©¸³Æ®. mysqlÀÇ ¹ö±×¸¦ ¾Ë¸± ¶§ »ç¿ëÇÏ´Â ½ºÅ©¸³Æ®.

mysqld : SQL ´ë¸ó. Ç×»ó ½ÇÇàµÇ°í ÀÖ¾î¾ß ÇÑ´Ù.

mysqldump : mysql µ¥ÀÌÅͺ£À̽º¸¦ SQL¹® ÇüÅÂÀÇ ÆÄÀÏÀ̳ª ÅÇÀ¸·Î ±¸ºÐµÈ Åؽººú ÆÄÀÏ·Î
´ýÇÁÇÏ´Â À¯Æ¿¸®Æ¼.

mysqlimport : LOAD DATA INFILEÀ» »ç¿ëÇØ ÅؽºÆ® ÆÄÀÏÀÇ ÀڷḦ Å×ÀÌºí¿¡ ÀÔ·ÂÇÏ´Â
À¯Æ¿¸®Æ¼. 12.2 Âü°í.

mysqlshow : µ¥ÀÌÅͺ£À̽º, Å×À̺í, Ä÷³°ú À妽º¿¡ ´ëÇÑ Á¤º¸ Ãâ·Â

mysql_install_db : ±âº» ±ÇÇÑÀ¸·Î MYSQL ½ÂÀÎ Å×ÀÌºí »ý¼º. óÀ½ ¼³Ä¡ÇßÀ»¶§¸¸ ¼öÇàµÈ´Ù.

replace : msql2mysql¿¡¼­ »ç¿ëµÇ´Â À¯Æ¿¸®Æ¼ÀÌ´Ù. ±×·¸Áö¸¸ ´Ù¾çÇÏ°Ô Àû¿ëÇÒ ¼ö ÀÖ´Ù. ÆÄÀÏ
À̳ª Ç¥ÁØ ÀÔ·ÂÀÇ ¹®ÀÚ¿­À» ±³Ã¼ÇÒ ¼ö ÀÖ´Ù. ¸ÕÀú ±ä ¹®ÀÚ¿­À» ¸ÅĪÇϱâ À§ÇØ Á¦ÇÑµÈ »óȲ
ÀÇ ½Ã½ºÅÛ¿¡¼­ »ç¿ëÇÏÀÚ(** ??) ¹®ÀÚ¿­À» ±³Ã¼Çϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ÀÇ ¸í
·É¾î´Â ÆÄÀÏ¿¡¼­ a¿Í b¸¦ ±³Ã¼ÇÑ´Ù:

shell> replace a b b a -- file1 file2 ...

safe_mysqld : mysqld ´ë¸óÀ» ½ÃÀÛÇÏ´Â ½ºÅ©¸³Æ®. ¿¡·¯°¡ ³µÀ»¶§ ¼­¹ö¸¦ Àç½ÃÀÛÇÏ°í ·Î±×
ÆÄÀÏ¿¡ ½ÇÇà Á¤º¸¸¦ ±â·ÏÇÏ´Â µî ¸î°¡Áö ¾ÈÁ¤ ´ëÃ¥ÀÌ ÀÖ´Ù.



12. 2 ÅؽºÆ® ÆÄÀÏ¿¡¼­ µ¥ÀÌÅÍ ÀÔ·Â(¼öÀÔ?)Çϱâ

mysqlimport ´Â ¸í·ÉÇà ÀÎÅÍÆäÀ̽º¿¡¼­ LOAD DATA INFILE sql ¹®À» Á¦°øÇÑ´Ù. ´ëºÎºÐ
ÀÇ ¿É¼ÇÀº LOAD DATA INFILE °ú µ¿ÀÏÇÏ´Ù. 7.15 [Load] Âü°í.
´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù:

shell> mysqlimport [options] filename ...

¸í·ÉÇà¿¡¼­ ÁöÁ¤ÇÑ ÅؽºÆ® ÆÄÀÏ¿¡ ´ëÇÏ¿©, mysqlimport´Â ÆÄÀÏÀ̸§¿¡¼­ È®ÀåÀÚ¸¦ Á¦°ÅÇÑ´Ù.
±×¸®°í ÆÄÀÏÀÇ ³»¿ëÀ» ¾î¶² Å×ÀÌºí¿¡ ³ÖÀ» °ÍÀÎÁö °áÁ¤Çϴµ¥ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î vkdlfdlf
madl 'patient.txt', 'patient.text', 'patient'´Â ¸ðµÎ patient¶ó´Â Å×À̺í À̸§À¸·Î ÀÔ·ÂµÉ °ÍÀÌ
´Ù.

mysqlimport ´Â ´ÙÀ½ÀÇ ¿É¼ÇÀ» Áö¿øÇÑ´Ù:

-C, --compress : ¼­¹ö, Ŭ¶óÀ̾ðÆ®¿¡¼­ ¾ÐÃàÀ» Áö¿øÇÏ¸é ¼­¹ö/Ŭ¶óÀ̾ðÆ® »çÀÌ¿¡¼­ ¸ðµç
Á¤º¸¸¦ ¾ÐÃàÇÑ´Ù

-#, --debug[=option_string] : ÇÁ·Î±×·¥ »ç¿ë ÃßÀû(µð¹ö±ë¿ë)

-d, --delete : ÅؽºÆ® ÆÄÀÏ¿¡¼­ ÀÔ·ÂÇϱâ Àü¿¡ Å×À̺íÀ» ºñ¿ò

--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
      : LODA DATA INFILE ¿¡¼­ÀÇ ¿É¼Ç°ú µ¿ÀÏÇÑ ±â´ÉÀ» °®´Â ¿É¼Ç

-f, --force : ¿¡·¯ »ý·«.ÅؽºÆ® ÆÄÀÏÀ» À§ÇÑ Å×À̺íÀÌ ¾øÀ¸¸é, ´Ù¸¥ ³²¾ÆÀÖ´Â ÆÄÀÏÀ» °è¼Ó
ó¸®(if a table for a text file doesn't exist, continue processing any remaining files) ÀÌ
¿É¼ÇÀÌ ¾ø´Â °æ¿ì, Å×À̺íÀÌ ¾øÀ¸¸é ºüÁ®³ª¿Â´Ù

--help : µµ¿ò¸» Ãâ·Â

-h host_name, --host=host_name : ÁöÁ¤ÇÑ È£½ºÆ®ÀÇ mysql ¼­¹ö¿¡ µ¥ÀÌŸ ÀÔ·Â. ±âº»°ªÀº
localhost

-i, --ignore : --replace ¿É¼ÇÀÇ Á¤º¸ Âü°í.

-l, --lock-tables : ÅؽºÆ® ÆÄÀϷΠó¸®Çϱâ Àü¿¡ ¸ðµç Å×ÀÌºí¿¡ ¾²±â ¶ôÀ» °Ç´Ù. ±×·¯¸é ¼­
¹ö¿¡¼­ ¸ðµç Å×À̺íÀÌ µ¿±âÈ­µÉ ¼ö ÀÖ´Ù.

-L, --local : Ŭ¶óÀ̾ðÆ®¿¡¼­ ÀÔ·Â ÆÄÀÏ ÀÐÀ½. ±âº»ÀûÀ¸·Î, localhost¿¡¼­ Á¢¼ÓÇϸé ÅؽºÆ®
ÆÄÀÏÀº ¼­¹ö¿¡ ÀÖ´Ù°í °¡Á¤µÈ´Ù.

-pyour_pass, --password[=your_pass] : ¼­¹ö¿¡ ¿¬°áÇÒ ¶§ »ç¿ëÇÏ´Â ºñ¹Ð¹øÈ£. '=your_pass
'¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é Å͹̳ο¡¼­ ºñ¹Ð¹øÈ£¸¦ ¹°¾îº½

-P port_num, --port=port_num : È£½ºÆ®¿¡ ¿¬°áÇÒ ¶§ »ç¿ëÇÏ´Â TCP/IP ¼ýÀÚ. (localhost°¡
¾Æ´Ñ È£½ºÆ®¿¡¼­ Á¢¼ÓÇÒ ¶§ »ç¿ë. ¿¹¸¦ µé¾î À¯´Ð½º ¼ÒÄÏÀ» »ç¿ëÇÏ´Â °æ¿ì)

-r, --replace : --replace ¿Í --ignore ¿É¼ÇÀº unique key °ªÀÇ ·¹Äڵ尡 Áߺ¹µÇ¾î ÀÖÀ» °æ
¿ì¿¡ »ç¿ëµÈ´Ù. --replcae ¸¦ ¸í½ÃÇÒ °æ¿ì, µ¿ÀÏÇÑ unique key °ªÀ» °¡Áö°í ÀÖ´Â ·¹Äڵ带
´ëüÇÑ´Ù. --ignore ¸¦ ¸í½ÃÇÒ °æ¿ì, unique key °ªÀÌ µ¿ÀÏÇÑ ·¹ÄÚµå´Â »ý·«µÈ´Ù. µÎ ¿É¼Ç
¸ðµÎ ¸í½ÃÇÏÁö ¾Ê´Â´Ù¸é, Áߺ¹µÇ´Â Å° °©ÀÌ ¹ß°ßµÇ¸é ¿¡·¯¸¦ Ãâ·ÂÇÏ°í ÅؽºÆ® ÆÄÀÏÀÇ ³ª¸Ó
Áö ºÎºÐÀº »ý·«ÀÌ µÈ´Ù.

-s, --silent : ħ¹¬ ¸ðµå. ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§¸¸ Ãâ·Â.

-S /path/to/socket, --socket=/path/to/socket : ·ÎÄÃÈ£½ºÆ®(±âº» È£½ºÆ®°ª)¿¡¼­ Á¢¼ÓÇÒ ¶§
»ç¿ëÇÏ´Â ¼ÒÄÏ ÆÄÀÏ.

-u user_name, --user=user_name : ¼­¹ö¿¡ ¿¬°áÇÒ ¶§ »ç¿ëÇÏ´Â mysql »ç¿ëÀÚ À̸§. ±âº»°ª
Àº À¯´Ð½º ·Î±×ÀÎ À̸§.

-v, --verbose : Verbose ¸ðµå. ÇÁ·Î±×·¥ÀÇ ¼öÇà¿¡ ´ëÇÑ »ó¼¼ÇÑ Á¤º¸ Ãâ·Â.

-V, --version : ¹öÀü Á¤º¸ Ãâ·Â.



12.3 mysql ¾ÐÃà Àбâ Àü¿ë Å×ÀÌºí »ý¼º±â
** ÀÌ ºÎºÐÀº ¹ø¿ª »ý·«. °£´ÜÇÏ°Ô ¼Ò°³¸¸ ÇÕ´Ï´Ù **

pack_isam Àº 10 ¶óÀ̼¾½º ÀÌ»óÀ» ±¸ÀÔÇϰųª extended support ¸¦ ¹ÞÀ» ¶§ »ç¿ëÇÒ ¼ö ÀÖ
´Â Ãß°¡ À¯Æ¿¸®Æ¼. ¹ÙÀ̳ʸ®·Î¸¸ ¹èÆ÷ÇϹǷΠƯÁ¤ÇÑ Ç÷§Æû¿¡¼­¸¸ »ç¿ë °¡´É. ¾ÐÃà·üÀº 40%
-70% Á¤µµÀÌ´Ù. ¸Þ¸ð¸®¸ÊÀ» »ç¿ëÇϹǷÎ(mmap()) mmap()°¡ ÀÛµ¿µÇÁö ¾ÊÀ¸¸é ¹®Á¦°¡ »ý±ä
´Ù. ¾ÐÃàÇÏ°í³ª¼­´Â Àбâ Àü¿ë Å×À̺íÀÌ µÇ¸ç BLOB Ä®·³Àº ¾ÐÃàÇÏÁö ¸øÇÑ´Ù.

°ø°³ÀûÀ¸·Î ±¸ÇÒ ¼ö ÀÖ´Â mysql¿¡¼­ ¾ÐÃà Àбâ Àü¿ë Å×À̺íÀ» »ý¼ºÇÏÁö´Â ¸øÇÏÁö¸¸ ÀдÂ
°ÍÀº °¡´ÉÇÏ´Ù. ±âŸ ÀÚ¼¼ÇÑ ³»¿ëÀº ¸Å´º¾óÀ» Âü°íÇÏÀÚ.
13. Å×À̺í À¯Áöº¸¼ö ¹× ÆÄ¼Õ º¹±¸¿¡ isamchk »ç¿ëÇϱâ


µ¥ÀÌÅͺ£À̽º Å×À̺íÀÇ Á¤º¸¸¦ ¾òÀ» ¶§, Å×À̺í Á¡°Ë, º¹±¸ ¹× ÃÖÀûÈ­ ÇÒ¶§ isamchk À¯Æ¿¸®Æ¼¸¦ »ç
¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ÀÇ ¼½¼ÇÀº ¾î¶»°Ô isamchk¸¦ »ç¿ëÇÏ´ÂÁö(¿É¼Ç¿¡ ´ëÇÑ »ó¼¼ÇÑ ¼³¸í Æ÷ÇÔ), Å×À̺í
À¯Áö °èȹÀ» ¾î¶»°Ô ¼³Á¤ÇÒ °ÍÀÎÁö, ¾î¶»°Ô isamchkÀÇ ´Ù¾çÇÑ ±â´ÉÀ» ¼öÇàÇϱâ À§ÇØ isamchk¸¦ »ç
¿ëÇÏ´ÂÁö¿¡ ´ëÇØ ¼³¸íÇÏ°í ÀÖ´Ù.

{{}}13.1 isamchk ¸í·É¾î »ç¿ë¹ý

isamchk ´Â ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù:

shell> isamchk [options] tbl_name

¿É¼ÇÀº isamchk·Î ¹«¾ùÀ» ÇÒ °ÍÀÎÁö ÁöÁ¤ÇÑ´Ù. ¾Æ·¡¿¡¼­ ¼³¸íÇÑ´Ù. (isamchk --help ¸í·ÉÀ¸·Î ¿É¼Ç
ÀÇ ¸ñ·ÏÀ» º¼ ¼ö ÀÖ´Ù) ¿É¼ÇÀÌ ¾øÀ» ¶§, isamchk´Â ´ÜÁö Å×À̺íÀ» Á¡°ËÇÑ´Ù. ´õ ¸¹Àº Á¤º¸¸¦ ¾òÀ¸·Á
Çϰųª ƯÁ¤ÇÑ ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ¸é ¾Æ·¡¿¡¼­ ¼³¸íÇϴµ¥·Î ¿É¼ÇÀ» ÁöÁ¤ÇÑ´Ù.

tbl_nameÀº Á¡°ËÇϱ⠿øÇÏ´Â µ¥ÀÌÅͺ£À̽º Å×À̺íÀÌ´Ù. µ¥ÀÌÅͺ£À̽º µð·ºÅ丮°¡ ¾Æ´Ñ ´Ù¸¥ °÷¿¡
¼­ isamchk¸¦ ½ÇÇàÇϸé, ÆÄÀÏÀÇ °æ·Î¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù. ¿Ö³ÄÇϸé isamchk´Â µ¥ÀÌÅͺ£À̽ºÀÇ À§Ä¡
¿¡ ´ëÇؼ­ ¾ËÁö ¸øÇϱ⠶§¹®ÀÌ´Ù. ½ÇÁ¦·Î, isamchk´Â ÀÛ¾÷ÇÏ·Á´Â ÆÄÀÏÀÌ µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¿¡
ÀÖ´ÂÁö ¾Æ´ÑÁö ½Å°æÀ» ¾²Áö ¾Ê´Â´Ù; µ¥ÀÌÅͺ£À̽º Å×ÀÌºí¿¡ ÇØ´çÇÏ´Â ÆÄÀÏÀ» ´Ù¸¥ °÷À¸·Î º¹»çÇÏ
°í ±×°÷¿¡¼­ º¹±¸ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù.

¿øÇÑ´Ù¸í isamchkÀÇ ¸í·ÉÇà¿¡¼­ ¿©·¯°³ÀÇ Å×À̺íÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ À̸§À» À妽º ÆÄÀÏ ÀÌ
¸§('.ISM' °¡ ºÙÀ½)À¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ·± °æ¿ì '*.ISM' ÆÐÅÏÀ» »ç¿ëÇÏ¿© µð·ºÅ丮ÀÇ ¸ðµç Å×ÀÌ
ºíÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¿¡ ÀÖ´Ù¸é ´ÙÀ½°ú °°ÀÌ µð·ºÅ丮ÀÇ ¸ðµç
Å×À̺íÀ» Á¡°ËÇÒ ¼ö ÀÖ´Ù:

shell> isamchk *.ISM


If you are not in the database directory, you can check all the tables there by specifying the path to the dir
ectory:

µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¿¡ ÀÖÁö ¾ÊÀ¸¸é, µð·ºÅ丮ÀÇ °æ·Î¸¦ ÁöÁ¤ÇÏ¿© ¸ðµç Å×À̺íÀ» Á¡°ËÇÒ ¼ö ÀÖ
´Ù.

shell> isamchk /path/to/database_dir/*.ISM

¶ÇÇÑ mysql data µð·ºÅ丮ÀÇ °æ·Î¸¦ »ç¿ëÇÑ ¿ÍÀϵå Ä«µå¸¦ ÁöÁ¤ÇÏ¿© ¸ðµç µ¥ÀÌÅͺ£À̽ºÀÇ ¸ðµç Å×
À̺íÀ» Á¡°ËÇÒ ¼ö ÀÖ´Ù:

shell> isamchk /path/to/datadir/*/*.ISM

isamchk´Â ´ÙÀ½ÀÇ ¿É¼ÇÀ» Áö¿øÇÑ´Ù:

-a, --analyze
Analyze the distribution of keys. This will make some joins in MySQL faster.
Å°ÀÇ ºÐÆ÷¸¦ ºÐ¼®. mysql¿¡¼­ ƯÁ¤ÇÑ Á¶ÀÎÀ» ºü¸£°Ô ¸¸µç´Ù.

-#, --debug=debug_options
Output debug log. The debug_options string often is 'd:t:o,filename'.
µð¹ö±× ·Î±× Ãâ·Â. debug_options ¹®ÀÚ´Â ÈçÁö 'd:t:o,filename' ÀÌ´Ù.

-d, --description
Å×À̺íÀÇ Á¤º¸ Ãâ·Â

-e, --extend-check
Å×À̺íÀ» ¸Å¿ì »ó¼¼ÇÏ°Ô Á¡°Ë. ¾ÆÁÖ Æ¯Á¤ÇÑ °æ¿ì¿¡¸¸ ÇÊ¿äÇÏ´Ù. ÀϹÝÀûÀ¸·Î isamchk´Â ÀÌ ¿É¼ÇÀÌ
¾ø¾îµµ ¸ðµç ¿¡·¯¸¦ ãÀ» ¼ö ÀÖ´Ù.

-f, --force
Overwrite old temporary files. If you use -f when checking tables (running isamchk without -r), isamchk
will automatically restart with -r on any table for which an error occurs during checking.
ÀÌÀüÀÇ ¿À·¡µÈ Àӽà ÆÄÀÏÀ» µ¤¾î¾¸. Å×À̺íÀ» Á¡°ËÇÒ¶§ -f¸¦ »ç¿ëÇϸé(-r ¾øÀÌ isamchk¸¦ ½ÇÇà) isa
mchk´Â Á¡°ËÇÏ´Â µ¿¾È ¿¡·¯°¡ ¹ß»ýÇÏ´Â Å×ÀÌºí¿¡¼­ ÀÚµ¿À¸·Î -r ¿É¼ÇÀ» ½ÃÀÛÇÑ´Ù.


--help
µµ¿ò¸» Ãâ·Â.

-i, --information
Á¡°ËÀ» ÇÑ Å×À̺íÀÇ Åë°è Á¤º¸ Ãâ·Â.

-k #, --keys-used=#
Used with -r. Tell the NISAM table handler to update only the first # indexes. Higher-numbered indexes
are deactivated. This can be used to get faster inserts! Deactivated indexes can be reactivated by using isa
mchk -r.
-r °ú ÇÔ²² »ç¿ë. NISAM Å×À̺í Çڵ鷯¿¡ ù # À妽º¸¸ ¾÷µ¥ÀÌÆ®Ç϶ó´Â °ÍÀ» ¾Ë·ÁÁØ´Ù. Higher-nu
mberd(?) À妽º°¡ ÇØÁ¦µÈ´Ù. ÀÌ°ÍÀº insert¸¦ ºü¸£°Ô ÇÒ¶§ »ç¿ëÇÑ´Ù! ÇØÁ¦µÈ À妽º´Â isamchk -r À»
»ç¿ëÇÏ¿© ÀçÈ°¼ºÈ­µÈ´Ù.

-l, --no-symlinks
º¹±¸ÇÒ¶§ ½Éº¼¸¯ ¸µÅ©¸¦ µû¸£Áö ¾Ê´Â´Ù. ÀϹÝÀûÀ¸·Î isamchk´Â ½Éº¼¸¯ ¸µÅ©°¡ °¡¸®Å°´Â Å×À̺íÀ»
º¹±¸ÇÑ´Ù.



-q, --quick
ºü¸£°Ô º¹±¸Çϱâ À§ÇØ -r °ú ÇÔ²² »ç¿ë. ÀϹÝÀûÀ¸·Î ¿ø·¡ÀÇ µ¥ÀÌŸ ÆÄÀÏÀº °Çµå¸®Áö ¾Ê´Â´Ù; µÎ¹ø°
-q¸¦ ÁöÁ¤ÇÏ¿© ¿ø·¡ÀÇ µ¥ÀÌŸ ÆÄÀÏÀ» »ç¿ëÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù.

-r, --recover
º¹±¸ ¸ðµå. À¯ÀÏÇÏÁö ¾Ê´Â unique Å°¸¸ Á¦¿ÜÇÏ°í °ÅÀÇ ¸ðµç °ÍÀ» º¹±¸ÇÑ´Ù.

-o, --safe-recover
º¹±¸ ¸ðµå. ±¸½Ä º¹±¸ ¹æ¹ýÀ» »ç¿ë; -rÀ» »ç¿ëÇÏ¿© º¹±¸ÇÏ´Â °Íº¸´Ù ´À¸®´Ù. ±×·¸Áö¸¸ -rÀÌ ´Ù·ê ¼ö
¾ø´Â ¸î°¡Áö °æ¿ì¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
(** -rÀÌ ´Ù·ê ¼ö ¾ø´Â °æ¿ì¶õ ¹«¾ùÀÎÁö Àß ¸ð¸£°Ú³×¿ä... **)

-O var=option, --set-variable var=option
º¯¼ö°ª ¼³Á¤. ¼³Á¤°¡´ÉÇÑ º¯¼ö´Â ¾Æ·¡¿¡¼­ ¼³¸í.

-s, --silent
ħ¹¬ ¸ðµå. ¿¡·¯°¡ ¹ß»ýÇÒ ¶§¸¸ Ãâ·ÂÀ» ÇÑ´Ù. µÎ°³ÀÇ -s(-ss)¸¦ »ç¿ëÇÏ¸é  isamchk¿¡¼­ ¸Å¿ì Á¶¿ëÇÏ
°Ô ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù.

-S, --sort-index
Sort index blocks. This speeds up "read-next" in applications.
À妽º ºí¶ô Á¤¿­. ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ "read-next" ¼Óµµ¸¦ Çâ»ó.(??)

-R index_num, --sort-records=index_num
À妽º¿¡ µû¶ó ·¹Äڵ带 Á¤·Ä. ÀÌ ÀÛ¾÷À» ÇÏ¸é µ¥ÀÌŸ¸¦ ÁýÁß½Ãų ¼ö ÀÖ°í ÀÌ À妽º¸¦ »ç¿ëÇÑ SE
LECT ¿Í ORDER BY ÀÛ¾÷ÀÇ ¼Óµµ¸¦ Áõ°¡½Ãų ¼ö ÀÖ´Ù. (óÀ½¿¡´Â Á¤·ÄÇÏ´Â ½Ã°£ÀÌ ¸Å¿ì ´À¸®´Ù!)
Å×À̺íÀÇ À妽º ¹øÈ£¸¦ ã±â À§ÇØ SHOW INDEX¸¦ »ç¿ëÇÑ´Ù. SHOW INDEX´Â isamchk¿¡¼­ »ç¿ë
ÇÏ´Â °Í°ú °°Àº ¼ø¼­·Î Å×À̺íÀÇ À妽º¸¦ º¸¿©ÁØ´Ù. À妽º´Â 1¹øºÎÅÍ ½ÃÀÛÇÏ¿© ¹øÈ£°¡ ¸Å°ÜÁø
´Ù.

-u, --unpack
Unpack a table that was packed with pack_isam.
pack_isam À¸·Î ¾ÐÃàµÈ Å×À̺íÀÇ ¾ÐÃà ÇØÁ¦.

-v, --verbose
Verbose ¸ðµå. Á¤º¸¸¦ Ãâ·Â. -d ¿Í -e ¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿©·¯°³ÀÇ -v¸¦ »ç¿ë(-vv, -vvv)ÇÏ¿© ´õ
ÀÚ¼¼ÇÏ°Ô º¼ ¼ö ÀÖ´Ù.

-V, --version
isamchk ¹öÀü Ãâ·Â.

-w, --wait
Å×ÀÌºí¿¡ ¶ôÀÌ °É·Á ÀÖÀ¸¸é ±â´Ù¸².

--set-variable (-O) ¿É¼ÇÀÇ ¼³Á¤ °¡´ÉÇÑ º¯¼ö´Â ´ÙÀ½°ú °°´Ù:

keybuffer             default value: 520192
readbuffer            default value: 262136
writebuffer           default value: 262136
sortbuffer            default value: 2097144
sort_key_blocks       default value: 16
decode_bits           default value: 9
{{}}

13.2 isamchk ¸Þ¸ð¸® »ç¿ë¹ý

Memory allocation is important when you run isamchk. isamchk uses no more memory than you specify
with the -O options. If you are going to use isamchk on very large files, you should first decide how much
memory you want it to use. The default is to use only about 3M to fix things. By using larger values, you
can get isamchk to operate faster. For example, if you have more than 32M RAM, you could use options s
uch as these (in addition to any other options you might specify):

¸Þ¸ð¸® ÇÒ´çÀº isamchk¸¦ ½ÇÇàÇÒ ¶§ Áß¿äÇÏ´Ù.isamchk´Â -O ¿É¼Ç¿¡¼­ ÁöÁ¤ÇÑ °Í ÀÌ»óÀ¸·Î ¸Þ¸ð¸®
¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ¸Å¿ì Å« ÆÄÀÏ¿¡¼­ isamchk¸¦ »ç¿ëÇÏ·Á Çϸé, ¾ó¸¶¸¶ ¸¹Àº ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ °Í
ÀÎÁö ¸ÕÀú °áÁ¤ÇØ¾ß ÇÑ´Ù. ±âº»°ªÀº ¹®Á¦¸¦ °íÄ¡´Âµ¥ 3M¸¦ »ç¿ëÇÑ´Ù. ´õ ¸¹Àº °ªÀ» »ç¿ëÇØ ´õ ºü¸£
°Ô isamchk¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î 32M ÀÌ»ó ·¥À» °¡Áö°í ÀÖ´Ù¸é ´ÙÀ½°ú °°Àº ¿É¼ÇÀ» »ç¿ëÇÒ
¼ö ÀÖ´Ù. (»ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ¿É¼Ç¿¡ Ãß°¡ÇÏ¿©):

shell> isamchk -O sortbuffer=16M -O keybuffer=16M \
         -O readbuffer=1M -O writebuffer=1M ...

-O sortbuffer=16M ¸¦ »ç¿ëÇÏ¸é ´ëºÎºÐÀÇ °æ¿ì¿¡´Â ÃæºÐÇÏ´Ù.

Be aware that isamchk uses temporary files in TMPDIR. If TMPDIR points to a memory file system, you
may easily get out of memory errors.
isamchk ´Â TMPDIRÀÇ Àӽà ÆÄÀÏÀ» »ç¿ëÇÑ´Ù´Â °Í¿¡ ÁÖÀÇÇÏÀÚ. ¸¸¾à TMPDIRÀÌ ¸Þ¸ð¸® ÆÄÀÏ ½Ã½º
ÅÛÀ» °¡¸®Å²´Ù¸é ½±°Ô ¸Þ¸ð¸® ¿¡·¯¿¡¼­ ¹þ¾î³¯ ¼ö ÀÖ´Ù.


13. 3 Å×À̺í À¯Áöº¸¼ö ¼³Á¤
{{}}13.3 Setting up a table maintenance regime

¹®Á¦°¡ »ý±æ¶§¸¦ ±â´Ù¸®´Â °Íº¸´Ù Á¤±âÀûÀ¸·Î Å×À̺íÀ» Á¡°ËÇÏ´Â °Ô ÁÁ´Ù. À¯Áöº¸¼ö °èȹ¸¦ À§ÇÏ
¿© isamchk -s ¸¦ »ç¿ëÇØ Å×À̺íÀ» Á¡°ËÇÒ ¼ö ÀÖ´Ù. -s ¿É¼ÇÀ» »ç¿ëÇϸé isamchk°¡ ħ¹¬ ¸ðµå·Î ÀÛµ¿
À» ÇÏ¸ç ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§¸¸ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.

¼­¹ö¸¦ ½ÃÀÛÇÒ¶§ Å×À̺íÀ» Á¡°ËÇÏ´Â °Íµµ ÁÁÀº »ý°¢ÀÌ´Ù. ¿¹¸¦ µé¾î ¾÷µ¥ÀÌÆ® µµÁß¿¡ ½Ã½ºÅÛÀÌ ¸®
ºÎÆÃÀ» ÇßÀ» ¶§¸¶´Ù ÀϹÝÀûÀ¸·Î ¿µÇâÀ» ¹ÞÀº ¸ðµç Å×À̺í(ÀÌ°ÍÀ» "expected crashed table"À̶ó°í ÇÑ
´Ù)À» Á¡°ËÇØ¾ß ÇÑ´Ù. ¸¸¾à ¿À·¡µÈ '.pid' (ÇÁ·Î¼¼½º ID) ÆÄÀÏÀÌ ÀçºÎÆÃÈÄ¿¡ ³²¾Æ ÀÖ´Ù¸é ÃÖ±Ù 24½Ã°£
µ¿¾È º¯°æÀÌ µÈ ¸ðµç Å×À̺íÀ» Á¡°ËÇϱâ À§ÇØ safe_mysqld¿¡ isamchk¸¦ ½ÇÇàÇÏ´Â Å×½ºÆ®¸¦ Ãß°¡ÇØ
¾ß ÇÑ´Ù.('.pid' ÆÄÀÏÀº mysqld°¡ ½ÃÀÛÇÒ¶§ ¸¸µé¾îÁö¸ç ÀϹÝÀûÀ¸·Î mysqld°¡ Á¾·áµÉ¶§ Á¦°ÅµÈ´Ù. ½Ã
½ºÅÛÀÌ ½ÃÀÛÇÒ¶§ '.pid' ÆÄÀÏÀÌ ÀÖ´Ù´Â °ÍÀº mysqld°¡ ºñÁ¤»óÀûÀ¸·Î Á¾·áµÇ¾ú´Ù´Â °ÍÀ» ³ªÅ¸³½´Ù.)

´õ ÁÁÀº Å×½ºÆ®´Â ÃÖ±Ù¿¡ º¯°æµÈ ½Ã°£ÀÌ '.pid' ÆÄÀϺ¸´Ù ÃÖ±ÙÀÎ Å×À̺íÀ» Á¡°ËÇÏ´Â °ÍÀÌ´Ù.

¶ÇÇÑ ÀϹÝÀûÀÎ ½Ã½ºÅÛ ¿î¿µÁß¿¡ Á¤±âÀûÀ¸·Î Å×À̺íÀ» Á¡°ËÇÒ ¼ö ÀÖ´Ù. TcX¿¡¼­´Â 'crontab' ÆÄÀÏ¿¡
´ÙÀ½ÀÇ ¶óÀÎÀ» »ç¿ëÇÏ¿© ÀÏÁÖÀÏ¿¡ Çѹø¾¿ ¿ì¸®ÀÇ Áß¿äÇÑ Å×À̺íÀ» Á¡°ËÇϵµ·Ï cron ÀÛ¾÷À» µ¹¸°
´Ù:

35 0 * * 0 /path/to/isamchk -s /path/to/datadir/*/*.ISM

ÀÌ·¸°Ô ÇÏ¸é ¼Õ»óµÈ Å×ÀÌºí¿¡ ´ëÇÑ Á¤º¸¸¦ Ãâ·ÂÇÏ¿© ÇÊ¿äÇÒ¶§ Å×À̺íÀ» Á¡°ËÇÏ°í º¹±¸ÇÒ ¼ö ÀÖ´Ù.

¸î³âµ¿¾È ¿ì¸®´Â ¿¹»óÇÏÁö ¸øÇÏ°Ô Å×À̺íÀÌ ¼Õ»ó(Çϵå¿þ¾î ¹®Á¦°¡ ¾Æ´Ñ ´Ù¸¥ ÀÌÀ¯·Î ¹®Á¦°¡ »ý±ä
Å×À̺í)µÈ °æ¿ì°¡ ¾ø¾î¼­ ¿ì¸®¿¡°Õ ÀÏÁÖÀϸ¸À¸·Îµµ ÃæºÐÇÏ´Ù. (ÀÌ°ÍÀº Á¤¸»·Î Áø½ÇÀÌ´Ù)

¿ì¸®¸¸Å­ mysql¿¡ ´ëÇØ ½Å·Ú¸¦ ÇÒ ¶§±îÁö ÃÖ±Ù 24½Ã°£µ¿¾È ¾÷µ¥ÀÌÆ®µÈ ¸ðµç Å×ÀÌºí¿¡ ´ëÇØ ¸ÅÀÏ
¹ã¸¶´Ù isamchk -s ¸¦ ½ÇÇàÇÒ °ÍÀ» ÃßõÇÑ´Ù.


13.4 Å×À̺í Á¤º¸ ¾ò±â

Å×ÀÌºí¿¡ ´ëÇÑ Á¤º¸³ª Åë°è¸¦ ¾ò±â À§ÇØ ¾Æ·¡ÀÇ ¸í·ÉÀ» »ç¿ëÇÏÀÚ. µÚ¿¡¼­ ÀÚ¼¼ÇÏ°Ô Á¤º¸¿¡ ´ëÇØ
¼³¸íÇÒ °ÍÀÌ´Ù.

isamchk -d tbl_name
Å×ÀÌºí¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò±â À§ÇØ "describe(¼³¸í) ¸ðµå"·Î isamchk¸¦ ½ÇÇà. mysql ¼­¹ö¸¦ --skip-locki
ng ¿É¼ÇÀ»  »ç¿ëÇØ ½ÃÀÛÇϸé, isamchk´Â ¼­¹ö°¡ ½ÇÇàµÇ´Â µ¿¾È ¾÷µ¥ÀÌÆ®µÈ Å×ÀÌºí¿¡¼­ ¿¡·¯°¡ ³­
°ÍÀ» º¸°íÇÑ´Ù. ±×·¯³ª isamchk´Â describe ¸ðµå¿¡¼­ Å×À̺íÀ» º¯°æÇÏÁö ¸øÇϱ⠶§¹®¿¡ µ¥ÀÌŸ¸¦
ÀÐÀ» À§ÇèÀÌ ¾ø´Ù.

isamchk -d -v tbl_name
isamchk°¡ ¼öÇàÇÏ´Â °Í¿¡ ´ëÇØ ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ º¸±âÀ§ÇØ -v ¿É¼ÇÀ» Ãß°¡ÇÏ¿© verbose ¸ðµå·Î ¼ö
ÇàÇÒ ¼ö ÀÖ´Ù.

isamchk -eis tbl_name
Å×ÀÌºí¿¡¼­ °¡Àå Áß¿äÇÑ Á¤º¸¸¸ º¸¿©ÁØ´Ù. Àüü Å×À̺íÀ» ´Ù Àоî¾ß Çϱ⠶§¹®¿¡ ¼Óµµ°¡ ´À¸®´Ù.

isamchk -eiv tbl_name
-eiv ¿Í ºñ½ÁÇÏÁö¸¸ ÇöÀç ¹«¾ùÀÌ ÁøÇàµÇ°í ÀÖ´ÂÁö  º¸¿©ÁØ´Ù.


isamchk -d Ãâ·Â ¿¹Á¦:

ISAM file:     company.ISM
Data records:           1403698  Deleted blocks:         0
Recordlength:               226
Record format: Fixed length

table description:
Key Start Len Index   Type
1   2     8   unique  double
2   15    10  multip. text packed stripped
3   219   8   multip. double
4   63    10  multip. text packed stripped
5   167   2   multip. unsigned short
6   177   4   multip. unsigned long
7   155   4   multip. text
8   138   4   multip. unsigned long
9   177   4   multip. unsigned long
  193   1           text


isamchk -d -v Ãâ·Â ¿¹Á¦:

ISAM file:     company.ISM
Isam-version:  2
Creation time: 1996-08-28 11:44:22
Recover time:  1997-01-12 18:35:29
Data records:           1403698  Deleted blocks:              0
Datafile: Parts:        1403698  Deleted data:                0
Datafilepointer (bytes):      3  Keyfile pointer (bytes):     3
Max datafile length: 3791650815  Max keyfile length: 4294967294
Recordlength:               226
Record format: Fixed length

table description:
Key Start Len Index   Type                      Root Blocksize Rec/key
1   2     8   unique  double                15845376      1024       1
2   15    10  multip. text packed stripped  25062400      1024       2
3   219   8   multip. double                40907776      1024      73
4   63    10  multip. text packed stripped  48097280      1024       5
5   167   2   multip. unsigned short        55200768      1024    4840
6   177   4   multip. unsigned long         65145856      1024    1346
7   155   4   multip. text                  75090944      1024    4995
8   138   4   multip. unsigned long         85036032      1024      87
9   177   4   multip. unsigned long         96481280      1024     178
  193   1           text


Example of isamchk -eis Ãâ·Â ¿¹Á¦:

Checking ISAM file: company.ISM
Key:  1:  Keyblocks used:  97%  Packed:    0%  Max levels:  4
Key:  2:  Keyblocks used:  98%  Packed:   50%  Max levels:  4
Key:  3:  Keyblocks used:  97%  Packed:    0%  Max levels:  4
Key:  4:  Keyblocks used:  99%  Packed:   60%  Max levels:  3
Key:  5:  Keyblocks used:  99%  Packed:    0%  Max levels:  3
Key:  6:  Keyblocks used:  99%  Packed:    0%  Max levels:  3
Key:  7:  Keyblocks used:  99%  Packed:    0%  Max levels:  3
Key:  8:  Keyblocks used:  99%  Packed:    0%  Max levels:  3
Key:  9:  Keyblocks used:  98%  Packed:    0%  Max levels:  4
Total:    Keyblocks used:  98%  Packed:   17%

Records:          1403698    M.recordlength:     226   Packed:             0%
Recordspace used:     100%   Empty space:          0%  Blocks/Record:   1.00
Recordblocks:     1403698    Deleteblocks:         0
Recorddata:     317235748    Deleted data:         0
Lost space:             0    Linkdata:             0

User time 1626.51, System time 232.36
Maximum resident set size 0, Integral resident set size 0
Non physical pagefaults 0, Physical pagefaults 627, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 639, Involuntary context switches 28966


isamchk -eiv Ãâ·Â ¿¹Á¦:

Checking ISAM file: company.ISM
Data records: 1403698   Deleted blocks:       0
- check file-size
- check delete-chain
index  1:
index  2:
index  3:
index  4:
index  5:
index  6:
index  7:
index  8:
index  9:
No recordlinks
- check index reference
- check data record references index: 1
Key:  1:  Keyblocks used:  97%  Packed:    0%  Max levels:  4
- check data record references index: 2
Key:  2:  Keyblocks used:  98%  Packed:   50%  Max levels:  4
- check data record references index: 3
Key:  3:  Keyblocks used:  97%  Packed:    0%  Max levels:  4
- check data record references index: 4
Key:  4:  Keyblocks used:  99%  Packed:   60%  Max levels:  3
- check data record references index: 5
Key:  5:  Keyblocks used:  99%  Packed:    0%  Max levels:  3
- check data record references index: 6
Key:  6:  Keyblocks used:  99%  Packed:    0%  Max levels:  3
- check data record references index: 7
Key:  7:  Keyblocks used:  99%  Packed:    0%  Max levels:  3
- check data record references index: 8
Key:  8:  Keyblocks used:  99%  Packed:    0%  Max levels:  3
- check data record references index: 9
Key:  9:  Keyblocks used:  98%  Packed:    0%  Max levels:  4
Total:    Keyblocks used:   9%  Packed:   17%

- check records and index references
[LOTS OF ROW NUMBERS DELETED]

Records:          1403698    M.recordlength:     226   Packed:             0%
Recordspace used:     100%   Empty space:          0%  Blocks/Record:   1.00
Recordblocks:     1403698    Deleteblocks:         0
Recorddata:     317235748    Deleted data:         0
Lost space:             0    Linkdata:             0

User time 1639.63, System time 251.61
Maximum resident set size 0, Integral resident set size 0
Non physical pagefaults 0, Physical pagefaults 10580, Swaps 0
Blocks in 4 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 10604, Involuntary context switches 122798



´ÙÀ½Àº ¾ÕÀÇ ¿¹Á¦¿¡¼­ »ç¿ëÇÑ Å×À̺íÀÇ µ¥ÀÌŸ¿Í À妽º ÆÄÀÏ Å©±âÀÌ´Ù:

-rw-rw-r--   1 monty    tcx     317235748 Jan 12 17:30 company.ISD
-rw-rw-r--   1 davida   tcx      96482304 Jan 12 18:35 company.ISM


isamchk°¡ Ãâ·ÂÇÏ´Â Á¤º¸ ŸÀÔ¿¡ ´ëÇÑ ¼³¸íÀº ¾Æ·¡¿Í °°´Ù. "keyfile"Àº À妽º ÆÄÀÏÀÌ´Ù. "Record"
¿Í "row"´Â °°Àº ¸»ÀÌ´Ù.

ISAM file
      ISAM (index) ÆÄÀÏ À̸§.

Isam-version
      ISAM Æ÷¸Ë ¹öÀü. ÇöÀç´Â Ç×»ó 2.

Creation time
      µ¥ÀÌŸ ÆÄÀÏ »ý¼º ½Ã°£.

Recover time
      À妽º/µ¥ÀÌŸ ÆÄÀÏÀÌ ÃÖ±Ù¿¡ º¹±¸µÈ ½Ã°£.

Data records
      Å×ÀÌºí¿¡ ÀÖ´Â ·¹ÄÚµå ¼ö.

Deleted blocks
      Áö¿öÁø ºí¶ôÀÌ Â÷ÁöÇÏ°í ÀÖ´Â °ø°£. ÀÌ·¯ÇÑ °ø°£À» ÁÙÀ̱â À§ÇØ Å×À̺íÀÇ ÃÖÀûÈ­¸¦ ÇÒ ¼ö
ÀÖ´Ù. 13.5.3 [ÃÖÀûÈ­] Âü°í.

Datafile: Parts
      µ¿ÀûÀÎ ·¹ÄÚµå Æ÷¸ËÀ» À§ÇØ, ¾ó¸¶³ª ¸¹Àº µ¥ÀÌŸ ºí¶ôÀÌ ÀÖ´ÂÁö¸¦ ¾Ë¸². ´ÜÆíÈ­µÈ ·¹ÄÚµå
°¡ ¾ø´Â ÃÖÀûÈ­µÈ Å×ÀÌºí¿¡¼­´Â Data records ¿Í °°´Ù.

Deleted data
      È¸¼öÇÏÁö ¾ÊÀº Áö¿øÁø µ¥ÀÌŸÀÇ ¹ÙÀÌÆ® ¼ö. ÀÌ·¸³ª °ø°£À» ¾ø¾Ö±â À§ÇØ Å×À̺íÀ» ÃÖÀûÈ­
ÇÒ ¼ö ÀÖ´Ù. 13.5.3 [ÃÖÀûÈ­] Âü°í.

Datafile pointer
      µ¥ÀÌŸ ÆÄÀÏ Æ÷ÀÎÅÍÀÇ Å©±â·Î ¹ÙÀÌÆ®¼ö. ÀϹÝÀûÀ¸·Î 2,3,4,5 ¹ÙÀÌÆ®ÀÌ´Ù. ´ëºÎºÐÀÇ Å×ÀÌ
ºíÀº 2¹ÙÀÌÆ®·Î °ü¸®¸¦ ÇÑ´Ù. ±×·¸Áö¸¸ ¾ÆÁ÷±îÁö mysql¿¡¼­´Â Á¦¾î¸¦ ÇÒ ¼ö ¾ø´Ù. °íÁ¤ Å×ÀÌºí¿¡¼­
ÀÌ´Â ·¹ÄÚµå ÁÖ¼Ò(address)ÀÌ´Ù. µ¿Àû Å×ÀÌºí¿¡¼­ ÀÌ´Â ¹ÙÀÌÆ® ÁÖ¼ÒÀÌ´Ù.



Keyfile pointer
      À妽º ÆÄÀÏ Æ÷ÀÎÅÍÀÇ Å©±â·Î ¹ÙÀÌÆ®. ÀϹÝÀûÀ¸·Î 1,2,3 ¹ÙÀÌÆ®ÀÌ´Ù. ´ëºÎºÐÀÇ Å×À̺íÀº
2¹ÙÀÌÆ®·Î °ü¸®¸¦ ÇÑ´Ù. ±×·¸Áö¸¸ ÀÌ Å©±â´Â mysql¿¡¼­ ÀÚµ¿À¸·Î °è»êÀÌ µÈ´Ù. Ç×»ó ºí¶ô ÁÖ¼ÒÀÌ
´Ù.

Max datafile length
      Å×À̺íÀÇ µ¥ÀÌÅÍ ÆÄÀÏ(.ISD ÆÄÀÏ)ÀÇ ÃÖ´ë Å©±â. ¹ÙÀÌÆ®.

Max keyfile length
      Å×À̺íÀÇ key file(.ISM ÆÄÀÏ)ÀÇ  ÃÖ´ë Å©±â. ¹ÙÀÌÆ®.

Recordlength
      °¢ ·¹Äڵ尡 Â÷ÁöÇÏ°í ÀÖ´Â °ø°£. ¹ÙÀÌÆ®.

Record format
Å×À̺íÀÇ ·¹Äڵ带 ÀúÀåÇϴµ¥ »ç¿ëµÈ Æ÷¸Ë. À§¿¡¼­ º¸¿©ÁØ ¿¹Á¦´Â °íÁ¤ ±æÀ̸¦ »ç¿ëÇÏ°í ÀÖ´Ù.
´Ù¸¥ °ªÀº Compressed ¿Í Packed ÀÌ´Ù.

table description
      Å×À̺íÀÇ ¸ðµç Å°ÀÇ ¸ñ·Ï. °¢ Å°¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº ´ÙÀ½°ú °°´Ù:
Key
      Å°ÀÇ ¼ýÀÚ.
Start
      Where in the record this index part starts.
      ·¹Äڵ忡¼­ À妽º°¡ ½ÃÀÛÇÏ´Â À§Ä¡.
Len
How long this index part is. For packed numbers, this should always be the full length of the column. For
strings, it may be shorter than the full length of the indexed column, because you can index a prefix of a st
ring column.
      À妽º ºÎºÐÀÇ ±æÀÌ. For packed numbers(²Ë Âù ¼ýÀÚ¸¦ À§ÇØ??? ¹ø¿ªÀÌ ÀÌ»ó..), Ä÷³ÀÇ ÃÑ
±æÀÌ°¡ µÇ¾î¾ß ÇÑ´Ù. ¹®ÀÚ¿­¿¡¼­´Â À妽ºµÈ Ä÷³ÀÇ ÃÑ ±æÀ̺¸´Ù ÀÛ¾Æ¾ß ÇÑ´Ù. ¿Ö³ÄÇÏ¸é ¹®ÀÚ¿­
Ä÷³ ¾Õ¿¡ Àε¦....

Index
      ÀÌ À妽º¿¡ °°Àº °ªÀÌ ¿©·¯°³ Á¸ÀçÇÒ ¼ö ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ ³ªÅ¸³¿.
Type
      À妽º ºÎºÎÀÇ µ¥ÀÌÅÍ Å¸ÀÔ. packed, stripped, empty ¿É¼ÇÀ» °¡Áø NISAM µ¥ÀÌŸ ŸÀÔÀÌ
´Ù.
Root
      ·çÆ® À妽º ºí¶ôÀÇ ÁÖ¼Ò.
Blocksize
      °¢ À妽º ºí¶ôÀÇ Å©±â.±âº»°ªÀº 1024ÀÌ´Ù. ±×·¸Áö¸¸ ÀÌ °ªÀº ÄÄÆÄÀÏ ÇÒ¶§ º¯°æÇÒ ¼ö ÀÖ
´Ù.
Rec/key
This is a statistical value used by the optimizer. It tells how many records there are per value for this key.
A unique key always has a value of 1. This may be updated after a table is loaded (or greatly changed) wit
h isamchk -a. If this is not updated at all, a default value of 30 is given.
      ÃÖÀûÈ­±â(optimizer)¿¡¼­ »ç¿ëÇÏ´Â Åë°èÀûÀÎ °ª. It tells how many records there are per valu
e for this key. unique Å°´Â Ç×»ó 1ÀÇ °ªÀ» °¡Áø´Ù. ÀÌ °ªÀº isamchk -a·Î Å×À̺íÀÌ ·ÎµùµÈ ÈÄ¿¡(¶Ç´Â
¸Å¿ì ¸¹ÀÌ º¯°æµÇ¾úÀ»¶§) ¾÷µ¥ÀÌÆ®µÈ´Ù. ÀüÇô ¾÷µ¥ÀÌÆ®µÇÁö ¾ÊÀ¸¸é ±âº»°ªÀ¸·Î 30ÀÌ ÁÖ¾îÁø´Ù.


À§ÀÇ Ã¹¹ø° ¿¹Á¦¿¡¼­, 9¹ø° Å°´Â µÎºÎºÐÀ» °¡Áø ¸ÖƼ-ÆÄÆ® Å°ÀÌ´Ù.


Keyblocks used
What percentage of the keyblocks are used. Since the table used in the examples had just been reorganize
d with isamchk, the values are very high (very near the theoretical maximum).
      Å°ºí¶ôÀÌ »ç¿ëÇÏ°í ÀÖ´Â ºñÀ².(%) ¿¹Á¦ÀÇ Å×À̺íÀº isamchk·Î ÀçÁ¶Á÷È­(reorganize)µÇ¾ú
±â ¶§¹®¿¡ °ªÀÌ ¸Å¿ì ³ô´Ù.(ÀÌ·ÐÀûÀÎ ÃÖ´ë°ª¿¡ ¸Å¿ì ±ÙÁ¢)

Packed
MySQL tries to pack keys with a common suffix. This can only be used for CHAR/VARCHAR/DECIM
AL keys. For long strings like names, this can significantly reduce the space used. In the third example ab
ove, the 4th key is 10 characters long and a 60% reduction in space is achieved.
....  À̸§°ú °°Àº long ¹®ÀÚ¿­¿¡¼­ °ø°£ »ç¿ëÀ» »ó´çÈ÷ ÁÙÀδÙ. À§ÀÇ ³×¹ø° ¿¹Á¦¿¡¼­ 4¹ø° Å°´Â 10
¹®ÀÚ long ÀÌ°í 60%ÀÇ °ø°£ÀÌ ÁÙ¾ú´Ù.
(** ¹ø¿ªÀÌ Àß ¾ÈµÇ´Âµ¥ Á¢¹Ì»ç°°Àº °ÍÀ» ºÙ¿©¼­ ¹®ÀÚ¿­ µîÀÇ °ø°£À» ÁÙÀδ٠¸Ó ±×·± °ÍÀÌ°ÚÁö¿ä *
*)

Max levels
      How deep the B-tree for this key is. Large tables with long keys get high values.

Records
      Å×À̺íÀÇ ·¹ÄÚµå¼ö.
M.recordlength
      Æò±Õ ·¹ÄÚµå ±æÀÌ. °íÁ¤ ±æ¸® ·¹ÄÚµåÀÇ Å×ÀÌºí¿¡¼­ ÀÌ °ªÀº ·¹ÄÚµå ±æÀÌ¿Í °°´Ù.

Packed
      MySQL strips spaces from the end of strings. The Packed value indicates the percentage saving
s achieved by doing this.


mysqlÀº ¹®ÀÚ³¡ÀÇ °ø¹éÀ» Á¦°ÅÇÑ´Ù.Packed value´Â ÀÌ·¸°Ô Çؼ­ Àý¾àµÈ °ø°£ÀÇ ºñÀ²À» ¸»ÇÑ´Ù.

Recordspace used
      µ¥ÀÌŸ ÆÄÀÏÀÌ »ç¿ëÇÏ´Â °ø°£ÀÇ ºñÀ².

Empty space
      µ¥ÀÌŸ ÆÄÀÏÀÌ »ç¿ëÇÏÁö ¾Ê´Â °ø°£ÀÇ ºñÀ².

Blocks/Record
      ·¹ÄÚµå´ç Æò±Õ ºí¶ô¼ö.(Áï, ´ÜÆíÈ­µÈ ·¹Äڵ尡 ¸î°³ÀÇ ¸µÅ©·Î ±¸¼ºµÇ¾î ÀÖ´ÂÁö) °íÁ¤-Æ÷
¸Ë Å×ÀÌºí¿¡¼­´Â Ç×»ó 1ÀÌ´Ù. ÀÌ °ªÀº °¡´ÉÇÑÇÑ 1¿¡ °¡±õ°Ô À¯ÁöÇؾßÇÑ´Ù. ÀÌ °ªÀÌ ³Ê¹« Ä¿Áö¸é isa
mchk·Î Å×À̺íÀ» ÃÖÀûÈ­(reorganize)ÇØ¾ß ÇÑ´Ù. 13.5.3 [Optimizaiton] Âü°í.

Recordblocks
      »ç¿ëÇÏ´Â ºí¶ô(¸µÅ©)¼ö. °íÁ¤ Æ÷¸Ë¿¡¼­ ÀÌ°ªÀº ·¹ÄÚµå¼ö¿Í °°´Ù.

Deleteblocks
      »èÁ¦µÈ ºí¶ô(¸µÅ©)¼ö.

Recorddata
      µ¥ÀÌŸ ÆÄÀÏÀÌ »ç¿ëÇÏ´Â ¹ÙÀÌÆ®¼ö.

Deleted data
      µ¥ÀÌÅÍ ÆÄÀÏ¿¡¼­ »èÁ¦µÈ(»ç¿ëÇÏÁö ¾Ê´Â) ¹ÙÀÌÆ®¼ö.

Lost space
      ·¹Äڵ尡 ¸Å¿ì ªÀº ±æÀÌ·Î ¾÷µ¥ÀÌÆ®µÇ¸é ¾à°£ÀÇ °ø°£À» ÀÒ°Ô µÈ´Ù. ÀÌ °ªÀº ÀÌ·¯ÇÑ °ø°£
ÀÇ bytes ÇÕ°èÀÌ´Ù.

Linkdata
      µ¿Àû Å×À̺í Æ÷¸ËÀ» »ç¿ëÇÒ ¶§,·¹ÄÚµå Á¶°¢Àº Æ÷ÀÌÅÍ·Î ¸µÅ©µÈ´Ù.Linkdata´Â ÀÌ·± Æ÷ÀÎÅÍ
¿¡¼­ »ç¿ëÇÏ´Â ÀúÀå °ø°£ÀÇ ÇÕÀÌ´Ù.


pack_isamÀ¸·Î Å×À̺íÀ» ¾ÐÃàÇßÀ¸¸é, isamchk -d ´Â °¢ Å×À̺í Ä÷³¿¡ ´ëÇÑ Ãß°¡ÀûÀÎ Á¤º¸¸¦ Ãâ·Â
ÇÑ´Ù.ÀÌ·¯ÇÑ Á¤º¸¿Í ±× Á¤º¸°¡ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö¿¡ ´ëÇؼ­´Â 12.3 [pack_isam]À» Âü°í.


{{}}13.5 ÆÄ¼Õ º¹±¸¿¡ isamchk »ç¿ëÇϱâ.
mysql¿¡¼­ µ¥ÀÌŸ¸¦ ÀúÀåÇϴµ¥ »ç¿ëÇÏ´Â ÆÄÀÏ Æ÷¸ËÀº ±¤¹üÀ§ÇÏ°Ô Å×½ºÆ®µÇ¾ú´Ù. ±×·¸Áö¸¸ µ¥ÀÌ
Åͺ£À̽º Å×À̺íÀÇ ¼Õ»óµÉ ¼ö ÀÖ´Â ¿ÜºÎÀûÀÎ »óȲÀÌ Ç×»ó ÀÖ´Ù:



¤· ¾²±â µµÁß¿¡ mysqld ÇÁ·Î¼¼½º°¡ Á×¾úÀ»¶§.
¤· ¿¹»óÄ¡ ¸øÇÏ°Ô ÄÄÇ»ÅÍ°¡ ¼Ë´Ù¿îµÇ¾úÀ»¶§(¿¹¸¦ µé¾î, ÄÄÇ»ÅÍÀÇ Àü¿øÀÌ ³ª°¡´Â °æ¿ì)
¤· Çϵå¿þ¾î ¿¡·¯

À̹ø Àý¿¡¼­´Â mysql µ¥ÀÌÅͺ£À̽º¿¡¼­ dataÀÇ ¼Õ»óÀ» üũÇÏ°í ÀÌ¿¡ ´ëóÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¼³
¸íÇÑ´Ù.

¼Õ»ó º¹±¸ ÀÛ¾÷À» ÇÒ ¶§ Å×ÀÌÅͺ£À̽ºÀÇ °¢ Å×À̺í tbl_nameÀº µ¥ÀÌÅͺ£À̽º µð·ºÅ丮ÀÇ ¼¼ ÆÄÀÏ
¿¡ Á¶ÀÀÇÑ´Ù´Â °Í¿¡ ´ëÇؼ­ ÀÌÇØÇÏ°í ÀÖ´Â °ÍÀÌ Áß¿äÇÏ´Ù:

ÆÄÀÏ                    ¿ëµµ
`tbl_name.frm'            Å×À̺í Á¤ÀÇ(Çü½Ä) ÆÄÀÏ
`tbl_name.ISD'            µ¥ÀÌŸ ÆÄÀÏ
`tbl_name.ISM'           À妽º ÆÄÀÏ


¼¼°¡Áö ÆÄÀÏ Å¸ÀÔÀº ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î ¼Õ»óÀ» ´çÇÑ´Ù. ±×·¸Áö¸¸ ´ëºÎºÐÀÇ ¹®Á¦´Â µ¥ÀÌŸ ÆÄÀÏ°ú ÀÎ
µ¦½º ÆÄÀÏ¿¡¼­ »ý±ä´Ù.

isamchk´Â '.ISD' (µ¥ÀÌŸ) ÆÄÀÏÀÇ º¹»çº¹À» ¸¸µé¾î ÀÛ¾÷À» ÇÑ´Ù. ÀÌÀüÀÇ '.ISD' ÆÄÀÏÀ» Á¦°ÅÇÏ°í »õ
·Î¿î ÆÄÀÏÀ» ÀÌÀüÀÇ ÆÄÀÏ À̸§À¸·Î ¹Ù²Ù¸é¼­ º¹±¸ ÀÛ¾÷À» ¸¶Ä£´Ù. --quick ¿É¼ÇÀ» »ç¿ëÇϸé isamchk
´Â Àӽà '.ISD' ÆÄÀÏÀ» ¸¸µéÁö ¾Ê´Â´Ù. ´ë½Å '.ISD' ÆÄÀÏÀÌ Á¤È®ÇÏ´Ù°í °¡Á¤ÇÏ¿© '.ISD' ÆÄÀÏÀº ¼Õ´ëÁö
¾Ê°í »õ·Î¿î À妽º ÆÄÀϸ¸ »ý¼ºÇÑ´Ù. isamchk´Â ÀÚµ¿À¸·Î 'ISD' ÆÄÀÏÀÌ ¼Õ»óµÇ¾ú´ÂÁö È®ÀÎÇÏ°í ¼Õ
»óµÇ¾úÀ» °æ¿ì º¹±¸ ÀÛ¾÷À» ÁßÁöÇϹǷΠ--quick ¿É¼ÇÀ» »ç¿ëÇÏ´Â °ÍÀº ¾ÈÀüÇÏ´Ù. µÎ°³ÀÇ -quick ¿É
¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·± °æ¿ì ƯÁ¤ÇÑ ¿¡·¯(Áߺ¹µÈ Å° µî)¿¡¼­ Ãë¼Ò¸¦ ÇÏÁö´Â ¾ÊÁö¸¸ '.ISD' ÆÄÀÏ
À» ¼öÁ¤ÇÏ¿© ¹®Á¦¸¦ ÇØ°áÇÏ·Á°í ÇÑ´Ù.ÀϹÝÀûÀ¸·Î µÎ°³ÀÇ --quick ¿É¼ÇÀ» »ç¿ëÇÏ´Â °ÍÀº º¹±¸ÀÛ¾÷
À» ¼öÇàÇϱâ À§ÇÑ µð½ºÅ© °ø°£ÀÌ °ÅÀÇ ¾øÀ» °æ¿ì¿¡¸¸ À¯¿ëÇÏ´Ù. ÀÌ·± °æ¿ì isamchk¸¦ ¼ö»ýÇϱâÀü
¿¡ ÃÖ¼ÒÇÑ ¹é¾÷À» ÇØ ³õ¾Æ¾ß ÇÑ´Ù.

{{}}
13.5.1 ¿¡·¯°¡ ³µÀ»¶§ Å×À̺í Á¡°Ë ¹æ¹ý

Å×À̺íÀ» Á¡°ËÇϱâ À§ÇØ ´ÙÀ½ÀÇ ¸í·ÉÀ» »ç¿ëÇÑ´Ù:
:
isamchk tbl_name
      ¸ðµç ¿¡·¯ÀÇ 99.99%¸¦ ¹ß°ßÇÒ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì ¹ß°ßÇÏÁö ¸øÇÏ´Â °ÍÀº µ¥ÀÌŸ ÆÄÀÏ°ú °ü
·ÃµÈ ¼Õ»óÀÌ´Ù.(ÀϹÝÀûÀ¸·Î °ÅÀÇ »ý±âÁö ¾Ê´Â´Ù) Å×À̺íÀ» Á¡°ËÇÏ°íÀÚ ÇÑ´Ù¸é ÀϹÝÀûÀ¸·Î´Â ¾Æ¹«
·± ¿É¼ÇÀ» ÁÖÁö ¾Ê°Å³ª -s ³ª --silent ¿É¼ÇÀ» ÁÖ¾î isamchk¸¦ ¼öÇàÇÏ´Â °ÍÀÌ´Ù.

isamchk -e tbl_name
      ÀÌ ¿É¼ÇÀº ¸ðµç µ¥ÀÌÅ͸¦ ¿ÏÀüÇÏ°Ô Á¡°ËÇÑ´Ù.( -e ´Â "extended check" ¸¦ ÀǹÌÇÑ´Ù) ¸ðµç
Å°°¡ Á¤È®ÇÑ ·¹Äڵ带 °¡¸®Å°°í ÀÖ´ÂÁö Á¡°ËÇÑ´Ù.It does a check-read of every key for each row to ve
rify that they indeed point to the correct row. ¸¹Àº Å°¸¦ °¡Áø Å« Å×ÀÌºí¿¡¼­´Â ½Ã°£ÀÌ ¸¹ÀÌ °É¸°´Ù. is
amchk´Â ÀϹÝÀûÀ¸·Î ù¹ø° ¿¡·¯¸¦ ¹ß°ßÇÏ¸é ½ÇÇàÀ» ¸ØÃá´Ù. ´õ ¸¹Àº Á¤º¸¸¦ ¾ò°íÀÚ ÇÑ´Ù¸é, --ver
bose (-v) ¿É¼ÇÀ» Ãß°¡ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¿É¼ÇÀ» Ãß°¡Çϸé isamchk´Â  ÃÖ´ë 20°³ÀÇ ¿¡·¯°¡ ÀÖÀ» ¶§±îÁö
°è¼Ó ½ÇÇàÀ» ÇÑ´Ù. ÀϹÝÀûÀ¸·Î´Â °£´ÜÇÑ isamchk (Å×À̺í À̸§ ¿Ü¿¡ ¾Æ¹«·± Àμöµµ ¾ø´Â)¸¸À¸·Î Ãæ
ºÐÇÏ´Ù.

isamchk -e -i tbl_name
      À§ÀÇ ¸í·É°ú °°´Ù. ±×·¸Áö¸¸ -i ¿É¼ÇÀ» ºÙÀ̸é isamchk°¡ Á¤º¸ÀÇ Åë°è¸¦ Ãâ·ÂÇÑ´Ù.


13.5.2 Å×ÀÌºí º¹±¸¹æ¹ý

¼Õ»óµÈ Å×À̺íÀÇ Â¡ÈÄ´Â ÀϹÝÀûÀ¸·Î ÁúÀÇ°¡ °©ÀÚ±â ÁßÁöµÇ°í ´ÙÀ½°ú °°Àº ¿¡·¯¸¦ ³½´Ù:
¤·`tbl_name.frm' is locked against change
¤·Can't find file `tbl_name.ISM' (Errcode: ###)
¤·Got error ### from table handler (Error 135 is an exception in this case)
¤·Unexpected end of file
¤·Record file is crashed

ÀÌ·± °æ¿ì, Å×À̺íÀ» °íÃÄ¾ß ÇÑ´Ù. isamchk´Â ÀϹÝÀûÀ¸·Î À߸øµÈ °ÍÀ» °¨ÁöÇÏ°í ´ëºÎºÐÀ» °íÄ£´Ù.

º¹±¸ °úÁ¤Àº ¾Æ·¡¿¡¼­ ¼³¸íÇϴ´ë·Î 4´Ü°è°¡ ÀÖ´Ù.½ÃÀÛÇϱâ Àü¿¡ ¸ÕÀú µ¥ÀÌŸº£À̽º µð·ºÅ丮·Î
À̵¿ÇÏ°í(cd ¸í·É ÀÌ¿ë) Å×À̺í ÆÄÀÏÀÇ Æ۹̼ÇÀ» È®ÀÎÇØ¾ß ÇÑ´Ù. mysqld¸¦ ½ÇÇàÇÒ ¼ö ÀÕ´Â À¯´Ð½º
»ç¿ëÀÚ°¡ ÀÐÀ» ¼ö ÀÖ´ÂÁö È®ÀÎÇØ¾ß ÇÑ´Ù. (¶ÇÇÑ ÀÛ¾÷À» ÇÏ·Á´Â »ç¿ëÀÚ. ¿Ö³ÄÇϸé Á¡°ËÇÏ·Á´Â ÆÄÀÏ
¿¡ Á¢±ÙÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù) ÆÄÀÏÀ» ¼öÁ¤ÇØ¾ß ÇÑ´Ù¸é ÆÄÀÏ¿¡ ¾²±â ±ÇÇÑÀÌ ÀÖ¾î¾ß ¤¾³­´Ù.

1´Ü°è : Å×À̺í Á¡°Ë

isamchk *.ISM ¶Ç´Â (ÃæºÐÇÑ ½Ã°£ÀÌ ÀÖ´Ù¸é isamchk -e *.ISM). ºÒÇÊ¿äÇÑ Á¤º¸¸¦ º¸Áö ¾ÊÀ¸·Á¸é -s (s
ilent) ¿É¼ÇÀ» »ç¿ëÇÑ´Ù.

isamchk¿¡¼­ ¿¡·¯°¡ ÀÖ´Ù°í ¾Ë¸®´Â Å×ÀÌºí¸¸ °íÃÄ¾ß ÇÑ´Ù. ÀÌ·± Å×À̺íÀÇ °æ¿ì´Â 2´Ü°è·Î ³Ñ¾î°£
´Ù.

Á¡°ËÇϸ鼭 ¿¡·¯¸¦ ¸¸³µÀ» ¶§(out of memory ¿¡·¯ µî) ¶Ç´Â isamchk°¡ ±â´ÉÀ» ¸ØÃß¾úÀ» ¶§ 3´Ü°è·Î
³Ñ¾î°£´Ù.


2´Ü°è : ½±°í ¾ÈÀüÇÑ º¹±¸

¸ÕÀú isamchk -r -r tbl_nameÀ» ½ÃµµÇÑ´Ù. (-r -q´Â "ºü¸¥ º¹±¸ ¸ðµå"¸¦ ÀǹÌ) ÀÌ°æ¿ì µ¥ÀÌŸ ÆÄÀÏÀº ¼Õ
´ëÁö ¾Ê°í À妽º ÆÄÀÏ º¹±¸¸¦ ½ÃµµÇÑ´Ù. µ¥ÀÌŸ ÆÄÀÏÀÌ Á¦´ë·Î µÇ¾î ÀÖ°í »èÁ¦ ¸µÅ©°¡ µ¥ÀÌŸ ÆÄ
Àϳ»ÀÇ Á¤È®ÇÑ À§Ä¡¸¦ °¡¸®Å°°í ÀÖ´Ù¸é, ¿øÈ°ÇÏ°Ô ÀÛµ¿À» ÇÏ°í Å×À̺íÀ» °íÄ¥ °ÍÀÌ´Ù.(If the data fi
le contains everything that it should and the delete links point at the correct locations within the data file, t
his should work and the table is fixed.) ´ÙÀ½ Å×À̺íÀ» °íÄ¡ÀÚ. ±×°Ô ¾Æ´Ï¶ó¸é ´ÙÀ½ °úÁ¤À» »ç¿ëÇÑ´Ù:

      1. ÁøÇàÇϱâ Àü¿¡ µ¥ÀÌŸ ÆÄÀÏÀÇ ¹é¾÷º» ¸¸µé±â
      2. isamchk -r tbl_name »ç¿ë.(-r ´Â "º¹±¸ ¸ðµå" ÀǹÌ) ±×·¯¸é µ¥ÀÌŸ ÆÄÀÏ¿¡¼­ Á¤È®ÇÏÁö ¾Ê
Àº ·¹ÄÚµå¿Í »èÁ¦µÈ ·¹Äڵ带 Á¦°ÅÇÏ°í À妽º ÆÄÀÏÀ» À籸¼ºÇÑ´Ù.
      3. ¾ÕÀÇ °úÁ¤ÀÌ ½ÇÆÐÇϸé, isamchk --safe_recover tbl_nameÀ» »ç¿ë. Safe recovery ¸ðµå´Â ±¸
½Ä º¹±¸ ¹æ¹ýÀ» »ç¿ëÇϸç ÀϹÝÀûÀÎ º¹±¸ ¸ðµå·Î ÇÒ ¼ö ¾ø´Â ¸î°¡Áö °æ¿ì¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.(±×·¸Áö
¸¸ ´õ ´À¸®´Ù)


Á¡°ËÇϸ鼭 ¿¡·¯¸¦ ¸¸³µÀ» ¶§(out of memory ¿¡·¯ µî) ¶Ç´Â isamchk°¡ ±â´ÉÀ» ¸ØÃß¾úÀ» ¶§ 3´Ü°è·Î
³Ñ¾î°£´Ù.


3´Ü°è : ¾î·Á¿î º¹±¸

À妽º ÆÄÀÏÀÇ Ã¹ 16k ºí¶ôÀÌ Æı«µÇ°Å³ª Á¤È®ÇÏÁö ¾ÊÀº Á¤º¸¸¦ °¡Áö°í ÀÖÀ» ¶§, ¶Ç´Â À妽º ÆÄÀÏ
ÀÌ ¾ø´Â °æ¿ì¿¡¸¸ À̹ø ´Ü°è±îÁö ¿Â´Ù. ÀÌ°æ¿ì »õ·Î¿î À妽º ÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ
ÇÏÀÚ:

      1. µ¥ÀÌŸ ÆÄÀÏÀ» ¾ÈÀüÇÑ Àå¼Ò·Î À̵¿.
      2. »õ·Î¿î(ºó) µ¥ÀÌŸ¿Í À妽º ÆÄÀÏÀ» ¸¸µé±â À§ÇØ table description ÆÄÀÏÀ» »ç¿ë:
              shell> mysql db_name
              mysql> DELETE FROM tbl_name;
              mysql> quit
      3. ÀÌÀüÀÇ µ¥ÀÌŸ ÆÄÀÏÀ» »õ·Ó°Ô ¸¸µç µ¥ÀÌÅÍ ÆÄÀÏ·Î º¹»ç. (ÀÌÀüÀÇ µ¥ÀÌŸ ÆÄÀÏÀ» »õ·Î¿î
ÆÄÀÏ·Î ¿Å±âÁö´Â ¸»ÀÚ; À߸øµÇ¾úÀ» °æ¿ì º¹»çº»À» À¯ÁöÇÏ±æ ¿øÇÒ °ÍÀÌ´Ù)

2´Ü°è·Î °¡ÀÚ. isamchk -r -q´Â ÀÌÁ¦ Á¦´ë·Î ÀÛµ¿À» ÇÒ °ÍÀÌ´Ù. (¹«ÇÑ ·çÇÁ°¡ µÇ¸é ¾ÈµÈ´Ù. This shoul
dn't be an endless loop).



4´Ü°è : ¸Å¿ì ¾î·Á¿î º¹±¸

description ÆÄÀÏ ¶ÇÇÑ ¼Õ»óÀ» ÀÔ¾úÀ» °æ¿ì¿¡¸¸ À̹ø ´Ü°è±îÁö ¿Â´Ù. description ÆÄÀÏÀº Å×À̺íÀ» ¸¸
µç ÀÌÈÄ¿¡ º¯°æÀÌ µÇÁö ¾Ê±â ¶§¹®¿¡, ÀÌ·¯ÇÑ °æ¿ì´Â °áÄÚ »ý°Ü¼­´Â ¾ÈµÈ´Ù.

      1. ¹é¾÷º»¿¡¼­ description ÆÄÀÏÀ» º¹±¸ÇØ 3´Ü°è·Î ³Ñ¾î°£´Ù. ¶ÇÇÑ À妽º ÆÄÀÏÀ» º¹±¸ÇÒ
¼ö ÀÖ°í 2´Ü°è·Î ³Ñ¾î°£´Ù. µÚÀÇ °æ¿ì isamchk -r·Î ½ÃÀÛÀ» ÇØ¾ß ÇÑ´Ù.
      2. ¹é¾÷º»ÀÌ ¾øÁö¸¸ Á¤È®È÷ ¾î¶»°Ô Å×À̺íÀ» ¸¸µé¾ú´ÂÁö ¾Ë°í ÀÖ´Ù¸é, ´Ù¸¥ µ¥ÀÌÅͺ£ÀÌ
½º¿¡ Å×À̺íÀÇ º¹»çº»À» ¸¸µç´Ù. »õ·Î¿î µ¥ÀÌŸ ÆÄÀÏÀ» Á¦°ÅÇÏ°í ´Ù¸¥ µ¥ÀÌÅͺ£À̽ºÀÇ description
°ú À妽º ÆÄÀÏÀ» ¼Õ»óµÈ µ¥ÀÌÅͺ£À̽º·Î ¿Å±ä´Ù. ÀÌ·¸°Ô ÇÏ¸é »õ·Î¿î description °ú À妽º ÆÄÀÏ
À» ¾òÀ» ¼ö ÀÖÁö¸¸ µ¥ÀÌŸ ÆÄÀϸ¸ µû·Î ³²¾ÆÀÖ´Ù. 2´Ü°è·Î °¡¼­ À妽º ÆÄÀÏÀ» À籸¼ºÇÑ´Ù.

13.5.3 Å×À̺í ÃÖÀûÈ­

·¹Äڵ带 »èÁ¦Çϰųª ¾÷±×·¹À̵å Çϸ鼭 »ý±ä ´ÜÆíÈ­µÈ ·¹Äڵ带 ¸ðÀ¸°í ºÒÇÊ¿äÇÏ°í ³¶ºñµÈ °ø°£
À» Á¦°ÅÇϱâ À§ÇØ º¹±¸ ¸ðµå·Î isamchk¸¦ ½ÇÇàÇÑ´Ù:

      shell> isamchk -r tbl_name

SQL OPTIMIZE TABLE ¹®À» ÀÌ¿ëÇÏ¿© °°Àº ¹æ¹ýÀ¸·Î Å×À̺íÀ» ÃÖÀûÈ­ÇÒ ¼ö ÀÖ´Ù. OPTIMIZE TA
BLE Àº ½±Áö¸¸ isamchk°¡ ´õ ºü¸£´Ù.

¶ÇÇÑ isamchk´Â Å×À̺íÀÇ ¼º´ÉÀ» Çâ»ó½Ãų ¼ö ÀÖ´Â ¸î°¡Áö ¿É¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù:

-S, --sort-index
      high-low ¼ø¼­·Î À妽º Æ®¸® ºí¶ôÀ» Á¤¿­. °Ë»öÀ» ÃÖÀûÈ­ÇÏ°í Å°¿¡ ÀÇÇÑ Å×ÀÌºí °Ë»öÀ»
ºü¸£°Ô ÇÑ´Ù.
-R index_num, --sort-records=index_num
      À妽º¿¡ µû¶ó ·¹Äڵ带 Á¤¿­. µ¥ÀÌŸ¸¦ Áö¿ªÈ­ÇÏ°í ÀÌ À妽º¸¦ »ç¿ëÇÏ´Â SELECT ¿Í O
RDER BY ¿ÀÆÛ·¹À̼ÇÀÇ ¼Óµµ¸¦ Çâ»ó½ÃŲ´Ù. (óÀ½¿¡´Â Á¤¿­À» ÇÏ´Â ½Ã°£ÀÌ ¾öû ´À¸®´Ù!) Å×À̺í
ÀÇ À妽º ¹øÈ£¸¦ È®ÀÎÇÏ·Á¸é SHOW INDEX¸¦ »ç¿ëÇÏ¸é µÇ¸ç, SHOW INDEX´Â isamchk°¡ À妽º
¸¦ °Ë»öÇÏ´Â ¼ø¼­´ë·Î Å×À̺íÀÇ À妽º¸¦ º¸¿©ÁØ´Ù. À妽º´Â 1¹øºÎÅÍ ¹øÈ£°¡ ¸Å°ÜÁø´Ù.
-a, --analyze
      Å×ÀÌºí¿¡¼­ Å°ÀÇ ºÐÆ÷¸¦ ºÐ¼®. ³ªÁß¿¡ Å×ÀÌºí¿¡¼­ ·¹Äڵ带 °¡Á®¿Ã ¶§ Á¶ÀÎÀÇ ¼º´ÉÀ» Çâ
»ó½ÃŲ´Ù.
15. mysql ODBC Áö¿ø


mysqlÀº MyODBC ÇÁ·Î±×·¥À» ÅëÇØ ODBC¿¡ ´ëÇÑ Áö¿øÀ» Á¦°øÇÑ´Ù.

15.1 MyODBC ¸¦ Áö¿øÇÏ´Â ¿î¿µÃ¼Á¦

MyODBC ´Â À©µµ¿ì95¿Í NT¿¡¼­ 32ºñÆ® ODBC(2.50) ·¹º§ 0 µå¶óÀ̹öÀÌ´Ù. ¿ì¸®´Â ´©±º°¡°¡ À©
µµ¿ì 3.x ¿¡ ÀÌ ÇÁ·Î±×·¥À» Æ÷ÆÃÇØÁÖ±æ ¹Ù¶õ´Ù.
(** ´ç±Ù, Àú´Â ´É·Â¾ÈµÊ **)


15.2 MyODBC¿¡ ¹®Á¦°¡ ÀÖ´Â °æ¿ì

ODBC´Â ¾×¼¼½º, Admndemo.exe, C++-ºô´õ, Centura Team Developer (formerly Gupta SQL/Win
dows), ÄݵåÇ»Àü(¼Ö¶ó¸®½º¿ë), Å©¸®½ºÅ» ·¹Æ÷Æ®, µ¨ÆÄÀÌ, ¿¢¼¿, iHTML, FileMaker Pro, Æø
½ºÇÁ·Î, ³ëÃ÷ Notes 4.5/4.6, SBSS, perl DBD-ODBC, ÆĶ󵶽º, ÆÄ¿öºô´õ, VC++, ºñÁÖ¾ó º£
ÀÌÁ÷¿¡¼­ Å×½ºÆõǾú´Ù.

MyODBC ¿¡¼­ Àß ÀÛµ¿ÇÏ´Â ´Ù¸¥  ¾ÖÇø®ÄÉÀ̼ÇÀÌ ÀÖÀ¸¸é myodbc@tcx.se ¿¡ ¸ÞÀÏÀ»  º¸³»ÁÖ¼¼
¿ä~ (** ÀÌÁ¤µµ´Â ÇØ ÁÖ¾î¾ß ¼­·Î¼­·Î ÁÁ°ÚÁö¿ë**)

¾î·Á¿ò¿¡ ºÎµúÄ¡¸é, ODBC ¸Å´ÏÀú¿¡¼­ÀÇ ·Î±× ÆÄÀÏ°ú MyODBC ·Î±×¿¡ ´ëÇؼ­ ¾Ë°í ½Í´Ù. ÀÌ·±
ÆÄÀÏÀÌ ÀÖÀ¸¸é ¹®Á¦¸¦ Á¶±ÝÀ̳ª¸¶ ÁÙÀ̴µ¥ µµ¿òÀÌ µÉ °ÍÀÌ´Ù.

MyODBC log ÆÄÀÏÀ» ¾òÀ¸·Á¸é MyODBC ¿¬°á/¼³Á¤ È­¸éÀÇ 'Trace MyODBC' ¿É¼Ç¿¡ üũ¸¦ ÇÑ´Ù.
·Î±×´Â `c:\myodbc.log' ¿¡ ±â·ÏµÉ °ÍÀÌ´Ù. ÀÌ ¿É¼ÇÀÌ Á¦´ë·Î ÀÛµ¿ÇÏ·Á¸é MYSQL2.DLL ÀÌ ¾Æ
´Ï¶ó MYSQL.DLL À» »ç¿ëÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ!


15.3 MyODBC ¿Í Àß ÀÛµ¿ÇÏ´Â ÇÁ·Î±×·¥

´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº myodbc ¿Í Àß ÀÛµ¿ÇÑ´Ù. ±×·¸Áö¸¸ ¾Æ·¡ÀÇ °¢ ¸ñ·Ï¿¡ ÀÖ´Â °ÍÀº ¿ì¸®°¡
Á÷Á¢ Å×½ºÆÃÇÏ¿´°Å³ª ´Ù¸¥ »ç¶÷µéÀÌ Á¦´ë·Î ÀÛµ¿ÇÑ´Ù°í È®ÁõÇØ ÁØ °ÍÀÌ´Ù::

¤·¾×¼¼½º
¾×¼¼½º¿Í´Â Àß ÀÛµ¿ÇÑ´Ù:
      - Å×ÀÌºí¿¡¼­ ÇÁ¶óÀ̸Ӹ® Å°¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
      - ¾÷µ¥ÀÌÆ®°¡ µÇ±æ ¿øÇÏ´Â ¸ðµç Å×ÀÌºí¿¡ timestamp¸¦ °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.
      - double float Çʵ常À» »ç¿ëÇØ¾ß ÇÑ´Ù. single floats ¿Í ºñ±³¸¦ ÇÏ¸é ½ÇÆÐÇÑ´Ù.
      - mysql¿¡ ¿¬°áÇÒ ¶§ 'Return matching rows' ¿É¼Ç Çʵ忡 üũ¸¦ ÇÏÀÚ.
      - NT¿¡¼­ÀÇ ¾×¼¼½º´Â BLOB Ä÷³À» OLE OBJECTS ·Î º¸°íÇÑ´Ù. ´ë½Å MEMO Ä÷³À» °¡
Áö±æ ¿øÇϸé ALTER TABLE À» ÀÌ¿ëÇØ Ä÷³À» TEXT ·Î ¹Ù²ÙÀÚ.

¤· ¿¢¼¿
Àß ÀÛµ¿ÇÑ´Ù ¸î°¡Áö ÆÁÀÌ ÀÖ´Ù:

dates ¿¡¼­ ¹®Á¦°¡ ÀÖÀ¸¸é CONCAT() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© string À¸·Î¼­ select ¸¦ »ç¿ëÇÏÀÚ.
¿¹¸¦ µé¸é:

      select CONCAT(rise_time), CONCAT(set_time) from sunrise_sunset;


¹®ÀÚ¿­·Î¼­ °ªÀ» °¡Á®¿À¸ç ¿¢¼¿97¿¡¼­ time °ªÀÌ Á¦´ë·Î ÀÎ½ÄµÉ °ÍÀÌ´Ù.

ÀÌ ¿¹Á¦¿¡¼­ CONCAT()ÀÇ ¸ñÀûÀº ODBC°¡ Ä÷³À» "string type"À¸·Î »ý°¢Çϵµ·Ï ¼ÓÀÌ´Â °ÍÀÌ
´Ù. CONCAT() °¡ ¾øÀ¸¸é, ODBC´Â Ä÷³À» time ŸÀÔÀ¸·Î ÀνÄÇÏ¸ç ¿¢¼¿Àº ÀÌ°ÍÀ» ÀÌÇØÇϴµ¥
½ÇÆÐÇÑ´Ù.

ÀÌ°ÍÀº ¿¢¼¿ÀÇ ¹ö±×¶ó´Â °ÍÀ» ±â¾ïÇÏÀÚ. ¿¢¼¿Àº ÀÚµ¿ÀûÀ¸·Î ¹®ÀÚ¿­(string)À» timeÀ¸·Î º¯
ȯÇÑ´Ù. ¼Ò½º°¡ ÅؽºÆ® ÆÄÀÏÀ̶ó¸é Àß µÉ °ÍÀÌ´Ù. ±×·¸Áö¸¸ ¼Ò½º°¡ °¢ Ä÷³ÀÇ Á¤È®ÇÑ Å¸ÀÔ
À» º¸°íÇÏ´Â ODBC ¿¬°áÀ̶ó¸é ºÐ¸íÈ÷ ¾î¸®¼®Àº ÁþÀÌ´Ù.

¤· odbcadmin
ODBC Å×½ºÆ® ÇÁ·Î±×·¥.


¤· µ¨ÆÄÀÌ
DBE 3.2 ³ª ÀÌÈÄ ¹öÀüÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. mysql¿¡ ¿¬°áÇÒ ¶§ 'Don't optimize column width'
¿É¼Ç Çʵ忡 üũ¸¦ ÇÑ´Ù.

¹°·Ð, ¿©±â¿¡´Â myodbc ¸¦ À§ÇÑ ODBC ¸ñ·Ï°ú BDE ¸ñ·ÏÀ» ¼¼ÆÃÇϱâ À§ÇØ ÀáÀçÀûÀ¸·Î À¯¿ëÇÑ
µ¨ÆÄÀÌ Äڵ尡 ÀÖ´Ù. (BDE ¸ñ·ÏÀº µ¨ÆÄÀÌ ½´ÆÛ ÆäÀÌÁö¿¡¼­ °ø°³·Î ¹ÞÀ» ¼ö ÀÖ´Â BDE Alias
µ¥ÀÌÅ͸¦ ÇÊ¿ä·Î ÇÑ´Ù) : (Thanks to Bryan Brunton bryan@flesherfab.com for this)

fReg:= TRegistry.Create;
        fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);
        fReg.WriteString('Database', 'Documents');
        fReg.WriteString('Description', ' ');
        fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
        fReg.WriteString('Flag', '1');
        fReg.WriteString('Password', ");
        fReg.WriteString('Port', ' ');
        fReg.WriteString('Server', 'xmark');
        fReg.WriteString('User', 'winuser');
        fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
        fReg.WriteString('DocumentsFab', 'MySQL');
        fReg.CloseKey;
        fReg.Free;

        Memo1.Lines.Add('DATABASE NAME=');
        Memo1.Lines.Add('USER NAME=');
        Memo1.Lines.Add('ODBC DSN=DocumentsFab');
        Memo1.Lines.Add('OPEN MODE=READ/WRITE');
        Memo1.Lines.Add('BATCH COUNT=200');
        Memo1.Lines.Add('LANGDRIVER=');
        Memo1.Lines.Add('MAX ROWS=-1');
        Memo1.Lines.Add('SCHEMA CACHE DIR=');
        Memo1.Lines.Add('SCHEMA CACHE SIZE=8');
        Memo1.Lines.Add('SCHEMA CACHE TIME=-1');
        Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
        Memo1.Lines.Add('SQLQRYMODE=');
        Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE');
        Memo1.Lines.Add('ENABLE BCD=FALSE');
        Memo1.Lines.Add('ROWSET SIZE=20');
        Memo1.Lines.Add('BLOBS TO CACHE=64');
        Memo1.Lines.Add('BLOB SIZE=32');

        AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);


¤· C++ºô´õ
BDE 3.0°ú Å×½ºÆÃÀ» Çß´Ù. À¯ÀÏÇÏ°Ô ¾Ë·ÁÁø ¹®Á¦´Â Å×ÀÌºí ½ºÅ°¸¶¸¦ º¯°æÇÒ ´ë·Î ÁúÀÇ Çʵå
°¡ ¾÷µ¥ÀÌÆ®µÇÁö ¾Ê´Â´Ù. ±×·±µ¥ BDE´Â ¹®Á¦´Â ¾Æ´Ñ °Í °°Áö¸¸ index PRIMARY ¿¡¼­¸¸ ÇÁ¶ó
À̸Ӹ® Å°¸¦ ÀνÄÇÏÁö ¸øÇÏ´Â °ÍÀ¸·Î º¸ÀδÙ.
Tested with BDE 3.0. The only known problem is that when the table schema changes, q
uery fields are not updated. BDE however does not seem to recognize primary keys, onl
y the index PRIMARY, though this has not been a problem.


¤· ºñÁÖ¾ó º£ÀÌÁ÷
Å×À̺íÀ» ¾÷µ¥ÀÌÆ® °¡´ÉÇÏ°Ô ÇÏ·Á¸é Å×À̺íÀÇ ÇÁ¶óÀ̸Ӹ® Å°¸¦ Á¤ÀÇÇØ¾ß ÇÑ´Ù.
(** ÀÌ ºÎºÐÀº Á¦°¡ Ãâ·ÂÇÑ ps ÆÄÀÏ¿¡´Â ¾ø´Âµ¥ À¥»çÀÌÆ®¿¡´Â Àֳ׿ä... **)
{{}}


15.4 ODBC °ü¸®ÀÚ ÇÁ·Î±×·½ ¼³Á¤ ¹æ¹ý

À©µµ¿ì 95¿¡¼­ ¼­¹öÀÇ À̸§À» ÁöÁ¤ÇÏ´Â °Í¿¡´Â ¼¼°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù:

- ¼­¹öÀÇ IP ÁÖ¼Ò »ç¿ë.
-'lmhosts' ÆÄÀÏ¿¡ ´ÙÀ½ÀÇ Á¤º¸ Ãß°¡:
      ip hostname
¿¹¸¦ µé¸é
      194.216.84.21 my
- DNS¸¦ »ç¿ëÇÏ¿© PC¸¦ ¼³Á¤

"ODBC setup" À» ä¿ì´Â ¿¹Á¦:

Windows DSN name:   taejun
Description:        This is my love database
MySql Database:     love
Server:             194.216.84.21
User:               taejun
Password:           my_password
Port:

À©µµ¿ìÁî DSN À̸§ ÇʵåÀÇ °ªÀº À©µµ¿ìÁî ODBC ¼Â¾÷¿¡¼­ À¯ÀÏÇÑ °ªÀÌ´Ù.

ODBC ¼Â¾÷ È­¸é¿¡¼­ ¼­¹ö, À¯Àú, Æнº¿öµå, Æ÷µå Çʵ忡 °ªÀ» ÁöÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù. ±×·¯³ª
ÁöÁ¤À» ÇØµÎ¸é ±× °ªÀÌ ¿¬°áÀ» ½ÃµµÇÒ ¶§ ±âº»°ªÀ¸·Î »ç¿ëµÈ´Ù. ±×¶§¸¶´Ù °ªÀ» ¹Ù²Ü ¼ö ÀÖ
´Ù.

Æ÷Æ® ¹øÈ£°¡ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é, ±âº» Æ÷Æ®(3306)ÀÌ »ç¿ëµÈ´Ù.


15.5 ODBC¿¡¼­ AUTO_INCREMENT Ä÷³ÀÇ °ª °¡Á®¿À±â

ÀϹÝÀûÀÎ ¹®Á¦´Â INSERT ¿¡¼­ ¾î¶»°Ô ÀÚµ¿À¸·Î »ý¼ºµÇ´Â ID °ªÀ» °¡Á®¿Ã ¼ö ÀÖ´À³ÄÀÌ´Ù. OD
BC¿¡¼­ ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ´Ù. (auto °¡ AUTO_INCREMENT Çʵå¶ó°í °¡Á¤):

INSERT INTO foo (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();

¶Ç´Â, ´Ù¸¥ Å×ÀÌºí¿¡ ID¸¦ ÀÔ·ÂÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ´Ù:

INSERT INTO foo (auto,text) VALUES(NULL,'text');
INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'text');

´Ù¸¥ ODBC ¾ÖÇø®ÄÉÀ̼Ç(ÃÖ¼ÒÇÑ µ¨ÆÄÀÌ¿Í ¾×¼¼½º)¿¡¼­ À¯¿ëÇÏ°Ô »ç¿ëÇϱâ À§ÇØ ´ÙÀ½ÀÇ ÁúÀÇ
¸¦ »õ·Ó°Ô ÀÔ·ÂµÈ ¿­À» ã´Âµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù:

SELECT * FROM tbl_name WHERE auto IS NULL;
17. ÀϹÝÀûÀÎ ¹®Á¦ ÇØ°á ¹æ¹ý

17. 1. µ¥ÀÌÅͺ£À̽º º¹»ç(º¹Á¦?)

µ¥ÀÌÅͺ£À̽º¸¦ º¹»çÇÏ´Â °¡Àå ÀϹÝÀûÀÎ ¹æ¹ýÀº ¾÷µ¥ÀÌÆ® ·Î±×¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. 9.2 [Th
e update log] Âü°í. ÀÌ °æ¿ì ¸¶½ºÅÍ·Î ÀÛµ¿ÇÏ´Â µ¥ÀÌÅͺ£À̽º Çϳª(µ¥ÀÌÅÍ°¡ º¯°æµÈ °÷)¿Í
½½·¹À̺ê·Î ÀÛµ¿ÇÏ´Â ´Ù¸¥ ÇϳªÀÇ µ¥ÀÌÅͺ£À̽º°¡ ÇÊ¿äÇÏ´Ù. ½½·¹À̺긦 ¾÷µ¥ÀÌÆ®ÇÏ·Á¸é ´Ü
Áö mysql < update_logÀ» ÇÏ¸é µÈ´Ù. ½½·¹ÀÌµå µ¥ÀÌÅͺ£À̽º¿¡ ¸Â´Â È£½ºÆ®, À¯Àú, Æнº¿ö
µå ¿É¼ÇÀ» ÁöÁ¤ÇÑ´Ù. ±×¸®°í ÀԷ°ªÀ¸·Î ¸¶½ºÅÍ µ¥ÀÌÅͺ£À̽ºÀÇ ¾÷µ¥ÀÌÆ® ·Î±×¸¦ »ç¿ëÇÑ´Ù.

Å×ÀÌºí¿¡¼­ »èÁ¦ÇÑ °ÍÀÌ ¾ø´Ù¸é, ¸¶Áö¸·À¸·Î º¹»ç¸¦ ÇÑ ÈÄ (¸¶Áö¸·À¸·Î º¹»çÇÑ ½Ã°£À» ºñ
±³) Å×ÀÌºí¿¡¼­ ÀԷµǰųª º¯°æµÈ ¿­À» ã¾Æ³»±â À§ÇØ TIMESTAMP Ä÷³À» »ç¿ëÇÒ ¼ö ÀÖ°í
¹Ì·¯¸µµÇ´Â µ¥ÀÌÅͺ£À̽º¿¡ º¯°æµÈ ÀڷḸ º¹»ç¸¦ ÇÑ´Ù.

¾÷µ¥ÀÌÆ® ·Î±×(for deletes)¿Í timestamps(on both sides)¸¦ °°ÀÌ »ç¿ëÇÏ¿© µÎ°¡Áö ¹æ¹ýÀ¸
·Î ¾÷µ¥ÀÌÆ®ÇÏ´Â ½Ã½ºÅÛÀ» ¸¸µé ¼ö ÀÖ´Ù. ±×·¯³ª ÀÌ·± °æ¿ì µÎ°¡Áö ends(?)¿¡¼­ º¯°æµÈ µ¿
ÀÏÇÑ µ¥ÀÌÅÍ¿¡¼­ Ãæµ¹À» °ü¸®ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¾Æ¸¶µµ ¾î¶² °ÍÀÌ ¾÷µ¥ÀÌÆ®µÇ¾ú´ÂÁö °áÁ¤
Çϱâ À§ÇØ ¿¹Àü ¹öÀüÀ» À¯ÁöÇÏ°í ½ÍÀ» °ÍÀÌ´Ù.

It is possible to make a two-way updating system using both the update log (for delet
es) and timestamps (on both sides). But in that case you must be able to handle confl
icts when the same data have been changed in both ends. You probably want to keep the
old version to help with deciding what has been updated.

ÀÌ °æ¿ì º¹»ç(º¹Á¦)´Â SQL¹®À¸·Î ÀÌ·ç¾îÁö±â ¶§¹®¿¡, µ¥ÀÌÅͺ£À̽º¸¦ ¾÷µ¥ÀÌÆ®ÇÏ´Â ¹®Àå¿¡
¼­ ´ÙÀ½ÀÇ ÇÔ¼ö¸¦ »ç¿ëÇؼ­´Â ¾ÈµÈ´Ù; ¿©±â¿¡¼­´Â ¿øº» µ¥ÀÌÅͺ£À̽º¿Í µ¿ÀÏÇÑ °ªÀ» ¹ÝȯÇÏ
Áö ¾ÊÀ» ¼ö ÀÖ´Ù:

   DATABASE()
   GET_LOCK() and RELEASE_LOCK()
   RAND()
   USER(), SYSTEM_USER() or SESSION_USER()
   VERSION()

timestamp´Â ÇÊ¿äÇÑ °æ¿ì¿¡ ¹Ì·¯µÇ´Â °÷À¸·Î º¸³»±âÁö ¶§¹®¿¡ ¸ðµç time ÇÔ¼ö´Â ¾ÈÀüÇÏ°Ô
»ç¿ëÇÒ ¼ö ÀÖ´Ù. LAST_INSERT_ID() ¶ÇÇÑ ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù.

All time functions are safe to use, as the timestamp is sent to the mirror if needed.
LAST_INSERT_ID() is also safe to use.


17.2 µ¥ÀÌÅͺ£À̽º ¹é¾÷

mysql Å×À̺íÀº ÆÄÀÏ·Î ÀúÀåµÇ±â ¶§¹®¿¡ ¹é¾÷ÇϱⰡ ½±´Ù.  ÀÏ°üµÈ ¹é¾÷ ÀÛ¾÷À» À§ÇØ
°ü·ÃµÈ Å×ÀÌºí¿¡ LOCK TABLES¸¦ ½ÇÇàÇÏÀÚ. 7.23 [LOCK TABLES/UNLOCK TABLES synta
x]¸¦ Âü°í. ´ÜÁö Àб⠶ô¸¸ÀÌ ÇÊ¿äÇÏ´Ù; µ¥ÀÌÅͺ£À̽º µð·ºÅ丮ÀÇ ÆÄÀÏ º¹»çº»À» ¸¸µå
´Â µ¿¾È¿¡µµ ´Ù¸¥ ½º·¹µå¿¡¼­´Â Å×ÀÌºí¿¡ ÁúÀǸ¦ °è¼Ó ÇÒ ¼ö ÀÖ´Ù. SQL ·¹º§ÀÇ ¹é¾÷À»
ÇÏ°íÀÚ ÇÑ´Ù¸é SELECT INTO OUTFILEÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

µ¥ÀÌÅͺ£À̽º¸¦ ¹é¾÷ÇÏ´Â ´Ù¸¥ ¹æ¹ýÀº mysqldump ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â °ÍÀÌ´Ù:

µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ Ç® ¹é¾÷ ½ÇÇà:
   
shell> mysqldump --tab=/path/to/some/dir --lock-tables --opt
   
   ¼­¹ö¿¡¼­ ¾÷µ¥ÀÌÆ®¸¦ ÇÏÁö ¾Ê´ÂÇÑ °£´ÜÇÏ°Ô ¸ðµç Å×À̺í ÆÄÀÏ(`*.frm', `*.ISD' , `*.
   ISM' ÆÄÀÏ)À» º¹»çÇÒ ¼ö ÀÖ´Ù. mysqld°¡ ½ÇÇàµÇ°í ÀÖÀ¸¸é ¸ØÃß¾î¾ß ÇÑ´Ù. ±×·¯°í³ª¼­
   --log-update ¿É¼ÇÀ¸·Î ´Ù½Ã ½ÃÀÛÇÏÀÚ. ''hostname.n'ÀÇ Çü½ÄÀ» °¡Áø ·Î±× ÆÄÀÏÀÌ »ý
   ¼ºµÉ °ÍÀÌ´Ù. nÀº mysqladmin refresh, mysqladmin flush-logs, the FLUSH LOGS ¹®,
   ¶Ç´Â ¼­¹ö¸¦ Àç½ÃÀÛÇÒ¶§¸¶´Ù Áõ°¡ÇÏ´Â ¼ýÀÚÀÌ´Ù. ÀÌ·¸°Ô »ý±ä ·Î±× ÆÄÀÏÀ» ÀÌ¿ëÇØ mys
   qldump¸¦ ¼öÇàÇÏ°í ³ª¼­ µ¥ÀÌÅͺ£À̽º¿¡ º¯È­µÈ ³»¿ëÀ» º¹»ç(º¹Á¦)Çϴµ¥ ÇÊ¿äÇÑ Á¤º¸
   ¸¦ ¾òÀ» ¼ö ÀÖ´Ù.
   
º¹¿øÇÏ°íÀÚ ÇÑ´Ù¸é, ¸ÕÀú isamchk -rÀ» »ç¿ëÇØ Å×À̺íÀ» º¹±¸ÇÏÀÚ. ¸ðµç °æ¿ì 99.9%°¡ Á¦´ë
·Î ¼öÇàµÈ´Ù. isamchk°¡ ½ÇÆÐÇÏ¸é ´ÙÀ½ÀÇ °úÁ¤´ë·Î µû¸£ÀÚ:

      
   ±âÁ¸ÀÇ mysqldump ¹é¾÷À» º¹¿øÇÑ´Ù.
   ¾÷µ¥ÀÌÆ® ·Î±×¿¡¼­ ¾÷µ¥ÀÌÆ®¸¦ ´Ù½Ã ¼öÇàÇϱâ À§ÇØ ´ÙÀ½ÀÇ ¸í·ÉÀ» ½ÇÇàÇÑ´Ù:
   
shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql

ls´Â Á¤È®ÇÑ ¼ø¼­´ë·Î ·Î±× ÆÄÀÏÀ» °¡Á®¿À´Âµ¥ »ç¿ëµÈ´Ù.

¶ÇÇÑ SELECT * INTO OUTFILE 'file_name' FROM tbl_nameÀ» ÀÌ¿ëÇØ ¼±ÅÃÀûÀÎ ¹é¾÷À» ÇÒ ¼ö
ÀÖÀ¸¸ç ·¹Äڵ尡 Áߺ¹µÇ´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ  LOAD DATA INFILE 'file_name' REPLACE ...  
À» ÀÌ¿ëÇØ º¹¿øÇÒ ¼ö ÀÖ´Ù. ÀÌ°æ¿ì¿¡´Â Å×ÀÌºí¿¡¼­ PRIMARY Å°³ª UNIQUE Å°°¡ ÇÊ¿äÇÏ´Ù. RE
PLACE Å°¿öµå´Â »õ·Î¿î ·¹Äڵ忡¼­ unique Å° °ªÀÌ °°Àº ÀÌÀüÀÇ ·¹Äڵ尡 Áߺ¹µÇ´Â °æ¿ì ÀÌ
ÀüÀÇ ·¹Äڵ带 »õ·Î¿î ·¹ÄÚµå·Î ±³Ã¼ÇÑ´Ù.


17.3 °°Àº ¸Ó½Å¿¡¼­ ¿©·¯°³ÀÇ mysqld ¼­¹ö ½ÇÇàÇϱâ
°°Àº ¸Ó½Å¿¡¼­ ´ÙÁßÀÇ ¼­¹ö¸¦ »ç¿ëÇÏ±æ ¿øÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ÀÌÀüÀÇ ¼­¹ö¸¦ ±×´ë
·Î µÎ°í »õ·Î¿î mysql ¸±¸®Á Å×½ºÆÃÇÏ´Â °æ¿ì°¡ ÀÖÀ» ¼ö ÀÖ´Ù. ¶Ç´Â ´Ù¸¥ °í°´µé
¿¡°Ô µ¶¸³ÀûÀÎ mysql ¼³Ä¡¸¦ Á¦°øÇÏ±æ ¿øÇÏ´Â ÀÎÅÍ³Ý ¼­ºñ½º Á¦°øÀÚÀÏ ¼ö ÀÖ´Ù.

´ÙÁß ¼­¹ö¸¦ »ç¿ëÇÏ±æ ¿øÇϸé, °¡Àå ½¬¿î ¹æ¹ýÀº ´Ù¸¥ TCP/IP Æ÷Æ®¿Í ¼ÒÄÏ ÆÄÀÏ·Î ¼­¹ö¸¦
ÄÄÆÄÀÏÇؼ­ ¼­¹ö¿¡¼­ µ¿ÀÏÇÑ TCP/IP Æ÷Æ®³ª ¼ÒÄÏ ÆÄÀÏÀ» ûÃëÇÏÁö ¾Êµµ·Ï ÇÒ ¼ö ÀÖ´Ù.

ÀÌ¹Ì »ç¿ëÇÏ°í ÀÖ´Â ¼­¹ö°¡ ±âº» Æ÷Æ®¿Í ¼ÒÄÏ ÆÄÀÏ·Î ±¸¼ºµÇ¾î ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ. ±×·¯¸é
´ÙÀ½°ú °°Àº ¸í·ÉÀ¸·Î »õ·Î¿î ¼­¹ö¸¦ ¼³Á¤ÇÏÀÚ:

shell> ./configure  --with-tcp-port=port_number \
           --with-unix-socket=file_name \
           --prefix=/usr/local/mysql-3.22.9

¿©±â¼­ port_number¿Í file_nameÀº ±âº» Æ÷Æ® ¼ýÀÚ ¹× ¼ÒÄÏ ÆÄÀÏÀÇ °æ·Î¿Í´Â ´Þ¶ó¾ßÇϸç, -
-prefix °ªÀº ÇöÀç ¼³Ä¡µÇ¾î ÀÖ´Â mysql°ú´Â ´Ù¸¥ µð·ºÅ丮¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.

Here port_number and file_name should be different than the default port number and s
ocket file pathname, and the --prefix value should specify an installation directory
different than the one under which the existing MySQL installation is located.

´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î ÇöÀç ½ÇÇàµÇ°í ÀÖ´Â mysql ¼­¹öÀÇ ¼ÒÄÏ°ú ÆÄÀÏÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù:

shell>; mysqladmin -h hostname --port port_number variables

»ç¿ëÇÏ°í ÀÖ´Â Æ÷Æ®¿¡¼­ ½ÇÇàµÇ°í ÀÖ´Â mysql ¼­¹ö°¡ ÀÖ´Ù¸é, ¼ÒÄÏ À̸§À» Æ÷ÇÔÇØ mysqlÀÇ
°¡Àå Áß¿äÇÑ ¼³Á¤ º¯¼öÀÇ ¸ñ·ÏÀ» ¾Ë ¼ö ÀÖ´Ù. ´ÙÁß mysqld ¼­¹ö¸¦ ½ÃÀÛÇÏ°í ÁßÁö½ÃÅ°±â À§
ÇØ ½Ã½ºÅÛÀÇ ÃʱâÈ­ ½ºÅ©¸³Æ®(ÀϹÝÀûÀ¸·Î ''mysql.server')¸¦ ¼öÁ¤ÇØ¾ß ÇÑ´Ù.

´Ù¸¥ Æ÷Æ®¿Í ¼ÒÄÏÀ¸·Î ¼­¹ö¸¦ ½ÃÀÛÇϱâ À§ÇØ »õ·Î¿î mysql ¼­¹ö¸¦ ÀçÄÄÆÄÀÏÇÒ ÇÊ¿ä´Â ¾ø´Ù.
safe_mysqld¸¦ ½ÃÀÛÇÒ ¶§ ¿É¼ÇÀ¸·Î Æ÷Æ®¿Í ¼ÒÄÏÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù:

shell>; /path/to/safe_mysqld --socket=file-name --port=file-name

µ¿ÀÏÇÑ µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¿¡¼­ ·Î±×¸¦ ±â·ÏÇϵµ·Ï Çϸ鼭 ¶Ç ´Ù¸¥ ¼­¹ö¸¦ ½ÇÇàÇÏ°íÀÚ
ÇÑ´Ù¸é, safe_mysqld ¿¡ --log ¿Í --log-update ¸¦ ÀÌ¿ëÇØ ·Î±× ÆÄÀÏÀÇ À̸§À» ÁöÁ¤ÇØ ÁÖ¾î
¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é µÎ ¼­¹ö°¡ °°Àº ·Î±× ÆÄÀÏ¿¡ ±â·ÏÀ» ÇÏ·Á°í ÇÒ °ÍÀÌ´Ù.

ÁÖÀÇ : ÀϹÝÀûÀ¸·Î µ¿ÀÏÇÑ µ¥ÀÌÅͺ£À̽ºÀÇ ÀڷḦ ¾÷µ¥ÀÌÆ®ÇÏ´Â µÎ°³ÀÇ ¼­¹ö¸¦ »ç¿ëÇؼ­´Â
¾ÈµÈ´Ù! ¿î¿µÃ¼Á¦¿¡¼­ fault-free ½Ã½ºÅÛ ·ÎÅ·(locking)À» Áö¿øÇÏÁö ¾Ê´Â´Ù¸é,  ÁÁÁö ¾ÊÀº
°á°ú¸¦ º¸°Ô µÉ °ÍÀÌ´Ù. (** fault-free¶õ Á¤È®È÷ ¹«¾ùÀÎÁö ¸ð¸£°Ú±º¿ä. ¾Æ¸¶µµ ¶ôÀ» °Å´Â
µ¥ ¹®Á¦°¡ ÀÖ´Ù¸é ±× ¶ôÀ» ÇØÁ¦ÇÏ´Â °ÍÀ¸·Î º¸ÀÔ´Ï´Ù. **)

µÎ¹øÀç ¼­¹ö¿¡¼­ ´Ù¸¥ µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¸¦ »ç¿ëÇϱ⠿øÇϸé safe_mysqld ¿¡ --datadir
=path ¿É¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

´Ù¸¥ Æ÷Æ®¿¡¼­ ½ÇÇàÁßÀÎ mysql ¼­¹ö¿¡ Á¢±ÙÇÏ±æ ¿øÇÑ´Ù¸é ´ÙÀ½ÀÇ ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù:

      ¤· Ŭ¶óÀ̾ðÆ®¿¡¼­ ´ÙÀ½ÀÇ ¿É¼ÇÀ» °¡Áö°í ½ÃÀÛ. --host 'hostname'  --port=port-n
umer or [--host localhost] --socket=file-name.
      ¤· C³ª ÆÞ ÇÁ·Î±×·¥¿¡¼­ mysql ¼­¹ö¿¡ Á¢¼ÓÇÒ ¶§ Æ÷Æ®¿Í ¼ÒÄÏ ÀÎÀÚ¸¦ ÁØ´Ù.
      ¤· Ŭ¶óÀ̾ðÆ®¸¦ ½ÃÀÛÇϱâ Àü¿¡ MYSQL_UNIX_PORT ¿Í MYSQL_TCP_PORT ȯ°æ º¯¼ö¸¦
¼³Á¤. ÀϹÝÀûÀ¸·Î ƯÁ¤ÇÑ ¼ÒÄÏÀ̳ª Æ÷Æ®¸¦ »ç¿ëÇϸé,  'login' ÆÄÀÏ¿¡ ȯ°æ º¯¼ö¸¦ ¼³Á¤ÇÏ
ÀÚ. 12.1 [Programs] Âü°í.
      ¤· Ȩ µð·ºÅ丮¿¡¼­ '.my.cnf' ÆÄÀÏ¿¡ ±âº» ¼ÒÄÏ°ú TCP/IP ¼ÒÄÏÀ» ÁöÁ¤.  4.15.4
[Option files] Âü°í.





18 MySQL client tools and APIs

18.1 MySQL C API

C API ÄÚµå´Â MYSQL¿¡ ÇÔ²² ¹èÆ÷µÇ¸ç, ÀÌ°ÍÀº mysqlclient ¶óÀ̺귯¸®¿¡ Æ÷ÇԵǾîÁ® C ÇÁ
·Î±×·¥À¸·Î ÇÏ¿©±Ý µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. MySQL ¼Ò½º ¹èÆ÷ÆÇÀÇ ¸¹Àº
Ŭ¶óÀ̾ðÆ®µéÀÌ C·Î ÄÚµùµÇ¾î ÀÖÀ¸¸ç, C API¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ¼³¸íÀ» ã°íÀÚ ÇÒ ¶§
ÀÌ Å¬¶óÀ̾ðÆ®µéÀÇ Äڵ带 ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.

18.2 C API datatypes
-----------------------------------------------------------------------------------------
|µ¥ÀÌÅÍ Çü½Ä      | ¼³¸í |
-----------------------------------------------------------------------------------------
|  MYSQL      | µ¥ÀÌÅÍ º£À̽º¿ÍÀÇ ÇϳªÀÇ ¿¬°áÀ» ´Ù·ç´Â ±¸Á¶Ã¼·Î¼­ °ÅÀÇ ¸ðµç     |
|      | MySQL ÇÔ¼öµé¿¡¼­ »ç¿ëµÈ´Ù. |
-----------------------------------------------------------------------------------------
|  MYSQL_RES      | ÇàÀ» ¸®ÅÏÇÏ´Â ÁúÀǵé(SELECT, SHOW, DESCRIBE, EXPLAIN)ÀÇ °á |
|      | °ú¸¦ Ç¥ÇöÇÏ´Â ±¸Á¶Ã¼·Î¼­ ¾î¶² ÁúÀÇÀÇ °á°ú·Î¼­ ¸®ÅϵǴ Á¤º¸µé   |
|      | À» °á°ú ¼Â(result set)À̶ó°í ºÎ¸¥´Ù. |
-----------------------------------------------------------------------------------------
|  MYSQL_ROW      | ÇÑ ÇàÀÇ µ¥ÀÌÅ͸¦ Ç¥ÇöÇÏ´Â µ¥ÀÌÅÍ Çü½ÄÀÌ´Ù. ÇöÀç ÀÌ°ÍÀº counted  |
|      | byte stringµéÀÇ ¹è¿­·Î ±¸ÇöµÇ¾î ÀÖ´Ù. Çʵ尪ÀÌ ÀÌÁø µ¥ÀÌÅ͸¦ Æ÷ |
|      | ÇÔÇÒ ¼ö ÀÖ´Â °æ¿ì¿¡´Â °ª ³»ºÎ¿¡ null ¹ÙÀÌÆ®¸¦ °¡Áö°í ÀÖÀ» ¼ö    |
|      | Àֱ⠶§¹®¿¡ ÀÌ µ¥ÀÌÅÍ Çü½ÄÀ» null-terminated stringÀ¸·Î ´Ù·ê ¼ö |
|      | ¾ø´Ù. ÇàµéÀº mysql_fetch_row() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ¾ò¾î¿Ã ¼ö ÀÖ |
|      | ´Ù. |
-----------------------------------------------------------------------------------------
|  MYSQL_FIELD      | ÇÊµå ¸í, Çü½Ä, Å©±â¿Í °°Àº Çʵ忡 ´ëÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â ±¸Á¶Ã¼ |
|      | ÀÌ´Ù. ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡¿¡¼­ »ó¼¼È÷ ±â¼úµÈ´Ù. °¢°¢ÀÇ ÇÊ  |
|      | µå¿¡ ´ëÇÏ¿© mysql_fetch_field() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á °¢ Çʵ忡 ´ë|
|      | ÇÑ MYSQL_FIELD ±¸Á¶Ã¼ÀÇ °ªÀ» ¾òÀ» ¼ö ÀÖ´Ù. Çʵ忡 µé¾îÀÖ´Â      |  
|      | ½ÇÁ¦ °ªÀº ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö°¡ ¾Æ´Ï¸ç, ½ÇÁ¦ µ¥ÀÌÅÍ´Â |
|      | MYSQL_ROW ±¸Á¶Ã¼¿¡ µé¾î°¡°Ô µÈ´Ù. |
-----------------------------------------------------------------------------------------
|  MYSQL_FIELD_OFFSET | MySQL ÇÊµå ¸®½ºÆ®¿¡ µé¾î°¡´Â º¯À§(offset)À» Ç¥ÇöÇÏ´Â type-safe  |
|      | Çü½ÄÀÌ´Ù(mysql_field_seek() ÇÔ¼ö¿¡¼­ »ç¿ëµÈ´Ù). OffsetÀº Çà ³»¿¡|
|      | ¼­ÀÇ ÇʵåÀÇ °³¼öÀ̸ç 0¿¡¼­ ½ÃÀÛÇÑ´Ù. |
-----------------------------------------------------------------------------------------
|  my_ulonglong      | ÇàµéÀÇ °³¼ö, mysql_affected_rows(), mysql_num_rows(), |
|      | mysql_insert_id() ÇÔ¼ö¿¡¼­ »ç¿ëµÇ´Â Çü½ÄÀÌ´Ù. ÀÌ Çü½ÄÀº 0¿¡¼­   |
|      | 1.84e19±îÁöÀÇ °ªÀ» °¡Áú ¼ö ÀÖ´Ù. ¾î¶² ½Ã½ºÅÛ¿¡¼­´Â |
|      | my_ulonglong Çü½ÄÀÇ °ªÀ» Ãâ·ÂÇϴµ¥ ¹®Á¦°¡ ÀÖÀ» ¼ö Àִµ¥, ÀÌ   |
|      | °æ¿ì¿¡ ÀÌ °ªÀ» Ãâ·ÂÇϱâ À§Çؼ­´Â ÀÌ°ÍÀ» unsigned long Çü½ÄÀ¸·Î  |
|            | º¯È¯ÇÑ ÈÄ '%lu' ÇÁ¸°Æ® Çü½ÄÀ» »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù:  |
|      | |
|      | printf (Number of rows: %lu\n", (unsigned long) \ |
|      | mysql_num_rows(result)); |
-----------------------------------------------------------------------------------------

MYSQL_FIELD ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°Àº ¸â¹öµéÀ» °¡Áø´Ù:

char * name
- ÇʵåÀÇ À̸§

char * table
- ÀÌ Çʵ尡 °è»êµÈ Çʵå(calculated field)°¡ ¾Æ´Ñ °æ¿ì, ÀÌ Çʵ带 °¡Áö°í ÀÖ´Â
Å×À̺íÀÇ À̸§. °è»êµÈ ÇʵåÀÎ °æ¿ì NULL Æ÷ÀÎÅ͸¦ °¡Áø´Ù

char * def
- ÀÌ ÇʵåÀÇ µðÆúÆ® °ª(mysql_list_fields() ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡¸¸ ¼³Á¤µÈ´Ù)

enum enum_field_types type
- ÇʵåÀÇ Çü½Ä(type). Çʵå Çü½ÄÀº ´ÙÀ½ Å×ÀÌºí °ª Áß¿¡ ÇϳªÀÌ´Ù.

-------------------------------------------------------------------------
| Type value | Type meaning |
-------------------------------------------------------------------------
| FIELD_TYPE_TINY | TINYINT field |
-------------------------------------------------------------------------
| FIELD_TYPE_SHORT | SMALLINT field |
-------------------------------------------------------------------------
| FIELD_TYPE_LONG | INTEGER field |
-------------------------------------------------------------------------
| FIELD_TYPE_INT24 | MEDIUMINT field |
-------------------------------------------------------------------------
| FIELD_TYPE_LONGLONG | BIGINT field |
-------------------------------------------------------------------------
| FIELD_TYPE_DECIMAL | DECIMAL or NUMERIC field |
-------------------------------------------------------------------------
| FIELD_TYPE_FLOAT | FLOAT field |
-------------------------------------------------------------------------
| FIELD_TYPE_DOUBLE | DOUBLE or REAL field |
-------------------------------------------------------------------------
| FIELD_TYPE_TIMESTAMP | TIMESTAMP field |
-------------------------------------------------------------------------
| FIELD_TYPE_DATE | DATE field |
-------------------------------------------------------------------------
| FIELD_TYPE_TIME | TIME field |
-------------------------------------------------------------------------
| FIELD_TYPE_DATETIME | DATETIME field |
-------------------------------------------------------------------------
| FIELD_TYPE_YEAR | YEAR field |
-------------------------------------------------------------------------
| FIELD_TYPE_STRING | String (CHAR or VARCHAR) field |
-------------------------------------------------------------------------
| FIELD_TYPE_BLOB | BLOB or TEXT field (use max_length to |
| | determine the maximum length) |
-------------------------------------------------------------------------
| FIELD_TYPE_SET | SET field |
-------------------------------------------------------------------------
| FIELD_TYPE_ENUM | ENUM field |
-------------------------------------------------------------------------
| FIELD_TYPE_NULL | NULL-type field |
-------------------------------------------------------------------------
| FIELD_TYPE_CHAR | Deprecated: use FIELD_TYPE_TINY instead    |
-------------------------------------------------------------------------

IS_NUM() ¸ÅÅ©·Î(macro)¸¦ ÀÌ¿ëÇÏ¿© Çʵ尡 Á¤¼öÇü(numeric type)Àΰ¡¸¦ Å×½ºÆ®ÇÒ ¼ö ÀÖ´Ù.
IS_NUM()¿¡ Çü½Ä°ª(type value)¸¦ Àμö·Î ³Ñ°åÀ» ¶§ Çʵ尡 Á¤¼öÇüÀ̸é 'TRUE'¸¦ ¸®ÅÏÇÑ´Ù:

if (IS_NUM(field->type)) {
  printf("Field is numeric\n");
}

unsigned int length
- ÇʵåÀÇ ±æÀÌ(width)

unsigned int max_length
- °á°ú ¼Â¿¡ ´ëÇÑ ÇʵåÀÇ ÃÖ´ë ±æÀÌ(maximum width). mysql_list_fields() ÇÔ¼ö¸¦
»ç¿ëÇÏ´Â °æ¿ì ÀÌ ¸â¹ö¿¡´Â ÇʵåÀÇ ÃÖ´ë ±æÀÌ°¡ ÀúÀåµÈ´Ù.

unsigned int flags
- Çʵ忡 ´ëÇÑ Different bit-flags. Ç÷¡±× °ªÀº 0 ȤÀº ´ÙÀ½ÀÇ ºñÆ® ¼Â(bit set) Áß¿¡
ÇϳªÀÌ´Ù.

-----------------------------------------------------------------
|  Ç÷¡±× °ª   | ÀÇ¹Ì |
-----------------------------------------------------------------
|  NOT_NULL_FLAG | Field can't be NULL |
-----------------------------------------------------------------
|  PRI_KEY_FLAG | Field is part of a primary key |
-----------------------------------------------------------------
|  UNIQUE_KEY_FLAG | Field is part of a unique key |
-----------------------------------------------------------------
|  MULTIPLE_KEY_FLAG | Field is part of a key |
-----------------------------------------------------------------
|  UNSIGNED_FLAG | Field has the UNSIGNED attribute |
-----------------------------------------------------------------
|  ZEROFILL_FLAG | Field has the ZEROFILL attribute |
-----------------------------------------------------------------
|  BINARY_FLAG | Field has the BINARY attribute |
-----------------------------------------------------------------
|  AUTO_INCREMENT_FLAG | Field has the AUTO_INCREMENT attribute|
-----------------------------------------------------------------
|  ENUM_FLAG | Field is an ENUM (deprecated) |
-----------------------------------------------------------------
|  BLOB_FLAG | Field is a BLOB or TEXT (deprecated) |
-----------------------------------------------------------------
|  TIMESTAMP_FLAG | Field is a TIMESTAMP (deprecated) |
-----------------------------------------------------------------

BLOB_FLAG, ENUM_FLAG, TIMESTAMP_FLAG Ç÷¡±×µéÀº À̵é Ç÷¡±×µéÀÌ ÀÚ½ÅÀÇ Çü½Ä
(type)ÀÇ ¼Ó¼ºÀ» Ç¥½ÃÇϱ⠺¸´Ù´Â ÇʵåÀÇ Çü½ÄÀ» Ç¥½ÃÇϱ⠶§¹®¿¡ ÀÌ Ç÷¡±×µéÀ» »ç¿ëÇÏ´Â
°ÍÀº ÁÁÁö ¾Ê´Ù. ±× ´ë½Å 'field->type' °ªÀ» FIELD_TYPE_BLOB, FIELD_TYPE_ENUM, ȤÀº
FIELD_TYPE_TIMESTAMP°ú ºñ±³ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¾Æ·¡ÀÇ ¿¹Á¦´Â Ç÷¡±× °ªµéÀÇ ÀüÇüÀûÀÎ
»ç¿ë¹ý¿¡ ´ëÇÏ¿© ¼³¸íÇÑ´Ù:

if (field->flags & NOT_NULL_FLAG) {
  printf("Field can't be null\n");
}

Ç÷¡±× °ªÀÇ ºÒ¸®¾ð »óÅÂ(boolean status)¸¦ °áÁ¤Çϴµ¥ ´ÙÀ½°ú °°Àº ¸ÅÅ©·Î(macro)µéÀ» »ç¿ë
ÇÒ ¼ö ÀÖ´Ù:

IS_NOT_NULL(flags) ÀÌ Çʵ尡 'NOT NULL'·Î Á¤ÀǵǾî ÀÖÀ¸¸é Âü
IS_PRI_KEY(flags) ÀÌ Çʵ尡 primary keyÀÎ °æ¿ì¿¡ Âü
IS_BLOB(flags) ÀÌ Çʵ尡 BLOBÀ̳ª TEXTÀÎ °æ¿ì¿¡ Âü

unsigned int decimals
- Á¤¼öÇü Çʵå(numeric field)ÀÎ °æ¿ì ÀÚ¸®¼ö(number of decimal)


18.3 C API function overview

-------------------------------------------------------------------------------------------------
| Function | Description |
-------------------------------------------------------------------------------------------------
| mysql_affected_rows() | °¡Àå ÃÖ±ÙÀÇ UPDATE, DELETE, INSERT ÁúÀÇ¿¡ ÀÇÇÑ °á°ú |
| | ÇàÀÇ °³¼ö ¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_close() | ¼­¹ö¿ÍÀÇ ¿¬°áÀ» Á¾·áÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_connect() | ¼­¹ö¿Í ¿¬°áÇϸç ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϱ⺸´Ù´Â |
-------------------------------------------------------------------------------------------------
| |  mysql_real_connect() ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ±ÇÀåµÈ´Ù. |
| mysql_create_db() | DB¸¦ »ý¼ºÇÑ´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϱ⺸´Ù´Â SQL ¸í·É¾îÀÎ |
| | CREATE DATABASE ¹®À» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_data_seek() | ÁúÀÇ °á°ú ¼Â¿¡¼­ ÀÓÀÇÀÇ ÇàÀ» ã´Â´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_debug() | ÁÖ¾îÁø ¹®ÀÚ¿­·Î DBUG_PUSH¸¦ ¼öÇàÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_drop_db() | DB¸¦ µå·ÓÇÑ´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϱ⺸´Ù´Â SQL ¸í·É¾îÀÎ DROP |
| | DATABASE ¹®À» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_dump_debug_info() | ¼­¹ö·Î ÇÏ¿©±Ý µð¹ö±ë Á¤º¸¸¦ ·Î±×¿¡ ³²±âµµ·Ï ÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_eof() | °á°ú¼ÂÀÇ ¸¶Áö¸· ÇàÀÌ ÀÐÇôÁ³´Â°¡¸¦ Ç¥½ÃÇÑ´Ù. ÀÌ ÇÔ¼ö¸¦ |
| | »ç¿ëÇϱ⺸´Ù´Â mysql_errno()³ª mysql_error()ÇÔ¼ö°¡ »ç¿ëµÈ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_errno() | °¡Àå ÃÖ±Ù¿¡ ¼öÇàµÈ MySQL ÇÔ¼ö¿¡ ´ëÇÑ ¿¡·¯³Ñ¹ö¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_error() | °¡Àå ÃÖ±Ù¿¡ ¼öÇàµÈ MySQL ÇÔ¼ö¿¡ ´ëÇÑ ¿¡·¯¸Þ¼¼Áö¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_escape_string() | SQL ¹® ³»ºÎÀÇ Æ¯¼ö ¹®ÀÚ¸¦ ó¸®ÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_fetch_field() | Å×À̺íÀÇ ´ÙÀ½ ÇʵåÀÇ Çü½Ä(type)À» ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_fetch_field_direct() | ÁÖ¾îÁø ÇÊµå ¹øÈ£¿¡ ´ëÇÑ Çʵå Çü½ÄÀ» ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_fetch_fields() | ¸ðµç ÇÊµå ±¸Á¶¿¡ ´ëÇÑ ¹è¿­À» ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_fetch_lengths() | ÇöÀç ÇàÀÇ ¸ðµç Ä÷³µéÀÇ ±æÀ̸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_fetch_row() | °á°ú¼ÂÀ¸·ÎºÎÅÍ ´ÙÀ½ ÇàÀ» °¡Á®¿Â´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_field_seek() | Ä÷³Ä¿¼­¸¦ ƯÁ¤ Ä÷³À¸·Î ³õ´Â´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_free_result() | °á°ú¼Â¿¡ ÀÇÇØ »ç¿ëµÈ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_get_client_info() | Ŭ¶óÀ̾ðÆ®ÀÇ ¹öÀü Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_get_host_info() | ÇöÀç ¿¬°á¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áø ¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_get_proto_info() | ¿¬°á¿¡ »ç¿ëµÈ ÇÁ·ÎÅäÄÝ ¹öÀüÀ» ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_get_server_info() | ¼­¹öÀÇ ¹öÀü ³Ñ¹ö¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_info() | °¡Àå ÃÖ±Ù¿¡ ¼öÇàµÈ ÁúÀÇ¿¡ ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_init() | MYSQL ±¸Á¶Ã¼¸¦ »ý¼ºÇϰųª ÃʱâÈ­ÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_insert_id() | AUTO_INCREMENT Çʵ忡 ´ëÇÏ¿© °¡Àå ÃÖ±Ù¿¡ »ý¼ºµÈ ID¸¦ ¸®ÅÏ. |
-------------------------------------------------------------------------------------------------
| mysql_list_dbs() | °£´ÜÇÑ Á¤±Ô½Ä¿¡ ÀÇÇØ ¸ÅĪµÇ´Â DB À̸§µéÀ» ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_list_fields() | °£´ÜÇÑ Á¤±Ô½Ä¿¡ ÀÇÇØ ¸ÅĪµÇ´Â Çʵå À̸§µéÀ» ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_list_processes() | ÇöÀç ¼­¹öÀÇ ¾²·¹µåµéÀÇ ¸®½ºÆ®¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_list_tables() | °£´ÜÇÑ Á¤±Ô½Ä¿¡ ÀÇÇØ ¸ÅĪµÇ´Â Å×À̺í À̸§µéÀ» ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_num_fields() | °á°ú¼Â ³»ÀÇ Ä÷³ °³¼ö¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_num_rows() | °á°ú¼Â ³»ÀÇ Çà °³¼ö¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_ping() | ¼­¹ö¿ÍÀÇ ¿¬°áÀÌ Á¦´ë·Î ¼öÇàµÇ°í ÀÖ³ª¸¦ üũÇϸç, ÇÊ¿äÇϸé |
| | ¼­¹ö¿Í À翬°áÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_query() | Null terminated ¹®ÀÚ¿­·Î ÁÖ¾îÁö´Â SQL ÁúÀǸ¦ ¼öÇàÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_real_connect() | MySQL ¼­¹ö¿Í ¿¬°áÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_real_query() | Counted ¹®ÀÚ¿­·Î ÁÖ¾îÁø SQL ÁúÀǸ¦ ¼öÇàÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_reload() | ¼­¹ö·Î ÇÏ¿©±Ý grant Å×À̺íÀ» ´Ù½Ã ¸®·ÎµåÇÏ°Ô ÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_row_seek() | mysql_row_tell() ÇÔ¼ö°¡ ¸®ÅÏÇÑ °ªÀ» °¡Áö°í °á°ú¼Â ³»ÀÇ ÇÑ |
| | ÇàÀ» ã´Â´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_row_tell() | Row cursor À§Ä¡¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_select_db() | ƯÁ¤ DB¿¡ ¿¬°áÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_shutdown() | DB ¼­¹ö¸¦ ¼Ë´Ù¿î½ÃŲ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_stat() | ¼­¹öÀÇ »óŸ¦ Ç¥½ÃÇÏ´Â ¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_store_result() | Àüü °á°ú¼ÂÀ» Ŭ¶óÀ̾ðÆ®·Î °¡Á®¿Â´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_thread_id() | ÇöÀç ¾²·¹µåÀÇ ID¸¦ ¸®ÅÏÇÑ´Ù. |
-------------------------------------------------------------------------------------------------
| mysql_use_result() | Çà´ÜÀ§·Î µ¥ÀÌÅ͸¦ ³Ñ°Ü¹Þ±â À§ÇÑ °á°ú ¼ÂÀ» ÃʱâÈ­ÇÑ´Ù. |
-------------------------------------------------------------------------------------------------

¼­¹ö¿¡ ¿¬°áÇÒ ¶§´Â ¸ÕÀú mysql_init() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á connection handler¸¦ ÃʱâÈ­ÇÑ ÈÄ,
±× handler¿Í hostname, user name, password¿Í °°Àº ´Ù¸¥ Á¤º¸µéÀ» °¡Áö°í mysql_real_connect()
ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ¸ðµç ÀÛ¾÷ÀÌ ³¡³ª¸é mysql_close() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ¿¬°áÀ» Á¾·áÇÑ´Ù.

¿¬°áÀÌ ÀÌ·ç¾îÁ® ÀÖ´Â µ¿¾È Ŭ¶óÀ̾ðÆ®´Â mysql_query()³ª mysql_real_query() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ
¿© ¼­¹ö¿¡ SQL ÁúÀǸ¦ º¸³¾ ¼ö ÀÖ´Ù. mysql_query()´Â ÁúÀÇ°¡ null-terminated stringÀ̾î¾ß ÇÏ
¸ç, mysql_real_query()´Â counted stringÀ̾î¾ß ÇÑ´Ù. ¸¸¾à stringÀÌ ¹ÙÀ̳ʸ® µ¥ÀÌÅÍ(Áß°£¿¡
NULL ¹ÙÀÌÆ®¸¦ °¡Áú ¼öµµ ÀÖ´Â)ÀÎ °æ¿ì¿¡´Â ¹Ýµå½Ã mysql_real_query()¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù.

SELECT ÁúÀÇ°¡ ¾Æ´Ñ ÁúÀÇ(INSERT, UPDATE, DELETE)¿¡ ´ëÇؼ­´Â mysql_affected_row() ÇÔ¼ö
¸¦ È£ÃâÇÔÀ¸·Î½á ¾ó¸¶³ª ¸¹Àº ÇàÀÌ affectµÇ¾îÁ³³ª¸¦ ¾Ë ¼ö ÀÖ´Ù.

SELECT ÁúÀÇÀÇ °æ¿ì, selectµÇ¾îÁø ÇàµéÀ» °á°ú¼Â(result set)À¸·Î ¾ò°Ô µÈ´Ù(SHOW, DESCRIBE,
EXPLAIN°ú °°Àº ¹®Àº ÇàÀ» ¸®ÅÏÇÏ´Â °Í¿¡ À־ SELECT¿Í ºñ½ÁÇϸç, À̵éÀº SELECT
¹®°ú µ¿ÀÏÇÏ°Ô Ã³¸®µÇ¾î¾ß ÇÑ´Ù)

Ŭ¶óÀ̾ðÆ®°¡ °á°ú¼ÂÀ» ó¸®ÇÏ´Â ¹æ¹ý¿¡´Â µÎ°¡Áö°¡ ÀÖ´Ù. Çϳª´Â mysql_store_result() ÇÔ¼ö
¸¦ È£ÃâÇÔÀ¸·Î½á Àüü °á°ú ¼ÂÀ» Çѹø¿¡ ¾ò¾î¿À´Â °ÍÀ¸·Î½á, ÀÌ ÇÔ¼ö´Â ÁúÀÇ¿¡ ÀÇÇØ ¸®ÅϵÈ
¸ðµç ÇàµéÀ» ¼­¹ö·ÎºÎÅÍ ¾ò¾î³»¾î Ŭ¶óÀ̾ðÆ®¿¡ ÀúÀåÇÑ´Ù. µÎ¹ø°´Â mysql_use_result() ÇÔ¼ö
¸¦ È£ÃâÇÔÀ¸·Î½á Ŭ¶óÀ̾ðÆ®°¡ Çະ·Î °á°ú¼ÂÀ» ¾ò¾î¿À´Â °ÍÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ÇàÀ» ¾ò¾î¿À±â À§ÇÑ
ÀÛ¾÷À» ÃʱâÈ­Çϱ⸸ ÇÏ¸ç ½ÇÁ¦·Î ¼­¹ö·ÎºÎÅÍ ÇàÀ» °¡Á®¿ÀÁö´Â ¾Ê´Â´Ù.

À§ µÎ°¡Áö °æ¿ì ¸ðµÎ, mysql_fetch_row() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á Çàµé¿¡ Á¢±ÙÇÏ°Ô µÈ´Ù.
mysql_store_result()ÀÇ °æ¿ì mysql_fetch_row()´Â ¼­¹ö·ÎºÎÅÍ ÀÌ¹Ì fetchµÈ Çàµé¿¡ Á¢±ÙÇϸç,
mysql_use_result()ÀÇ °æ¿ì, mysql_fetch_row()´Â ½ÇÁ¦·Î ¼­¹ö·ÎºÎÅÍ ÇàµéÀ» ¾ò¾î¿Â´Ù. °¢ ÇàÀÇ
µ¥ÀÌÅÍ °ªÀÇ Å©±â¿¡ ´ëÇÑ Á¤º¸´Â mysql_fetch_lengths() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ¾òÀ» ¼ö ÀÖ´Ù.

°á°ú ¼ÂÀ» ÀÌ¿ëÇÑ ÀÛ¾÷ÀÌ ³¡³ª¸é mysql_free_result()¸¦ È£ÃâÇÔÀ¸·Î½á °á°ú ¼ÂÀ» À§ÇØ »ç¿ëµÈ
¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù.

ÀÌ µÎ°¡Áö retrieval ü°è´Â »óÈ£ º¸¿ÏÀûÀÌ´Ù. Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥Àº °¢°¢ÀÇ ¿ä±¸¿¡ µû¶ó Àû
ÀýÇÑ Á¢±Ù ¹æ¹ýÀ» ¼±ÅÃÇÏ¿©¾ß ÇÑ´Ù. ½ÇÁúÀûÀ¸·Î´Â mysql_store_result()°¡ ÁÖ·Î »ç¿ëµÈ´Ù.

mysql_store_result()ÀÇ ÀÌÁ¡Àº ÇàµéÀÌ Å¬¶óÀ̾ðÆ®·Î fetchµÈ ÀÌÈÄ¿¡´Â Ŭ¶óÀ̾ðÆ®°¡ Çàµé¿¡
¼øÂ÷ÀûÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó mysql_data_seek()³ª mysql_row_seek()¸¦ ÀÌ¿ëÇÏ¿© °á
°ú ¼Â ¾È¿¡¼­ ÇöÇà À§Ä¡(current row position)¸¦ º¯°æÇÔÀ¸·Î½á °á°ú ¼Â ³»¿¡¼­ ¾ÕµÚ·Î ¿òÁ÷ÀÏ
¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¶ÇÇÑ mysql_num_rows()¸¦ È£ÃâÇÔÀ¸·Î½á ¾ó¸¶³ª ¸¹Àº ÇàµéÀÌ ÀÖ³ª¸¦ ¾Ë
¼öµµ ÀÖ´Ù. ´Ù¸¥ ÇÑÆíÀ¸·Î, mysql_store_result()¸¦ À§ÇØ ¿ä±¸µÇ´Â ¸Þ¸ð¸®°¡ ¸¹±â ¶§¹®¿¡ out-of-
memory »óŸ¦ ¸¸³¯ °¡´É¼ºÀÌ ¸¹´Ù.

mysql_use_result()ÀÇ ÀÌÁ¡Àº Çѹø¿¡ ÇϳªÀÇ ÇุÀ» °ü¸®Çϱ⠶§¹®¿¡ °á°ú ¼ÂÀ» À§ÇÑ ¸Þ¸ð¸®
°¡ Àû°Ô ÇÊ¿äÇÏ´Ù´Â °ÍÀÌ¸ç ¶ÇÇÑ ´õ ÀûÀº ¸Þ¸ð¸® ÇÒ´ç ºÎÇÏ·Î ÀÎÇÏ¿© ´õ ¼Óµµ°¡ ºü¸¦ ¼ö ÀÖ
´Ù. ´ÜÁ¡Àº ¼­¹ö¸¦ tying upÇÏ´Â °ÍÀ» ÇÇÇϱâ À§ÇÏ¿© °¢ ÇàÀ» ºü¸£°Ô ó¸®ÇØÁÖ¾î¾ß ÇÏ¸ç °á
°ú ¼Â ³»¿¡¼­ ·£´ýÇÏ°Ô Çàµé¿¡ Á¢±ÙÇÒ ¼ö ¾ø°í ´ÜÁö ¼øÂ÷ÀûÀ¸·Î¸¸ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ¸ð
µç ÇàµéÀ» ¹Þ±â Àü¿¡´Â °á°ú ¼Â ³»¿¡ ¾ó¸¶³ª ¸¹Àº ÇàµéÀÌ ÀÖ³ª¸¦ ¾Ë ¼ö°¡ ¾ø´Ù. °á°ú ¼Â Áß
°£¿¡ ã°íÀÚ ÇÏ´Â Á¤º¸¸¦ ã¾Ò´õ¶óµµ ¸ðµç ÇàÀ» ³¡±îÁö ¹Þ°í ÀÖ¾î¾ß ÇÑ´Ù.

API¸¦ ÀÌ¿ëÇÔÀ¸·Î½á ÁúÀÇ°¡ SELECTÀΰ¡ ¾Æ´Ñ°¡¸¦ ¸ð¸¥ »óÅ¿¡¼­µµ Ŭ¶óÀ̾ðÆ®°¡ ÁúÀÇ¿¡
ÀûÀýÈ÷ ´ëÀÀÇÒ ¼ö ÀÖ°Ô ÇÒ ¼ö Àִµ¥, ÀÌ´Â mysql_query() (ȤÀº mysql_real_query())¸¦ È£ÃâÇÑ
ÈÄ¿¡ mysql_store_result()¸¦ È£ÃâÇÔÀ¸·Î½á °¡´ÉÇÏ´Ù. ¸¸¾à °á°ú ¼ÂÀÌ ¼º°ø(succeed)À̸é ÁúÀÇ°¡
SELECTÀ̸ç ÇàµéÀ» ÀÐÀ» ¼ö ÀÖ´Ù. ¸¸¾à ½ÇÆÐÀ̸é mysql_num_fields()¸¦ È£ÃâÇÏ¿© result°¡
Á¤¸»·Î ±â´ëµÇ¾îÁö´Â°¡¸¦ °áÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç, mysql_num_fields()°¡ 0À» ¸®ÅÏÇϸé ÁúÀÇ´Â ¾Æ¹«
µ¥ÀÌÅ͵µ ¸®ÅÏÇÏÁö ¾Ê´Â´Ù(ÀÌ°ÍÀº ÁúÀÇ°¡ INSERT, UPDATE, DELETE µîÀÓÀ» ÀǹÌÇÑ´Ù). ¸¸¾à
mysql_num_fields()°¡ 0ÀÌ ¾Æ´Ï¸é ÁúÀÇ´Â ¹Ýµå½Ã ÇàÀ» ¸®ÅÏÇÏ¿©¾ß Çϴµ¥ ¸®ÅÏÇÏÁö ¾Ê¾ÒÀ½À»
ÀǹÌÇϸç, ÀÌ´Â ÁúÀÇ°¡ SELECT¿´À¸¸ç ¼öÇà¿¡ ½ÇÆÐÇÏ¿´À½À» ¾Ë·ÁÁØ´Ù.

mysql_store_result()°ú mysql_use_result()Àº °á°ú ¼ÂÀ» ±¸¼ºÇÏ´Â Çʵåµé¿¡ ´ëÇÑ Á¤º¸(ÇʵåÀÇ °³
¼ö, À̸§, Çü½Ä µî)¸¦ ¾òÀ» ¼ö ÀÖ°Ô ÇØÁØ´Ù. mysql_fetch_field()¸¦ °¢°¢ È£ÃâÇÏ¿© Çà ³»¿¡¼­ÀÇ
Çʵå Á¤º¸¸¦ ¼øÂ÷ÀûÀ¸·Î Á¢±ÙÇϰųª, mysql_fetch_field_direct()¸¦ È£ÃâÇÔÀ¸·Î½á ¾òÀº Çà ³»ÀÇ
ÇÊµå ¹øÈ£¸¦ ÅëÇÏ¿© Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ÇöÀïÀÇ Çʵå Ä¿¼­ À§Ä¡(current field cursor position)´Â
mysql_field_seek() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á º¯°æµÉ ¼ö ÀÖ´Ù. Setting the field cursor affects subsequent
calls to mysql_fetch_field(). ¶ÇÇÑ mysql_fetch_fields()¸¦ È£ÃâÇÔÀ¸·Î½á ÇѲ¨¹ø¿¡ ¸ðµç Çʵå Á¤º¸
¸¦ ¾òÀ» ¼öµµ ÀÖ´Ù.

¿¡·¯¸¦ ã°í ¸®Æ÷ÆÃÇϱâ À§Çؼ­ MySQLÀº mysql_errno()¿Í mysql_error() ÇÔ¼ö¸¦ ÅëÇÏ¿© ¿¡·¯
Á¤º¸¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ÀÌ µÎ ÇÔ¼ö´Â °¡Àå ÃÖ±Ù¿¡ invokeµÈ ¼º°øÇϰųª ½ÇÆÐÇÒ ¼ö
ÀÖ´Â ÇÔ¼ö¿¡ ´ëÇÑ ¿¡·¯ ÄÚµå ȤÀº ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸®ÅÏÇϸç, À̸¦ ÅëÇÏ¿© ¾ðÁ¦ ¿¡·¯°¡ ¹ß»ý
ÇÏ°í ±×°ÍÀÌ ¹«¾ùÀΰ¡¸¦ ¾Ë ¼ö ÀÖ´Ù.


18.4 C API function descriptions

¾Æ·¡ÀÇ ÇÔ¼ö ¼³¸í¿¡ À־ NULL·Î Ç¥½ÃÇÑ Àμö³ª ¸®ÅÏ°ªÀº C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ÀÇ
NULLÀÇ ÀǹÌÀ̸ç, MySQL¿¡¼­ÀÇ NULL °ªÀ» ÀǹÌÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù.

¾î¶² °ªÀ» ¸®ÅÏÇÏ´Â ÇÔ¼öµéÀº º¸Åë Æ÷ÀÎÅͳª Á¤¼ö¸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à º° ´Ù¸¥ Ç¥½Ã°¡ ¾ø´Ù¸é
Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ´Â ÇÔ¼öµéÀº ¼º°øÇÏ¿´À» ¶§ NULLÀÌ ¾Æ´Ñ °ªÀ», ¿¡·¯¸¦ Ç¥½ÃÇϱâ À§Çؼ­´Â
NULL °ªÀ» ¸®ÅÏÇÑ´Ù. Á¤¼ö¸¦ ¸®ÅÏÇÏ´Â ÇÔ¼öÀÇ °æ¿ì¿¡´Â ¼º°øÇÏ¿´À» °æ¿ì 0À», ¿¡·¯ÀÎ °æ¿ì
¿¡´Â 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

ÇÔ¼ö°¡ ¿¡·¯¸¦ ¸®ÅÏÇÑ °æ¿ì¿¡´Â mysql_errno(), mysql_error() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¿¡·¯¸¦ üũÇÒ
¼ö ÀÖ´Ù.

18.4.1 mysql_affected_rows()
my_ulonglong mysql_affected_rows(MYSQL *mysql)

18.4.1.1 Description
¸¶Áö¸·À¸·Î ¼öÇàµÈ UPDATE, DELETE, INSERT ÁúÀÇ¿¡ ÀÇÇÑ ÇàÀÇ ¼ö¸¦ ¸®ÅÏÇϸç, ÁÖ·Î
UPDATE, DELETE, INSERT ¹®¿¡ ´ëÇÑ mysql_query() ÇÔ¼ö°¡ È£ÃâµÈ ÈÄ Áï½Ã È£ÃâµÈ´Ù.
SELECT ¹®ÀÇ °æ¿ì mysql_affected_rows() ÇÔ¼ö´Â mysql_num_row() ÇÔ¼öó·³ µ¿ÀÛÇÑ´Ù.

mysql_affected_rows() ÇÔ¼ö´Â ÇöÀç ¸ÅÅ©·Î(macro)·Î ±¸ÇöµÇ¾î ÀÖ´Ù.

18.4.1.2 Return values
0º¸´Ù Å« Á¤¼ö´Â affectedµÇ°Å³ª retrievedµÈ ÇàÀÇ ¼ö¸¦ ÀǹÌÇÑ´Ù. 0Àº WHERE Á¶°Ç¿¡ ÇÕ´ç
ÇÏ´Â ·¹Äڵ尡 ¾ø°Å³ª ¾Æ¹« ÁúÀǵµ ¾ÆÁ÷ ¼öÇàµÇÁö ¾Ê¾ÒÀ½À» ÀǹÌÇÑ´Ù. -1Àº ÁúÀÇ°¡ ¿¡·¯¸¦
¸®ÅÏÇÏ¿´°Å³ª ȤÀº SELECT ÁúÀÇÀÎ °æ¿ì mysql_affected_rows() ÇÔ¼ö°¡ mysql_store_result() ÇÔ
¼öÀÇ È£Ãâ ÀÌÀü¿¡ È£ÃâµÇ¾úÀ½À» ÀǹÌÇÑ´Ù.

18.4.1.3 Errors
¾øÀ½.

18.4.1.4 Example
mysql_query(&mysql,"UPDATE products SET cost=cost*1.25 WHERE group=10");
printf("%d products updated",mysql_affected_rows(&mysql));


18.4.2 mysql_close()
void mysql_close(MYSQL *mysql)

18.4.2.1 Description
ÇöÀç ¿­·ÁÀÖ´Â ¼­¹ö¿ÍÀÇ ¿¬°áÀ» ²÷´Â´Ù. ¸¸¾à ¿¬°á ÇÚµé(connection handle)ÀÌ mysql_init()À̳ª
mysql_real_connect()¿¡ ÀÇÇؼ­ ÀÚµ¿À¸·Î ÇÒ´çµÇ¾ú´Ù¸é mysql_close()´Â mysql¿¡ ÀÇÇØ ÁöÁ¤µÈ
¿¬°á ÇÚµéÀ» deallocationÇÑ´Ù.

18.4.2.2 Return values
¾øÀ½.

18.4.2.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.3 mysql_connect()
MYSQL *mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd)

18.4.3.1 Description
ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº ±ÇÀåµÇÁö ¾ÊÀ¸¸ç, ´ë½Å mysql_real_connect() ÇÔ¼ö°¡ ÁÖ·Î »ç¿ëµÈ´Ù.

mysql_connect() ÇÔ¼ö´Â È£½ºÆ®¿¡¼­ µ¹¾Æ°¡°í ÀÖ´Â MySQL DB ¿£Áø°úÀÇ ¿¬°áÀ» ½ÃµµÇÑ´Ù.
Mysql_connect()´Â mysql_get_client_info() ÇÔ¼ö¸¦ Á¦¿ÜÇÑ ´Ù¸¥ ¸ðµç API ÇÔ¼ö¸¦ ¼öÇàÇϱâ ÀÌ
Àü¿¡ ¹Ýµå½Ã ¼º°øÀûÀ¸·Î ¼öÇàµÇ¾îÁ®¾ß ÇÑ´Ù.

ÇÔ¼öÀÇ ÀμöµéÀÌ °¡Áö´Â Àǹ̴ mysql_real_connect() ÇÔ¼ö¿Í µ¿ÀÏÇÏ´Ù.

18.4.3.2 Return values
mysql_real_connect() ÇÔ¼ö¿Í µ¿ÀÏ.

18.4.3.3 Errors
mysql_real_connect() ÇÔ¼ö¿Í µ¿ÀÏ.


18.4.4 mysql_create_db()
int mysql_create_db(MYSQL *mysql, const char *db)

18.4.4.1 Description
'db' Àμö·Î ÁÖ¾îÁø À̸§ÀÇ µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÑ´Ù.

ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº ±ÇÀåµÇÁö ¾ÊÀ¸¸ç, ´ë½Å 'CREATE DATABASE'¿Í °°Àº SQL ¹®À»
mysql_query() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¼öÇàÇÏ´Â °ÍÀÌ ÁÁ´Ù.

18.4.4.2 Return values
µ¥ÀÌÅͺ£À̽º°¡ ¼º°øÀûÀ¸·Î »ý¼ºµÈ °æ¿ì 0, ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

18.4.4.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.4.4 Example
if(mysql_create_db(&mysql, "my_database"))
{
 fprintf(stderr, "Failed to create new database.  Error: %s\n", mysql_error(&mysql));
}


18.4.5 mysql_data_seek()
void mysql_data_seek(MYSQL_RES *result, unsigned int offset)

18.4.5.1 Description
°á°ú ¼Â ³»¿¡¼­ ÀÓÀÇÀÇ ÇàÀ» ã´Â´Ù. À̸¦ À§Çؼ­´Â °á°ú ¼Â ±¸Á¶Ã¼°¡ ÁúÀÇ¿¡ ÀÇÇÑ Àüü °á
°ú¸¦ Æ÷ÇÔÇÏ°í ÀÖ¾î¾ß Çϸç, µû¶ó¼­ mysql_data_seek() ÇÔ¼ö´Â mysql_use_result() ÇÔ¼ö¿Í´Â »ç
¿ëÇÒ ¼ö ¾ø°í mysql_store_result() ÇÔ¼ö¿Í »ç¿ëÇÑ´Ù.

Offset Àμö´Â 0¿¡¼­ mysql_num_rows(result)-1 »çÀÌÀÇ °ªÀ» °¡Á®¾ß ÇÑ´Ù.

18.4.5.2 Return values
None.

18.4.5.3 Errors
None.


18.4.6 mysql_debug()
void mysql_debug(char *debug)

18.4.6.1 Description
debug Àμö·Î ÁÖ¾îÁø ¹®ÀÚ¿­À» °¡Áö°í DBUG_PUSH¸¦ ¼öÇàÇÑ´Ù. mysql_debug() ÇÔ¼ö´Â Fred
Fish debug ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ¹Ýµå½Ã Ŭ¶óÀ̾ðÆ® ¶óÀ̺ê
·¯¸®¸¦ µð¹ö±ëÀ» Áö¿øÇϵµ·Ï ÄÄÆÄÀÏÇÏ¿©¾ß ÇÑ´Ù. 19.10 Àý¿¡¼­ MySQL ¼­¹öÀÇ µð¹ö±ë¿¡ ´ëÇÏ
¿© ³íÀÇÇϸç, 19.11Àý¿¡¼­ MySQL Ŭ¶óÀ̾ðÆ®ÀÇ µð¹ö±ë¿¡ ´ëÇÏ¿© ³íÀÇÇÑ´Ù.

18.4.6.2 Return values
None.

18.4.6.3 Errors
None.

18.4.6.4 Example
¾Æ·¡¿Í °°Àº È£ÃâÀº Ŭ¶óÀ̾ðÆ® ¶óÀ̺귯¸®·Î ÇÏ¿©±Ý Ŭ¶óÀ̾ðÆ®ÀÇ¿¡ '/tmp/client.trace' ÆÄÀÏ
¿¡ trace fileÀ» »ý¼ºÇÏ°Ô ÇØÁØ´Ù:

mysql_debug("d:t:O,/tmp/client.trace");


18.4.7 mysql_drop_db()
int mysql_drop_db(MYSQL *mysql, const char *db)

18.4.7.1 Description
db Àμö·Î ÁÖ¾îÁø À̸§ÀÇ µ¥ÀÌÅͺ£À̽º¸¦ µå·Ó½ÃŲ´Ù.

ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº ±ÇÀåµÇÁö ¾ÊÀ¸¸ç, ´ë½Å 'DROP DATABASE'¿Í °°Àº SQL ¹®À»
mysql_query() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¼öÇàÇÏ´Â °ÍÀÌ ÁÁ´Ù.

18.4.7.2 Return values
µ¥ÀÌÅͺ£À̽º°¡ ¼º°øÀûÀ¸·Î µå·ÓµÈ °æ¿ì 0À», ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

18.4.7.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.7.4 Example
if(mysql_drop_db(&mysql, "my_database"))
fprintf(stderr, "Failed to drop the database: Error: %s\n", mysql_error(&mysql));


18.4.8 mysql_dump_debug_info()
int mysql_dump_debug_info(MYSQL *mysql)

18.4.8.1 Description
¼­¹ö·Î ÇÏ¿©±Ý ·Î±×¿¡ µð¹ö±ë Á¤º¸¸¦ ±â·ÏÇÏ°Ô ÇÑ´Ù. ¿¬°áµÇ¾î ÀÖ´Â »ç¿ëÀÚ(connected user)´Â
ÀÌ ÀÛ¾÷À» À§ÇÑ ±ÇÇÑÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.

18.4.8.2 Return values
¸í·ÉÀÌ ¼º°øÇϸé 0, ¿¡·¯°¡ ¹ß»ýÇϸé 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

18.4.8.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.9 mysql_eof()
my_bool mysql_eof(MYSQL_RES *result)

18.4.9.1 Description
ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº ±ÇÀåµÇÁö ¾ÊÀ¸¸ç, ´ë½Å mysql_errno() ÇÔ¼ö³ª mysql_error() ÇÔ¼ö¸¦
»ç¿ëÇÑ´Ù.

mysql_eof() ÇÔ¼ö´Â °á°ú ¼ÂÀÇ ¸¶Áö¸· ÇàÀÌ ÀÐÇôÁ³³ª¸¦ ÆÇ´ÜÇÑ´Ù.

mysql_store_result() ÇÔ¼ö·ÎºÎÅÍ ¼º°øÀûÀ¸·Î °á°ú ¼ÂÀ» ¾ò¾ú´Ù¸é Ŭ¶óÀ̾ðÆ®´Â ÇѹøÀÇ ÀÛ¾÷À¸
·Î Àüü ¼ÂÀ» ¾ò°ÔµÈ´Ù. ÀÌ °æ¿ì mysql_fetch_row() ÇÔ¼ö·ÎºÎÅÍ ¸®ÅϵǴ NULLÀº Ç×»ó °á°ú
¼ÂÀÇ ¸¶Áö¸·¿¡ µµ´ÞÇÏ¿´À½À» ÀǹÌÇÏ°Ô µÇ¸ç mysql_eof() ÇÔ¼ö¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

ÇÑÆíÀ¸·Î mysql_use_result() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© °á°ú ¼ÂÀ» ¾ò¾ú´Ù¸é ¼ÂÀÇ ÇàµéÀº
mysql_fetch_row() ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§¸¶´Ù ¼­¹ö·ÎºÎÅÍ Çϳª¾¿ ¾ò¾îÁø´Ù. ÀÌ °úÁ¤ Áß¿¡ ¿¬°á ¿¡
·¯°¡ ¹ß»ýÇÒ ¼ö Àֱ⠶§¹®¿¡ myql_fetch_row() ÇÔ¼ö°¡ ¸®ÅÏÇÏ´Â NULL °ªÀº ¹Ýµå½Ã °á°ú ¼Â
ÀÇ ¸¶Áö¸·¿¡ µµ´ÞÇÏ¿´À½À» ÀǹÌÇÑ´Ù°í º¼ ¼ö ¾ø´Ù. ÀÌ °æ¿ì mysql_eof() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¹«
¾ùÀÌ ÀϾ³ª¸¦ °áÁ¤ÇÒ ¼ö ÀÖ´Ù. À̶§ mysql_eof() ÇÔ¼ö´Â °á°ú ¼ÂÀÇ ¸¶Áö¸·¿¡ µµ´ÞÇÑ °æ¿ì
¶ó¸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇϸç, ¿¡·¯ÀÎ °æ¿ì¿¡´Â 0À» ¸®ÅÏÇÏ°Ô µÈ´Ù.

Ç¥ÁØ mySQL ¿¡·¯ ÇÔ¼öÀÎ mysql_errno()¿Í mysql_error() ÇÔ¼ö°¡ ´õ ¸¹Àº Á¤º¸¸¦ Á¦°øÇϱ⠶§
¹®¿¡ À̵éÀ» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù¡¦


18.4.9.2 Return values
¿¡·¯À̸é 0À», °á°ú ¼ÂÀÇ ¸¶Áö¸·¿¡ µµ´ÞÇÏ¿´À¸¸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

18.4.9.3 Errors
None.

18.4.9.4 Example
´ÙÀ½Àº mysql_eof()ÀÇ »ç¿ë¿¹¸¦ º¸¿©ÁØ´Ù:

mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result)))
{
  // do something with data
}
if(!mysql_eof(result))  // mysql_fetch_row() failed due to an error
{
  fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}

However, you can achieve the same effect with the standard MySQL error functions:

mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result)))
{
  // do something with data
}
if(mysql_errno(&mysql))  // mysql_fetch_row() failed due to an error
{
  fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}


18.4.10 mysql_errno()
unsigned int mysql_errno(MYSQL *mysql)

18.4.10.1 Description
mysql Àμö¿¡ ÀÇÇØ ÁöÁ¤µÈ ¿¬°á¿¡ ´ëÇÏ¿© mysql_errno()´Â °¡Àå ÃÖ±Ù¿¡ ¼öÇàµÈ API ÇÔ¼ö¿¡
´ëÇÑ ¿¡·¯ Äڵ带 ¸®ÅÏÇÑ´Ù. 0À» ¸®ÅÏÇÏ¸é ¾Æ¹« ¿¡·¯µµ ¹ß»ýÇÏÁö ¾ÊÀ½À» ÀǹÌÇÑ´Ù. Ŭ¶óÀ̾ð
Æ® ¿¡·¯ ¸Þ½ÃÁö ³Ñ¹öµéÀº MYSQLÀÇ 'errmsg.h' Çì´õ ÆÄÀÏ¿¡ ³ª¿­µÇ¾î ÀÖÀ¸¸ç, ¼­¹ö ¿¡·¯ ¸Þ
½ÃÁö ³Ñ¹öµéÀº 'mysqld_error.h' ÆÄÀÏ¿¡ ÀÖ´Ù.

18.4.10.2 Return values:
¿¡·¯ ÄÚµå °ªÀ» ¸®ÅÏ. ¾Æ¹« ¿¡·¯µµ ¾øÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù.

18.4.10.3 Errors
None.


18.4.11 mysql_error()
char *mysql_error(MYSQL *mysql)

18.4.11.1 Description
mysql Àμö¿¡ ÀÇÇØ ÁöÁ¤µÈ ¿¬°á¿¡ ´ëÇÏ¿© mysql_error()´Â °¡Àå ÃÖ±Ù¿¡ ¼öÇàµÈ API ÇÔ¼ö¿¡
´ëÇÑ ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸®ÅÏÇÑ´Ù. ºñ¾î ÀÖ´Â ¹®ÀÚ¿­("")À» ¸®ÅÏÇÏ¸é ¾Æ¹« ¿¡·¯µµ ¹ß»ýÇÏÁö ¾ÊÀ½
À» ÀǹÌÇÑ´Ù. ÀÌ°ÍÀº ´ÙÀ½ÀÇ µÎ°¡Áö Å×½ºÆ®°¡ µ¿ÀÏÇÔÀ» ÀǹÌÇÑ´Ù:

if(mysql_errno(&mysql)) {
  // an error occurred
}

if(mysql_error(&mysql)[0] != '\0') {
  // an error occurred
}

Ŭ¶óÀ̾ðÆ® ¿¡·¯ ¸Þ½ÃÁöÀÇ ¾ð¾î´Â MySQL Ŭ¶óÀ̾ðÆ® ¶óÀ̺귯¸®¸¦ ÀçÄÄÆÄÀÏÇÔÀ¸·Î½á º¯°æ
µÉ ¼ö ÀÖ´Ù. ÇöÀç ¸î°¡Áö ´Ù¸¥ ¾ð¾î·Î µÈ ¿¡·¯ ¸Þ½ÃÁö¸¦ ¼±ÅÃÇÒ ¼ö ÀÖÀ¸¸ç, 9.1 Àý¿¡¼­´Â
MySQL¿¡ ÀÇÇØ Áö¿øµÇ´Â ¾ð¾îµéÀ» ´Ù·é´Ù.

18.4.11.2 Return values
¿¡·¯¸¦ ±â¼úÇÏ´Â ¹®ÀÚ¿­. ¿¡·¯°¡ ¾ø´Â °æ¿ì¿¡´Â ºñ¾îÀÖ´Â ¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù.

18.4.11.3 Errors
None.


18.4.12 mysql_escape_string()
unsigned int mysql_escape_string(char *to, const char *from, unsigned int length)

18.4.12.1 Description
from Àμö¿¡ ÀÖ´Â ¹®ÀÚ¿­À» ¼­¹ö·Î ³Ñ°ÜÁú escaped SQL ¹®À¸·Î ÀÎÄÚµùÇÏ¿© to Àμö¿¡ ³Ö´Â´Ù.
ÀÎÄÚµùµÇ¾îÁö´Â ¹®ÀÚµéÀº NUL(ASCII 0), `\n', `\r', `\', `'' µîÀÌ´Ù(7.1Àý¿¡¼­´Â ¹®ÀÚ¿­°ú ¼ýÀÚµéÀ»
»ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇÏ¿© ´Ù·é´Ù).

from ÀμöÀÎ ¹®ÀÚ¿­Àº length Àμö¿¡¼­ ÁÖ¾îÁø ¹ÙÀÌÆ® ¼ö¸¸Å­ÀÇ ±æÀÌ(terminating NULLÀ» Á¦
¿ÜÇÑ)¸¦ °¡Á®¾ß ÇÑ´Ù. to Àμö´Â ¹Ýµå½Ã Àû¾îµµ length Àμö¿¡¼­ ÁÖ¾îÁø ±æÀÌÀÇ 2¹è¿¡ 1À»
´õÇÑ ¸¸Å­ÀÇ ¹ÙÀÌÆ®°¡ ÇÒ´çµÇ¾î¾ß ÇÑ´Ù. mysql_escape_string() ÇÔ¼ö°¡ ¸®ÅÏÇÒ ¶§ to ÀμöÀÇ ³»
¿ëÀº null-terminated ¹®ÀÚ¿­ÀÌ µÈ´Ù. ¸®ÅÏ°ªÀº ÀÎÄÚµùµÇ¾îÁø ¹®ÀÚ¿­ÀÇ ±æÀÌÀ̸ç, ÀÌ°ÍÀº
terminating null ¹®ÀÚ°¡ Æ÷ÇÔµÇÁö ¾ÊÀº ±æÀÌ´Ù.

to Àμö¿¡ µé¾î°¡´Â ¹®ÀÚ¿­Àº null-terminated ¹®ÀÚ¿­ÀÌÁö¸¸ ÀÌ ¹®ÀÚ¿­À» strlen() ÇÔ¼ö³ª
strcpy() ÇÔ¼ö¿¡¼­ »ç¿ëÇÏ¿©¼­´Â ¾ÈµÈ´Ù. ¸¸¾à from Àμö·Î ÁÖ¾îÁø ¹®ÀÚ¿­ÀÌ nullÀ» Æ÷ÇÔÇÏ°í
ÀÖ´Ù¸é mysql_escape_string() ÇÔ¼ö´Â ÀÌ ¹®ÀÚ¸¦ '\'À» ¾Õ¿¡ ºÙ¿©¼­ to Àμö¿¡ ³Ö°Ô µÇ¸ç, ÀÌ°Í
À» À§ÀÇ ÇÔ¼öµéÀº ¿©ÀüÈ÷ terminating null·Î ÀνÄÇÏ°Ô µÈ´Ù.

¶ÇÇÑ ÀÌ·¯ÇÑ ³»ºÎÀûÀÎ null ¹ÙÀÌÆ®´Â mysql_query()¿¡ ÀÇÇؼ­ terminating null·Î ¿©°ÜÁö±â ¶§
¹®¿¡ ÁúÀǸ¦ ÀûÀýÇÏ°Ô ¼öÇàÇÒ ¼ö ¾ø°Ô µÈ´Ù. µû¶ó¼­ mysql_escape_query() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿©
ÁúÀǸ¦ ¸¸µç °æ¿ì mysql_query() ÇÔ¼ö¸¦ »ç¿ëÇϱ⠺¸´Ù´Â mysql_real_query() ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â
°ÍÀÌ ÁÁ´Ù.

18.4.12.2 Example
char query[1000],*end;

end = strmov(query, "INSERT INTO test_table values(");
*end++ = '\";
end += mysql_escape_string(query,"What's this",11);
*end++ = '\";
*end++ = ',';
*end++ = '\";
end += mysql_escape_string(query,"binary data: \0\r\n",16);
*end++ = '\";
*end++ = ')';

if (mysql_real_query(&mysql,query,(int) (end - query))) {
 fprintf(stderr, "Failed to insert row, Error: %s\n",
         mysql_error(&mysql));
}

¿¹Á¦¿¡¼­ »ç¿ëµÈ strmov() ÇÔ¼ö´Â mysqlclient ¶óÀ̺귯¸®¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç, strcpy() ÇÔ¼ö¿Í
ºñ½ÁÇÏ°Ô µ¿ÀÛÀ» ÇÏÁö¸¸ ù¹ø° ÀμöÀÇ terminating null¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ´Â °ÍÀÌ ´Ù
¸£´Ù.

18.4.12.3 Return values
terminating null ¹®ÀÚ¸¦ Á¦¿ÜÇÑ to Àμö¿¡ µé¾î°£ °ªÀÇ ±æÀÌ

18.4.12.4 Errors
None.


18.4.13 mysql_fetch_field()
MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)

18.4.13.1 Description
°á°ú ¼ÂÀÇ ÇÑ Ä÷³ÀÇ Á¤ÀÇ(definition)¸¦ MYSQL_FIELD ±¸Á¶Ã¼¿¡ ´ã¾Æ¼­ ¸®ÅÏÇÑ´Ù. °á°ú ¼Â
ÀÇ ¸ðµç Ä÷³µé¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò°íÀÚ ÇÏ´Â °æ¿ì¿¡´Â ÀÌ ÇÔ¼ö¸¦ ¹Ýº¹ÇÏ¿© È£ÃâÇÑ´Ù. ´õ ÀÌ
»óÀÇ Çʵ尡 ³²¾ÆÀÖÁö ¾ÊÀ¸¸é mysql_fetch_field() ÇÔ¼ö´Â NULLÀ» ¸®ÅÏÇÑ´Ù.

»õ·Î¿î SELECT ÁúÀÇ°¡ ¼öÇàµÉ ¶§¸¶´Ù mysql_fetch_field()´Â »õ·Î¿î ù¹ø° Çʵ忡 ´ëÇÑ Á¤
º¸¸¦ ¸®ÅÏÇϱâ À§ÇØ ÃʱâÈ­µÈ´Ù. mysql_fetch_field() ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅϵǴ Çʵå´Â ¶ÇÇÑ
mysql_field_seek() ÇÔ¼öÀÇ È£Ãâ¿¡ ÀÇÇØ ¿µÇâÀ» ¹Þ´Â´Ù.

SELECT ¹®À» ¼öÇàÇϱâ À§ÇØ msyql_query()¸¦ È£ÃâÇÏ¿´Áö¸¸ mysql_store_result()¸¦ È£ÃâÇÏÁö
¾ÊÀº °æ¿ì, mysql_fetch_field()¸¦ È£ÃâÇÏ¿© BLOB ÇʵåÀÇ ±æÀ̸¦ ¿äûÇÏ°Ô µÇ¸é MySQLÀº µð
ÆúÆ® blob ±æÀÌÀÎ 8K ¹ÙÀÌÆ®¸¦ ¸®ÅÏÇÑ´Ù. ÀÏ´Ü Çѹø °á°ú¸¦ ¾ò¾î¿À°Ô µÇ¸é field->max_length
´Â ÁÖ¾îÁø ÁúÀÇ¿¡ ÀÖ´Â Ä÷³ÀÇ °¡Àå Å« °ªÀÇ ±æÀ̸¦ °¡Áö°Ô µÈ´Ù.

18.4.13.2 Return values
ÇöÀç Ä÷³¿¡ ´ëÇÑ MYSQL_FIELD ±¸Á¶Ã¼¸¦ ¸®ÅÏÇϸç, ´õ ÀÌ»ó ³²Àº Çʵ尡 ¾øÀ¸¸é NULLÀ»
¸®ÅÏÇÑ´Ù.

18.4.13.3 Errors
None.

18.4.13.4 Example
MYSQL_FIELD *field;

while((field = mysql_fetch_field(result)))
{
  printf("field name %s\n", field->name);
}


18.4.14 mysql_fetch_fields()
MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)

18.4.14.1 Description
°á°ú ¼Â¿¡ ´ëÇÑ ¸ðµç MYSQL_FIELD ±¸Á¶Ã¼ÀÇ ¹è¿­À» ¸®ÅÏÇÑ´Ù. °¢°¢ÀÇ ±¸Á¶Ã¼´Â °á°ú ¼Â
³»ÀÇ °¢ Ä÷³µé¿¡ ´ëÇÑ Çʵå Á¤ÀÇ¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù.

18.4.14.2 Return values
°á°ú ¼ÂÀÇ ¸ðµç Ä÷³µé¿¡ ´ëÇÑ MYSQL_FIELD ±¸Á¶Ã¼ÀÇ ¹è¿­

18.4.14.3 Errors
None.

18.4.14.4 Example
unsigned int num_fields;
unsigned int i;
MYSQL_FIELD *fields;

num_fields = mysql_num_fields(result);
fields = mysql_fetch_fields(result);
for(i = 0; i < num_fields; i++) {
 printf("Field %u is %s\n", i, fields[i].name);
}


18.4.15 mysql_fetch_field_direct()
MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *result, unsigned int fieldnr)

18.4.15.1 Description
°á°ú ¼Â ³»¿¡¼­ fieldnr Àμö·Î ÁÖ¾îÁø ÇÊµå ¹øÈ£ÀÇ Çʵ忡 ´ëÇÑ Çʵå Á¤ÀǸ¦ MYSQL_FIELD
±¸Á¶Ã¼·Î ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ÀÓÀÇÀÇ Ä÷³¿¡ ´ëÇÑ Á¤ÀǸ¦ ¾ò¾î¿Ã ¼ö ÀÖ´Ù. fieldnr
°ªÀº 0¿¡¼­ mysql_num_fields(result)-1 »çÀÌÀÇ °ªÀ» °¡Á®¾ß ÇÑ´Ù.

18.4.15.2 Return values
ÁöÁ¤µÈ Çʵ忡 ´ëÇÑ MYSQL_FIELD ±¸Á¶Ã¼

18.4.15.3 Errors
None.

18.4.15.4 Example
unsigned int num_fields;
unsigned int i;
MYSQL_FIELD *field;

num_fields = mysql_num_fields(result);
for(i = 0; i < num_fields; i++) {
  field = mysql_fetch_field_direct(result, i);
  printf("Field %u is %s\n", i, field->name);
}


18.4.16 mysql_fetch_lengths()
unsigned long *mysql_fetch_lengths(MYSQL_RES *result)

18.4.16.1 Description
°á°ú ¼Â ³»ÀÇ ÇöÀç ÇàÀÇ Ä÷³µéÀÇ ±æÀ̸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à ÇÊµå °ªµéÀ» º¹»çÇÏ°íÀÚ ÇÏ´Â °æ
¿ì ÀÌ ±æÀÌ Á¤º¸´Â ÃÖÀûÈ­(optimization)À» À§ÇØ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. strlen() ÇÔ¼ö¸¦ È£
ÃâÇÒ ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÌ´Ù. ƯÈ÷ °á°ú ¼ÂÀÌ ÀÌÁø µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â °æ¿ì¿¡´Â strlen()
ÇÔ¼ö°¡ NULL ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â Çʵ忡 ´ëÇÏ¿© À߸øµÈ °á°ú¸¦ ¸®ÅÏÇÒ ¼ö Àֱ⠶§¹®¿¡
µ¥ÀÌÅÍÀÇ Å©±â¸¦ °áÁ¤Çϴµ¥ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù.

ºó Ä÷³À̳ª NULL °ªÀ» °¡Áö´Â Ä÷³¿¡ ´ëÇÑ ±æÀÌ´Â 0ÀÌ µÈ´Ù. ÀÌ µÎ°¡Áö °æ¿ì¸¦ ±¸ºÐÇÏ´Â
¹æ¹ýÀº mysql_fetch_row() ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸íÀ» ÂüÁ¶ÇÑ´Ù.

18.4.16.2 Return values
°¢ Ä÷³(null termination character¸¦ Á¦¿ÜÇÑ)ÀÇ Å©±â¸¦ °¡Áö°í ÀÖ´Â unsigned long Á¤¼öÇüÀÇ ¹è
¿­. ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì¿¡´Â NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.16.3 Errors
mysql_fetch_lengths()´Â °á°ú ¼ÂÀÇ ÇöÀç Çà¿¡ ´ëÇؼ­¸¸ À¯È¿ÇÏ´Ù. mysql_fetch_row() ÇÔ¼ö¸¦ È£
ÃâÇϱâ Àü¿¡ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϰųª °á°ú ¼Â ³»ÀÇ ¸ðµç ÇàµéÀ» ¾ò¾î¿Â ÈÄ¿¡ È£ÃâÇÏ´Â °æ¿ì¿¡
NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.16.4 Example
MYSQL_ROW row;
unsigned long *lengths;
unsigned int num_fields;
unsigned int i;

row = mysql_fetch_row(result);
if (row) {
  num_fields = mysql_num_fields(result);
  lengths = mysql_fetch_lengths(result);
  for(i = 0; i < num_fields; i++) {
       printf("Column %u is %lu bytes in length.\n", i, lengths[i]);
  }
}


18.4.17 mysql_fetch_row()
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

18.4.17.1 Description
°á°ú ¼ÂÀÇ ´ÙÀ½ ÇàÀ» ¾ò¾î¿Â´Ù. mysql_store_result() ÇÔ¼ö¸¦ È£ÃâÇÑ ÈÄ¿¡ »ç¿ëÇÑ °æ¿ì, ´õ ÀÌ
»ó ¾ò¾î¿Ã ÇàµéÀÌ ¾øÀ¸¸é mysql_fetch_row()´Â NULLÀ» ¸®ÅÏÇÑ´Ù. mysql_use_result() ÇÔ¼ö¸¦
È£ÃâÇÑ ÈÄ¿¡ »ç¿ëÇÑ °æ¿ì, ´õ ÀÌ»ó ¾ò¾î¿Ã ÇàµéÀÌ ¾ø°Å³ª ¿¡·¯°¡ ¹ß»ýÇÏ¿´À» ¶§ NULLÀ»
¸®ÅÏÇÑ´Ù.

Çà ³»ºÎÀÇ °ªµéÀÇ °³¼ö´Â mysql_num_fields(result)¿¡ ÀÇÇØ ÁÖ¾îÁø´Ù. mysql_fetch_row()ÀÇ È£Ãâ
¿¡ ÀÇÇÏ¿© ÇàÀÌ ¾ò¾îÁ³À» ¶§ Çà ³»ºÎÀÇ °ªµéÀº row[0]ºÎÅÍ row[mysql_num_fields(result)-1]±î
ÁöÀÇ °ªµé·Î ÂüÁ¶µÉ ¼ö ÀÖ´Ù. Çà ³»ºÎ¿¡ NULL °ªÀÌ ÀÖ´Â °æ¿ì¿¡´Â NULL Æ÷ÀÎÅͷΠǥ½ÃµÈ´Ù.

Çà ³»ºÎÀÇ ÇÊµå °ªµéÀÇ ±æÀ̵éÀº mysql_fetch_lengths() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ¾ò¾îÁú ¼ö ÀÕ´Ù.
ºñ¾îÀÖ´Â Çʵ峪 NULLÀ» Æ÷ÇÔÇÏ´Â ÇʵåµéÀº ¸ðµÎ 0ÀÇ ±æÀ̸¦ °¡Áö¸ç, ÇÊµå °ª¿¡ ´ëÇÑ Æ÷
ÀÎÅ͸¦ üũÇÔÀ¸·Î½á ÀÌ µÎ°¡Áö °æ¿ì¸¦ ±¸ºÐÇÒ ¼ö ÀÖ´Ù. ¸¸¾à Æ÷ÀÎÅÍ°¡ NULLÀ̸é ÇØ´ç ÇÊ
µå°¡ NULLÀÎ °æ¿ìÀ̸ç, ¾Æ´Ï¸é ºñ¾îÀÖ´Â ÇʵåÀÓÀ» ÀǹÌÇÑ´Ù.

18.4.17.2 Return values
´ÙÀ½ Çà¿¡ ´ëÇÑ MYSQL_ROW ±¸Á¶Ã¼. ´õ ÀÌ»ó ¾ò¾î¿Ã ÇàÀÌ ¾ø°Å³ª ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì
NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.17.3 Errors
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.17.4 Example
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;

num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result))) {
 unsigned long *lengths;
 lengths = mysql_fetch_lengths(result);
 for(i = 0; i < num_fields; i++) {
     printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
 }
 printf("\n");
}


18.4.18 mysql_field_seek()
MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)

18.4.18.1 Description
Çʵå Ä¿¼­¸¦ offset Àμö·Î ÁÖ¾îÁø À§Ä¡·Î ¼³Á¤ÇÑ´Ù. ´ÙÀ½ mysql_fetch_field() ÇÔ¼öÀÇ È£ÃâÀº
ÇØ´ç offset·Î À̵¿ÇÑ ¸¸Å­¿¡ ÇØ´çµÇ´Â Ä÷³¿¡ ´ëÇÑ Çʵå Á¤º¸¸¦ ¾ò¾î¿À°Ô µÈ´Ù.

ÇàÀÇ Ã¹ºÎºÐÀ¸·Î º¸³»±â À§Çؼ­´Â offsetÀ» 0À¸·Î ÁÖ°í ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù.

18.4.18.2 Return values
Çʵå Ä¿¼­ÀÇ ÀÌÀü °ª(previous value)

18.4.18.3 Errors
None.


18.4.19 mysql_field_tell()
MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *result)

18.4.19.1 Description
¸¶Áö¸· mysql_fetch_field() ÇÔ¼ö¿¡ ÀÇÇØ »ç¿ëµÈ Çʵå Ä¿¼­ÀÇ À§Ä¡¸¦ ¾Ë·ÁÁØ´Ù. ÀÌ ¸®ÅÏ°ªÀ»
mysql_field_seek() ÇÔ¼öÀÇ offset Àμö·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.

18.4.19.2 Return values
Çʵå Ä¿¼­ÀÇ ÇöÀç º¯À§(current offset)

18.4.19.3 Errors
None.


18.4.20 mysql_free_result()
void mysql_free_result(MYSQL_RES *result)

18.4.20.1 Description
mysql_store_result(), mysql_use_result(), mysql_list_dbs() µî¿¡ ÀÇÇÑ °á°ú¼ÂÀ» À§ÇØ ÇÒ´çµÇ¾ú´ø
¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù. °á°ú ¼ÂÀ» °¡Áö°í ÀÛ¾÷À» ³¡³»°í ³ª¸é ¹Ýµå½Ã mysql_free_result() ÇÔ¼ö¸¦
È£ÃâÇÏ¿© ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇØ ÁÖ¾î¾ß ÇÑ´Ù.

18.4.20.2 Return values
None.

18.4.20.3 Errors
None.


18.4.21 mysql_get_client_info()
char *mysql_get_client_info(void)

18.4.21.1 Description
Ŭ¶óÀ̾ðÆ® ¶óÀ̺귯¸® ¹öÀü(client library version)¿¡ ´ëÇÑ Á¤º¸¸¦ Ç¥½ÃÇÏ´Â ¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù.

18.4.21.2 Return values
MySQL client library versionÀ» Ç¥½ÃÇÏ´Â ¹®ÀÚ¿­

18.4.21.3 Errors
None.


18.4.22 mysql_get_host_info()
char *mysql_get_host_info(MYSQL *mysql)

18.4.22.1 Description
¼­¹ö È£½ºÆ® ³×ÀÓÀ» Æ÷ÇÔÇÏ´Â ÇöÀç »ç¿ëµÇ°í ÀÖ´Â ¿¬°á(connection)ÀÇ Çü½Ä(type)À» ±â¼úÇÏ´Â
¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù.

18.4.22.2 Return values
¼­¹ö È£½ºÆ® ³×ÀÓ(server host name)°ú ¿¬°á Çü½Ä(connection type)À» ³ªÅ¸³»´Â ¹®ÀÚ¿­

18.4.22.3 Errors
None.


18.4.23 mysql_get_proto_info()
unsigned int mysql_get_proto_info(MYSQL *mysql)

18.4.23.1 Description
ÇöÀç ¿¬°á¿¡ »ç¿ëµÇ°í ÀÖ´Â ÇÁ·ÎÅäÄÝÀÇ ¹öÀüÀ» ¸®ÅÏÇÑ´Ù.

18.4.23.2 Return values
ÇöÀç ¿¬°á¿¡ »ç¿ëµÇ°í ÀÖ´Â ÇÁ·ÎÅäÄÝ ¹öÀüÀ» ³ªÅ¸³»´Â unsigned integer

18.4.23.3 Errors
None.


18.4.24 mysql_get_server_info()
char *mysql_get_server_info(MYSQL *mysql)

18.4.24.1 Description
¼­¹ö ¹öÀü ³Ñ¹ö(server version number)¸¦ Ç¥½ÃÇÏ´Â ¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù.

18.4.24.2 Return values
¼­¹ö ¹öÀü ³Ñ¹ö¸¦ Ç¥½ÃÇÏ´Â ¹®ÀÚ¿­

18.4.24.3 Errors
None.


18.4.25 mysql_info()
char *mysql_info(MYSQL *mysql)

18.4.25.1 Description
°¡Àå ÃÖ±Ù¿¡ ¼öÇàµÈ Áú읭 peogks Á¤º¸¸¦ Á¦°øÇÏ´Â ¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù. ¹®ÀÚ¿­ÀÇ Çü½Ä(format)
Àº ÁúÀÇÀÇ Å¸ÀÔ¿¡ µû¶ó ´Þ¶óÁö¸ç, ¾Æ·¡¿Í °°´Ù. ¹®ÀÚ¿­Àº ÁúÀÇ¿¡ ´ëÇÑ ÀûÀýÇÑ °ªµéÀ» Æ÷ÇÔÇÏ
°Ô µÈ´Ù.

INSERT INTO ... SELECT ...
String format: Records: 100 Duplicates: 0 Warnings: 0
INSERT INTO ... VALUES (...),(...),(...)...
String format: Records: 3 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ...
String format: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE
String format: Records: 3 Duplicates: 0 Warnings: 0

18.4.25.2 Return values
°¡Àå ÃÖ±Ù¿¡ ¼öÇàµÈ ÁúÀÇ¿¡ ´ëÇÑ ºÎ°¡ÀûÀÎ Á¤º¸¸¦ Ç¥ÇöÇÏ´Â ¹®Àå¿­. ÇØ´ç ÁúÀÇ¿¡ ´ëÇÏ¿© ¾Æ
¹«·± Á¤º¸µµ ¾òÀ» ¼ö ¾ø´Â °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.25.3 Errors
None.


18.4.26 mysql_init()
MYSQL *mysql_init(MYSQL *mysql)

18.4.26.1 Description
mysql_real_connect() ÇÔ¼ö¸¦ À§ÇÑ MYSQL °´Ã¼¸¦ ÇÒ´ç(allocate)Çϰųª ÃʱâÈ­(initialize)ÇÑ´Ù.
¸¸¾à mysql Àμö°¡ NULL Æ÷ÀÎÅÍÀ̸é mysql_init() ÇÔ¼ö´Â »õ·Î¿î °´Ã¼¸¦ ÇÒ´ç, ÃʱâÈ­ÇÏ¿©
±× °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù. NULL Æ÷ÀÎÅÍ°¡ ¾Æ´Ï¸é °´Ã¼´Â ÃʱâÈ­µÈ ÈÄ °´Ã¼ÀÇ ÁÖ¼Ò°¡ ¸®ÅϵȴÙ.
¸¸¾à mysql_init() ÇÔ¼ö°¡ »õ·Î¿î °´Ã¼¸¦ ÇÒ´çÇÏ°Ô µÇ¸é ±× °´Ã¼´Â ¿¬°áÀ» ´Ý±â À§ÇØ
mysql_close() ÇÔ¼ö°¡ È£ÃâµÉ ¶§ ÇØÁ¦µÇ°Ô µÈ´Ù.

18.4.26.2 Return values
ÃʱâÈ­µÈ MYSQL * handle. »õ·Î¿î °´Ã¼¸¦ ÇÒ´çÇϱâ À§ÇÑ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÑ °æ¿ì NULLÀ» ¸®
ÅÏÇÑ´Ù.

18.4.26.3 Errors
¸Þ¸ð¸®°¡ ºÎÁ·ÇÑ °æ¿ì NULLÀÌ ¸®ÅϵȴÙ.


18.4.27 mysql_insert_id()
my_ulonglong mysql_insert_id(MYSQL *mysql)

18.4.27.1 Description
AUTO_INCREMENT Çʵ忡 ´ëÇÏ¿© °¡Àå ÃÖ±Ù¿¡ »ý¼ºµÈ ID¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö´Â
AUTO_INCREMENT Çʵ带 Æ÷ÇÔÇÏ´Â Å×ÀÌºí¿¡ INSERT ÁúÀǸ¦ ¼öÇàÇÑ ÀÌÈÄ¿¡ »ç¿ëµÈ´Ù.

18.4.27.2 Return values
°¡Àå ÃÖ±Ù¿¡ °»½ÅµÈ AUTO_INCREMENT ÇʵåÀÇ °ª

18.4.27.3 Errors
None.


18.4.28 mysql_kill()
int mysql_kill(MYSQL *mysql, unsigned long pid)

18.4.28.1 Description
¼­¹ö·Î ÇÏ¿©±Ý pid Àμö·Î ÁÖ¾îÁø ¾²·¹µå(thread)¸¦ Á×À̵µ·Ï(kill) ¿äûÇÑ´Ù.

18.4.28.2 Return values
¼º°øÀÎ °æ¿ì 0À», ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

18.4.28.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.29 mysql_list_dbs()
MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)

18.4.29.1 Description
wild Àμö·Î ÁöÁ¤µÈ °£´ÜÇÑ Á¤±Ô½Ä(simple regular expression)¿¡ ¸ÅÄ¡µÇ´Â ¼­¹ö »óÀÇ µ¥ÀÌÅͺ£
À̽º À̸§µéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â °á°ú ¼ÂÀ» ¸®ÅÏÇÑ´Ù. wild Àμö´Â '%', '_'¿Í °°Àº ¿ÍÀϵåÄ«µå ¹®
ÀÚ¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¸ç ¸ðµç µ¥ÀÌÅͺ£À̽º À̸§À» ¾ò°íÀÚ ÇÏ´Â °æ¿ì NULLÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ
´Ù. mysql_list_dbs() ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀº 'SHOW databases [LIKE wild]'¿Í °°Àº ÁúÀǸ¦ ¼öÇàÇÏ
´Â °Í°ú ºñ½ÁÇÏ´Ù.

¹Ýµå½Ã mysql_free_result() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© °á°ú ¼ÂÀ» ÇØÁ¦½ÃÄÑ ÁÖ¾î¾ß ÇÑ´Ù.

18.4.29.2 Return values
¼º°øÇÑ °æ¿ì MYSQL_RES °á°ú ¼ÂÀ» ¸®ÅÏÇϸç, ¿¡·¯ÀÎ °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.29.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_OUT_OF_MEMORY
Out of memory.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.30 mysql_list_fields()
MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)

18.4.30.1 Description
wild Àμö·Î ÁöÁ¤µÈ °£´ÜÇÑ Á¤±Ô½Ä(simple regular expression)¿¡ ¸ÅÄ¡µÇ´Â Å×ÀÌºí »óÀÇ Çʵå¸í
µéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â °á°ú ¼ÂÀ» ¸®ÅÏÇÑ´Ù. wild Àμö´Â '%', '_'¿Í °°Àº ¿ÍÀϵåÄ«µå ¹®ÀÚ¸¦ Æ÷ÇÔ
ÇÒ ¼ö ÀÖÀ¸¸ç ¸ðµç Çʵå¸íÀ» ¾ò°íÀÚ ÇÏ´Â °æ¿ì NULLÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. mysql_list_fields()
ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀº 'SHOW fields FROM table [LIKE wild]'¿Í °°Àº ÁúÀǸ¦ ¼öÇàÇÏ´Â °Í°ú ºñ
½ÁÇÏ´Ù.

¹Ýµå½Ã mysql_free_result() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© °á°ú ¼ÂÀ» ÇØÁ¦½ÃÄÑ ÁÖ¾î¾ß ÇÑ´Ù.

18.4.30.2 Return values
¼º°øÇÑ °æ¿ì MYSQL_RES °á°ú ¼ÂÀ» ¸®ÅÏÇϸç, ¿¡·¯ÀÎ °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.30.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.31 mysql_list_processes()
MYSQL_RES *mysql_list_processes(MYSQL *mysql)

18.4.31.1 Description
ÇöÀçÀÇ ¼­¹ö ¾²·¹µåµéÀ» ±â¼úÇÏ´Â °á°ú ¼ÂÀ» ¸®ÅÏÇÑ´Ù. ÀÌ°ÍÀº 'mysqladmin processlist'¿¡ ÀÇ
ÇÑ °á°ú¿Í µ¿ÀÏÇÑ Á¤º¸¸¦ º¸¿©ÁØ´Ù.
¹Ýµå½Ã mysql_free_result() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© °á°ú ¼ÂÀ» ÇØÁ¦½ÃÄÑ ÁÖ¾î¾ß ÇÑ´Ù.

18.4.31.2 Return values
¼º°øÇÑ °æ¿ì MYSQL_RES °á°ú ¼ÂÀ» ¸®ÅÏÇϸç, ¿¡·¯ÀÎ °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.31.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.32 mysql_list_tables()
MYSQL_RES *mysql_list_tables(MYSQL *mysql, const char *wild)

18.4.32.1 Description
wild Àμö·Î ÁöÁ¤µÈ °£´ÜÇÑ Á¤±Ô½Ä(simple regular expression)¿¡ ¸ÅÄ¡µÇ´Â ÇöÀç µ¥ÀÌÅͺ£À̽º
»óÀÇ Å×À̺í¸íµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â °á°ú ¼ÂÀ» ¸®ÅÏÇÑ´Ù. wild Àμö´Â '%', '_'¿Í °°Àº ¿ÍÀϵåÄ«
µå ¹®ÀÚ¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¸ç ¸ðµç Å×À̺í¸íÀ» ¾ò°íÀÚ ÇÏ´Â °æ¿ì NULLÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
mysql_list_tables() ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀº 'SHOW tables [LIKE wild]'¿Í °°Àº ÁúÀǸ¦ ¼öÇàÇÏ´Â
°Í°ú ºñ½ÁÇÏ´Ù.

¹Ýµå½Ã mysql_free_result() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© °á°ú ¼ÂÀ» ÇØÁ¦½ÃÄÑ ÁÖ¾î¾ß ÇÑ´Ù.

18.4.32.2 Return values
¼º°øÇÑ °æ¿ì MYSQL_RES °á°ú ¼ÂÀ» ¸®ÅÏÇϸç, ¿¡·¯ÀÎ °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.32.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.33 mysql_num_fields()
unsigned int mysql_num_fields(MYSQL_RES *result)
ȤÀº,
unsigned int mysql_num_fields(MYSQL *mysql)

18.4.33.1 Description
°á°ú ¼Â ³»ÀÇ Ä÷³ÀÇ °³¼ö¸¦ ¸®ÅÏÇÑ´Ù.

mysql_num_fields()¸¦ È£ÃâÇÒ ¶§ °á°ú ¼Â¿¡ ´ëÇÑ Æ÷ÀÎÅÍ È¤Àº ¿¬°á ÇÚµéÀ» °¡Áö°í È£ÃâÇÒ ¼ö
ÀÖ´Ù. ¸¸¾à mysql_store_result() ÇÔ¼ö°¡ NULLÀ» ¸®ÅÏÇÑ °æ¿ì(Áï °á°ú ¼Â Æ÷ÀÎÅ͸¦ ¾ò¾î¿Ã ¼ö
¾øÀ» ¶§) ¿¬°á ÇÚµéÀ» »ç¿ëÇÏ°Ô µÇ¸ç, ÀÌ °æ¿ì mysql_num_fields() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á
mysql_store_result() ÇÔ¼ö°¡ ºñ¾îÀÖÁö ¾ÊÀº °á°ú(non-empty result)¸¦ »ý¼ºÇÏ¿´³ªÀÇ ¿©ºÎ¸¦ °áÁ¤
ÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥À¸·Î ÇÏ¿©±Ý ÁúÀÇ°¡ SELECT (ȤÀº SELECT-like) ¹®
Àΰ¡ ¾Æ´Ñ°¡¸¦ ¾ËÁö ¸øÇÏ´Â »óÅ¿¡¼­ ÀûÀýÇÑ ÇൿÀ» ÃëÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ¾Æ·¡¿¡ ¿¹°¡
ÀÖ´Ù.

18.4.33.2 Return values
°á°ú ¼Â ³»ÀÇ ÇÊµå °³¼ö¸¦ Ç¥½ÃÇÏ´Â unsigned integer.

18.4.33.3 Errors
None.

18.4.33.4 Example
MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;

if (mysql_query(&mysql,query_string)) {
  // error
}
else {   // query succeeded, process any data returned by it
  result = mysql_store_result(&mysql);
  if (result) {   // there are rows
        num_fields = mysql_num_fields(result);
      // retrieve rows, then call mysql_free_result(result)
  }
  else {   // mysql_store_result() returned nothing; should it have?
      if(mysql_num_fields(&mysql) == 0) {
          // query does not return data
          // (it was not a SELECT)
          num_rows = mysql_affected_rows(&mysql);
      }
      else {   // mysql_store_result() should have returned data
          fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
      }
  }
}

¶Ç ´Ù¸¥ ´ë¾ÈÀº mysql_num_fields(&mysql) ´ë½Å¿¡ mysql_errno(&mysql)À» È£ÃâÇÏ´Â °ÍÀÌ´Ù.
ÀÌ °æ¿ì, ÁúÀÇ°¡ SELECT ¹®Àΰ¡¸¦ msyql_num_fields()ÀÇ ¸®ÅÏ°ªÀ¸·Î °áÁ¤Çϱ⺸´Ù´Â
mysql_store_result()·ÎºÎÅÍÀÇ ¿¡·¯¸¦ Á÷Á¢ üũÇÏ°Ô µÈ´Ù.


18.4.34 mysql_num_rows()
my_ulonglong mysql_num_rows(MYSQL_RES *result)

18.4.34.1 Description
°á°ú ¼Â ³»ÀÇ ÇàÀÇ °³¼ö¸¦ ¸®ÅÏÇÑ´Ù.

mysql_num_rows() ÇÔ¼öÀÇ »ç¿ë ¿©ºÎ´Â °á°ú ¼ÂÀ» ¾ò±â À§Çؼ­ mysql_store_result() ÇÔ¼ö¸¦ »ç
¿ëÇϴ°¡  mysql_use_result() ÇÔ¼ö¸¦ »ç¿ëÇϴ°¡¿¡ ´Þ·ÁÀÖ´Ù. ¸¸¾à mysql_store_result() ÇÔ¼ö¸¦
»ç¿ëÇÑ´Ù¸é mysql_num_rows() ÇÔ¼ö´Â Áï½Ã È£ÃâµÉ ¼ö ÀÖ´Ù. ¸¸¾à mysql_use_result() ÇÔ¼ö¸¦
»ç¿ëÇÑ´Ù¸é mysql_num_rows() ÇÔ¼ö´Â °á°ú ¼Â ³»ÀÇ ¸ðµç ÇàµéÀÌ retrieveµÇ±â ÀÌÀü¿¡´Â ¿Ã¹Ù
¸¥ °ªÀ» ¸®ÅÏÇÏÁö ¸øÇÑ´Ù.

18.4.34.2 Return values
°á°ú ¼Â ³»ÀÇ ÇàÀÇ °³¼ö

18.4.34.3 Errors
None.


18.4.35 mysql_ping()
int mysql_ping(MYSQL *mysql)

18.4.35.1 Description
¼­¹ö¿¡ ´ëÇÑ ¿¬°áÀÌ Á¦´ë·Î µ¿ÀÛÇÏ°í ÀÖ³ª¸¦ È®ÀÎÇϸç, ¸¸¾à ¿¬°áÀÌ ²÷¾îÁø °æ¿ì¿¡´Â ÀÚµ¿
À¸·Î À翬°áÀ» ½Ãµ¿ÇÑ´Ù.

ÀÌ ÇÔ¼ö´Â Ŭ¶óÀ̾ðÆ®°¡ ³Ê¹« ¿À·§µ¿¾È ½¬°í ÀÖÀ» ¶§ ¼­¹ö°¡ ¿¬°áÀ» ²÷¾ú³ª¸¦ üũÇÏ°í ÇÊ
¿äÇÏ´Ù¸é ´Ù½Ã ¿¬°áÇϱâ À§ÇØ »ç¿ëµÉ ¼ö ÀÖ´Ù.

18.4.35.2 Return values
¼­¹ö°¡ »ì¾ÆÀÖÀ¸¸é 0, ¿¡·¯ÀÎ °æ¿ì 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

18.4.35.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.36 mysql_query()
int mysql_query(MYSQL *mysql, const char *query)

18.4.36.1 Description
null-terminated ¹®ÀÚ¿­ÀÎ query Àμö¿¡ ÁöÁ¤µÈ SQL ÁúÀǸ¦ ¼öÇàÇÑ´Ù. ÁúÀÇ´Â ¹Ýµå½Ã ÇϳªÀÇ
SQL ¹®À¸·Î ÀÌ·ç¾îÁ®¾ß Çϸç, ÁúÀǹ®¿¡ ¼¼¹ÌÄÝ·Ð(;)À̳ª '\g'¸¦ ºÙ¿©¼­´Â ¾ÈµÈ´Ù.

mysql_query()´Â ÀÌÁø µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ÁúÀÇ¿¡´Â »ç¿ëÇÒ ¼ö ¾ø´Ù. ÀÌÁø µ¥ÀÌÅÍ´Â Áß°£¿¡
NULL ¹®ÀÚ¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ°æ¿ì mysql_query() ÇÔ¼ö´Â °Å±â¼­ ÁúÀÇ ¹®ÀÚ¿­ÀÌ ³¡³­ °Í
À¸·Î ÀνÄÇϱ⠶§¹®¿¡ ÀÌ°æ¿ì¿¡´Â mysql_real_query() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù.

18.4.36.2 Return values
¼º°øÀ̸é 0, ¿¡·¯À̸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏ.

18.4.36.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.37 mysql_real_connect()
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd,
const char *db, uint port, const char *unix_socket, uint client_flag)

18.4.37.1 Description
mysql_real_connect() ÇÔ¼ö´Â È£½ºÆ®¿¡¼­ µ¹¾Æ°¡°í ÀÖ´Â MySQL µ¥ÀÌÅͺ£À̽º ¿£Áø¿¡ ¿¬°áÀ»
½ÃµµÇÑ´Ù. mysql_real_connect()´Â mysql_get_client_info() ÇÔ¼ö¸¦ Á¦¿ÜÇÑ ´Ù¸¥ ¸ðµç API ÇÔ¼ö¸¦
¼öÇàÇϱâ ÀÌÀü¿¡ ¹Ýµå½Ã ¼º°øÀûÀ¸·Î ¼öÇàµÇ¾îÁ®¾ß ÇÑ´Ù.

»ç¿ëÇÏ´Â ÀμöµéÀº ´ÙÀ½°ú °°´Ù:

mysql Àμö´Â MYSQL connection ±¸Á¶Ã¼À̰ųª NULLÀÌ µÉ ¼ö ÀÖ´Ù. ¸¸¾à mysql Àμö°¡
NULLÀ̸é C API´Â ÀÚµ¿À¸·Î ¿¬°á ±¸Á¶Ã¼¸¦ À§ÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í mysql_close()°¡ È£Ãâ
µÉ ¶§ À̸¦ ÇØÁ¦ÇÑ´Ù. ÀÌ°æ¿ì ´ÜÁ¡Àº ¿¬°áÀÌ ½ÇÆÐÇÑ °æ¿ì ¿¡·¯ ¸Þ½ÃÁö¸¦ ¾ò¾î¿Ã ¼ö ¾ø´Ù´Â
°ÍÀÌ´Ù(mysql_errno()³ª mysql_error() ÇÔ¼ö·ÎºÎÅÍ ¿¡·¯ ¸Þ½ÃÁö¸¦ ¾ò±â À§Çؼ­´Â À¯È¿ÇÑ
MYSQL Æ÷ÀÎÅ͸¦ Á¦°øÇÏ¿©¾ß ÇÑ´Ù). mysql Àμö°¡ NULLÀÌ ¾Æ´Ï¸é ÀÌ¹Ì Á¸ÀçÇÏ´Â MYSQL
±¸Á¶Ã¼ÀÇ ÁÖ¼Ò°¡ µÇ¾î¾ß ÇÑ´Ù. ÀÌ °æ¿ì, mysql_real_connect() ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ¹Ýµå½Ã
mysql_init() ÇÔ¼ö¸¦ È£ÃâÇÏ¿© MYSQL ±¸Á¶Ã¼¸¦ ÃʱâÈ­ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ´ÙÀ½ÀÇ ¿¹¸¦ º¸¶ó.
host Àμö´Â È£½ºÆ®¸íÀÌ µÇ°Å³ª IP ¾îµå·¹½º°¡ µÉ ¼ö ÀÖ´Ù. ¸¸¾à host Àμö°¡ NULLÀ̰ųª
"localhost"ÀÎ °æ¿ì ·ÎÄà ȣ½ºÆ®·ÎÀÇ Á¢¼ÓÀ¸·Î °£ÁֵȴÙ. ¸¸¾à OS°¡ ¼ÒÄÏ(socket-Unix)À̳ª ÆÄ
ÀÌÇÁ(pipe-Win32)¸¦ Áö¿øÇÑ´Ù¸é ¼­¹ö¿ÍÀÇ ¿¬°áÀ» À§ÇÏ¿© TCP/IP ´ë½Å À̵éÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
user Àμö¿¡´Â »ç¿ëÀÚÀÇ MySQL ·Î±×ÀÎ ¾ÆÀ̵𸦠³Ö¾îÁØ´Ù. User Àμö°¡ NULLÀ̸é ÇöÀç »ç
¿ëÀÚ·Î °£ÁֵȴÙ. Unix ȯ°æ¿¡¼­´Â ÇöÀç ½Ã½ºÅÛ ·Î±×ÀθíÀÌ »ç¿ëµÇ¸ç, Windows ODBC¿¡¼­´Â
ÇöÀç »ç¿ëÀÚ¸íÀÌ ¸íÈ®È÷ ÁöÁ¤µÇ¾î¾ß ÇÑ´Ù. 15.4Àý¿¡¼­´Â ODBC °ü¸® ÇÁ·Î±×·¥¿¡¼­ °¢ Çʵå
µéÀ» ¾î¶»°Ô ä¿ï °ÍÀΰ¡¿¡ ´ëÇÏ¿© ³íÀÇÇÑ´Ù.
passwd Àμö¿¡´Â »ç¿ëÀÚ¿¡ ´ëÇÑ Æнº¿öµå¸¦ ³Ö¾îÁØ´Ù. ¸¸¾à passwd°¡ NULLÀ̸é user Å×ÀÌ
ºí¿¡¼­ Æнº¿öµå Çʵ尡 ºñ¾îÀÖ´Â »ç¿ëÀڵ鸸ÀÌ ¸ÅÄ¡¸¦ À§ÇØ Ã¼Å©µÇ¾îÁø´Ù. ÀÌ°ÍÀº µ¥ÀÌÅÍ
º£À̽º °ü¸®ÀÚ·Î ÇÏ¿©±Ý µ¥ÀÌÅͺ£À̽º »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ Æнº¿öµå¸¦ ¸í½ÃÇÏ¿´³ª¿¡ µû¶ó¼­ ´Ù
¸¥ ±ÇÇÑÀ» °¡Áöµµ·Ï ÇÏ´Â MySQL ±ÇÇÑ ½Ã½ºÅÛÀ» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ÁÖÀÇÇÒ °ÍÀº
mysql_real_connect() ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ Æнº¿öµå¸¦ ¾ÏȣȭÇÏ·Á°í ÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù´Â °Í
À̸ç, Æнº¿öµåÀÇ ¾Ïȣȭ´Â Ŭ¶óÀ̾ðÆ® API¿¡ ÀÇÇÏ¿© ÀÚµ¿À¸·Î ¼öÇàµÈ´Ù.
db Àμö´Â »ç¿ëÇÒ µ¥ÀÌÅͺ£À̽ºÀÇ À̸§À» ³Ö¾îÁØ´Ù. ¸¸¾à db Àμö°¡ NULLÀÌ¸é µðÆúÆ® µ¥
ÀÌÅͺ£À̽º¿¡ ¿¬°áÀ» ½ÃµµÇÏ°Ô µÈ´Ù.
port Àμö°¡ 0ÀÌ ¾Æ´Ï¸é port Àμö¿¡ ¸í½ÃµÈ Æ÷Æ® ¹øÈ£¸¦ TCP/IP ¿¬°áÀ» À§ÇÑ Æ÷Æ® ¹øÈ£·Î
»ç¿ëÇÏ°Ô µÈ´Ù. host Àμö°¡ ¿¬°áÀÇ Çü½ÄÀ» °áÁ¤ÇÑ´Ù´Â °Í¿¡ ÁÖÀÇÇÑ´Ù.
unix_socket Àμö°¡ NULLÀÌ ¾Æ´Ï¸é ÀÌ Àμö ¹®ÀÚ¿­ÀÌ »ç¿ëµÉ socketÀ̳ª named pipe°¡ µÈ´Ù.
client_flag °ªÀº º¸Åë 0ÀÌÁö¸¸ ¸Å¿ì Ưº°ÇÑ °æ¿ì¿¡ ´ÙÀ½ÀÇ Ç÷¡±×µéÀÇ Á¶ÇÕÀ¸·Î ¼³Á¤ÇÒ ¼ö
ÀÖ´Ù.

-----------------------------------------------------------------------------------------
| Flag name    | Flag meaning |
-----------------------------------------------------------------------------------------
| CLIENT_FOUND_ROWS | affected rowÀÇ °¹¼ö°¡ ¾Æ´Ñ found rowÀÇ °¹¼ö¸¦ ¸®ÅÏÇÑ´Ù. |
-----------------------------------------------------------------------------------------
| CLIENT_NO_SCHEMA  | db_name.tbl_name.col_name Çü½ÄÀÇ ¹®¹ý(syntax)À» Çã¿ëÇÏÁö ¾Ê´Â´Ù. |
|    | ÀÌ°ÍÀº ODBC¸¦ À§ÇÑ °ÍÀ¸·Î¼­, ¸¸¾à ÀÌ¿Í °°Àº ¹®¹ýÀ» »ç¿ëÇϸé Æļ­°¡|
|    | ¿¡·¯¸¦ ¹ß»ý½ÃÅ°°Ô µÈ´Ù. ÀÌ°ÍÀº ODBC ÇÁ·Î±×·¥¿¡¼­ ¹ö±×¸¦ ã¾Æ³¾ ¶§ |
|    | À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. |
-----------------------------------------------------------------------------------------
| CLIENT_COMPRESS   | ¾ÐÃà ÇÁ·ÎÅäÄÝ(compression protocol)À» »ç¿ëÇÑ´Ù. |
-----------------------------------------------------------------------------------------
| CLIENT_ODBC    | Ŭ¶óÀ̾ðÆ®°¡ ODBC Ŭ¶óÀ̾ðÆ®ÀÓÀ» ¾Ë·ÁÁÖ¸ç, ÀÌ°ÍÀº mysqld°¡ Á»´õ |
|    | ODBC¿¡ ÀûÇÕÇϵµ·Ï ÇØÁØ´Ù. |
-----------------------------------------------------------------------------------------

18.4.37.2 Return values
¿¬°áÀÌ ¼º°øÇϸé MYSQL * ¿¬°á ÇÚµé(connection handle)À» ¸®ÅÏÇϸç, ¿¬°á¿¡ ½ÇÆÐÇϸé NULL
À» ¸®ÅÏÇÑ´Ù. ¿¬°áÀÌ ¼º°øÇÑ °æ¿ì ¸®ÅÏ °ªÀº ù¹ø° Àμö¿¡ NULLÀ» ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Ù¸é ±×
Àμö¿Í µ¿ÀÏÇÏ´Ù.

18.4.37.3 Errors
CR_CONN_HOST_ERROR
MySQL ¼­¹ö·ÎÀÇ ¿¬°á¿¡ ½ÇÆÐ
CR_CONNECTION_ERROR
·ÎÄà MySQL ¼­¹ö·ÎÀÇ ¿¬°á¿¡ ½ÇÆÐ
CR_IPSOCK_ERROR
IP ¼ÒÄÏÀÇ »ý¼º¿¡ ½ÇÆÐ
CR_OUT_OF_MEMORY
¸Þ¸ð¸®°¡ ¾øÀ½(Out of memory).
CR_SOCKET_CREATE_ERROR
Unix ¼ÒÄÏÀÇ »ý¼º¿¡ ½ÇÆÐ
CR_UNKNOWN_HOST
ÇØ´ç È£½ºÆ®¸í¿¡ ´ëÇÑ IP ÁÖ¼Ò¸¦ ãÀ» ¼ö ¾øÀ½.
CR_VERSION_ERROR
ÀÏÄ¡ÇÏÁö ¾Ê´Â ÇÁ·ÎÅäÄÝ ¹öÀüÀ» »ç¿ëÇϴ Ŭ¶óÀ̾ðÆ® ¶óÀ̺귯¸®¸¦ °¡Áö°í ¼­¹ö¿¡ Á¢¼Ó
ÇÏ·Á ½ÃµµÇÔÀ¸·Î ÀÎÇÏ¿© ÇÁ·ÎÅäÄÝ ºÒÀÏÄ¡°¡ ¹ß»ýÇÔ. ÀÌ°ÍÀº ¸Å¿ì ¿À·¡µÈ Ŭ¶óÀ̾ðÆ®
¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¿© »õ·Î¿î ¹öÀüÀÇ ¼­¹ö¿¡ Á¢¼ÓÇÏ°íÀÚ ÇÏ´Â °æ¿ì¿¡ ¹ß»ýÇÑ´Ù. ÀÌ·±
°æ¿ì¿¡´Â ¼­¹ö¸¦ ½Ãµ¿ÇÒ ¶§ '--old-protocol' ¿É¼ÇÀ» ³Ö¾î¼­ ½Ãµ¿Çϸé ÇØ°áÇÒ ¼ö ÀÖ´Ù.
CR_NAMEDPIPEOPEN_ERROR;
Win32 ȯ°æ¿¡¼­ named pipe¸¦ »ý¼ºÇϴµ¥ ½ÇÆÐÇÔ.
CR_NAMEDPIPEWAIT_ERROR;
Win32 ȯ°æ¿¡¼­ named pipe¸¦ ±â´Ù¸®´Âµ¥ ½ÇÆÐÇÔ.
CR_NAMEDPIPESETSTATE_ERROR;
Win32 ȯ°æ¿¡¼­ pipe Çڵ鷯¸¦ ¾ò´Âµ¥ ½ÇÆÐÇÔ.

18.4.37.4 Example
MYSQL mysql;

mysql_init(&mysql);
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0)) {
  fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql));
}


18.4.38 mysql_real_query()
int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length)

18.4.38.1 Description
query Àμö¿¡ ÁöÁ¤µÈ SQL ÁúÀǸ¦ ¼öÇàÇϸç, query Àμö´Â length Àμö¿¡ ÁöÁ¤µÈ ±æÀ̸¦ °¡Á®
¾ß ÇÑ´Ù. ÁúÀÇ´Â ÇϳªÀÇ SQL ¹®À¸·Î ÀÌ·ç¾îÁ®¾ß Çϸç, ¼¼¹ÌÄÝ·ÐÀ̳ª '\g'¸¦ SQL¹®¿¡ ºÙ¿©¼­
´Â ¾ÈµÈ´Ù.

ÀÌÁø µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ÁúÀÇ µ¥ÀÌÅÍÀÎ °æ¿ì mysql_query() ÇÔ¼ö°¡ ¾Æ´Ñ mysql_real_query()
ÇÔ¼ö¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. ¶ÇÇÑ mysql_real_query()ÇÔ¼ö´Â ÁúÀǹ®ÀÇ ±æÀ̸¦ ¾ò±â À§ÇÑ strlen()
ÇÔ¼ö¸¦ ¼öÇàÇÏÁö ¾Ê±â ¶§¹®¿¡ mysql_query() ÇÔ¼ö¿¡ ºñÇÏ¿© ¼öÇà ¼Óµµ°¡ ºü¸£´Ù.

18.4.38.2 Return values
ÁúÀÇ¿¡ ¼º°øÇϸé 0, ¿¡·¯°¡ ¹ß»ýÇϸé 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

18.4.38.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.39 mysql_reload()
int mysql_reload(MYSQL *mysql)

18.4.39.1 Description
MySQL ¼­¹ö·Î ÇÏ¿©±Ý grant Å×À̺íÀ» ´Ù½Ã Àеµ·Ï ¿äûÇÑ´Ù. ÇöÀç ¿¬°áµÇ¾î ÀÖ´Â »ç¿ëÀÚ´Â
¹Ýµå½Ã ±ÇÇÑ ¼³Á¤À» ´Ù½Ã Àоî¾ß ÇÑ´Ù.

ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº ±ÇÀåµÇÁö ¾ÊÀ¸¸ç, ´ë½Å 'FLUSH PRIVILEGES' SQL ¹®À»
mysql_query() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¼öÇàÇÏ´Â °ÍÀÌ ÁÁ´Ù.

18.4.39.2 Return values
¼º°øÇϸé 0, ¿¡·¯¸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

18.4.39.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.40 mysql_row_seek()
MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset)

18.4.40.1 Description
°á°ú ¼Â ³»¿¡ Çà Ä¿¼­(row cursor)¸¦ ÀÓÀÇÀÇ À§Ä¡·Î ¼³Á¤ÇÑ´Ù. À̸¦ À§Çؼ­´Â °á°ú ¼Â ±¸Á¶Ã¼
°¡ Àüü ÁúÀÇ °á°ú¸¦ °¡Áö°í ÀÖ¾î¾ß Çϸç, µû¶ó¼­ mysql_row_seek() ÇÔ¼ö´Â mysql_use_result()
ÇÔ¼ö¿Í´Â »ç¿ëÇÒ ¼ö ¾ø°í mysql_store_result() ÇÔ¼ö¿Í »ç¿ëÇÒ ¼ö ÀÖ´Ù.

offset Àμö´Â mysql_row_tell() ÇÔ¼ö³ª mysql_row_seek() ÇÔ¼ö¸¦ È£ÃâÇÑ ¸®ÅÏ°ªÀÌ µÇ¾î¾ß Çϸç,
ÀÌ °ªÀº ´Ü¼øÇÑ Çà ¹øÈ£¸¦ ÀǹÌÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù. ¸¸¾à Çà ¹øÈ£¸¦ ÀÌ¿ëÇÏ¿© °á°ú ¼Â ³»¿¡¼­
ÇàÀ» ã°íÀÚ ÇÏ´Â °æ¿ì¿¡´Â mysql_data_seek() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù.

18.4.40.2 Return values
Çà Ä¿¼­(row cursor)ÀÇ ÀÌÀü°ª(previous value). ÀÌ °ªÀº mysql_row_seek() ÇÔ¼öÀÇ Àμö·Î ³Ñ°ÜÁø
´Ù.

18.4.40.3 Errors
None.


18.4.41 mysql_row_tell()
MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result)

18.4.41.1 Description
¸¶Áö¸· mysql_fetch_row() ÇÔ¼ö È£Ãâ¿¡ ÀÇÇÑ Çà Ä¿¼­ÀÇ ÇöÀç À§Ä¡¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ°ªÀº
mysql_row_seek() ÇÔ¼öÀÇ Àμö·Î ³Ñ°ÜÁø´Ù.

mysql_row_tell() ÇÔ¼ö´Â ¹Ýµå½Ã mysql_store_result() ÇÔ¼ö µÚ¿¡ »ç¿ëµÇ¾î¾ß Çϸç,
mysql_use_result() ÇÔ¼ö µÚ¿¡´Â »ç¿ëÇÒ ¼ö ¾ø´Ù.

18.4.41.2 Return values
Çà Ä¿¼­ÀÇ ÇöÀç º¯À§(The current offset of the row cursor).

18.4.41.3 Errors
None.


18.4.42 mysql_select_db()
int mysql_select_db(MYSQL *mysql, const char *db)

18.4.42.1 Description
db Àμö¿¡ ÁöÁ¤ÇÑ µ¥ÀÌÅͺ£À̽º¸¦ mysql Àμö°¡ °¡Áø ¿¬°á¿¡ ´ëÇÑ ÇöÀç ÀÛ¾÷ µ¥ÀÌÅͺ£À̽º
°¡ µÇµµ·Ï ÇÑ´Ù. ÀÌÈÄÀÇ ÁúÀÇ¿¡ ´ëÇؼ­ ¿©±â¼­ ÁöÁ¤ÇÑ µ¥ÀÌÅͺ£À̽º°¡ µ¥ÀÌÅͺ£À̽º¸¦ ¸í½Ã
ÇÏÁö ¾ÊÀº Å×À̺í ÂüÁ¶¿¡ ´ëÇÑ µðÆúÆ® µ¥ÀÌÅͺ£À̽º·Î »ç¿ëµÈ´Ù.

¿¬°áµÇ¾î ÀÖ´Â »ç¿ëÀÚ°¡ db Àμö¿¡ ÁöÁ¤µÈ µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÒ ±ÇÇÑÀ» °¡Áö°í ÀÖ´Ù´Â °Í
ÀÌ ÀÎÁõµÇÁö ¾ÊÀ¸¸é mysql_select_db() ÇÔ¼ö´Â ½ÇÆÐÇÑ´Ù.

18.4.42.2 Return values
¼º°øÀ̸é 0, ¿¡·¯À̸é 0ÀÌ ¾Æ´Ñ °ª

18.4.42.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.43 mysql_shutdown()
int mysql_shutdown(MYSQL *mysql)

18.4.43.1 Description
µ¥ÀÌÅͺ£À̽º ¼­¹ö·Î ÇÏ¿©±Ý ¼Ë´Ù¿îµÇµµ·Ï ¿äûÇϸç, ÇöÀç ¿¬°áµÈ »ç¿ëÀÚ°¡ ¼Ë´Ù¿î ±ÇÇÑÀ»
°¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.

18.4.43.2 Return values
¼º°øÀ̸é 0, ¿¡·¯À̸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù.

18.4.43.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.44 mysql_stat()
char *mysql_stat(MYSQL *mysql)

18.4.44.1 Description
'mysqladmin status' ¸í·É¾î¿¡ ÀÇÇØ Á¦°øµÇ´Â Á¤º¸¿Í ºñ½ÁÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¹®ÀÚ¿­À»
¸®ÅÏÇÑ´Ù. ÀÌ ¹®ÀÚ¿­¿¡´Â ±¸µ¿½Ã°£(uptime), ½ÇÇàµÇ°í ÀÖ´Â ¾²·¹µå ¼ö, Áú¹®(question), Àç½Ãµ¿
(reload), ¿­·ÁÀÖ´Â Å×ÀÌºí µî¿¡ ´ëÇÑ Á¤º¸°¡ Æ÷ÇԵǾî ÀÖ´Ù.

18.4.44.2 Return values
¼­¹ö »óŸ¦ ±â¼úÇÏ´Â ¹®ÀÚ¿­. ¿¡·¯À̸é NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.44.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.45 mysql_store_result()
MYSQL_RES *mysql_store_result(MYSQL *mysql)

18.4.45.1 Description
µ¥ÀÌÅ͸¦ ¾ò¾î¿À´Â ÁúÀÇ(SELECT, SHOW, DESCRIBE, EXPLAIN)ÀÇ ¼öÇà¿¡ ´ëÇÏ¿©
mysql_store_result() ȤÀº mysql_use_result() ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

mysql_store_result() ÇÔ¼ö´Â Àüü ÁúÀÇ °á°ú¸¦ Ŭ¶óÀ̾ðÆ®·Î Àоî¿À¸ç, MYSQL_RES ±¸Á¶Ã¼¸¦
ÇÒ´çÇÏ°í °á°ú¸¦ ÀÌ ±¸Á¶Ã¼¿¡ ³Ö¾îÁØ´Ù. ¾Æ¹« Ç൵ ¸®ÅϵÇÁö ¾ÊÀ¸¸é ºó °á°ú ¼Â(empty result
set)ÀÌ ¸®ÅϵȴÙ(ºó °á°ú ¼ÂÀº NULL ¸®ÅÏ °ª°ú´Â ´Ù¸£´Ù).

mysql_store_result() ÇÔ¼ö¸¦ È£ÃâÇϸé mysql_num_rows() ÇÔ¼ö¸¦ È£ÃâÇÏ¿© °á°ú ¼Â ³»¿¡ ¾ó¸¶
³ª ¸¹Àº ÇàµéÀÌ Àִ°¡¸¦ ¾Ë¾Æ º¼ ¼ö ÀÖ´Ù.
mysql_fetch_row() ÇÔ¼ö¸¦ È£ÃâÇÏ¿© °á°ú ¼ÂÀ¸·ÎºÎÅÍ ÇàµéÀ» ¾ò¾î¿Ã ¼ö ÀÖÀ¸¸ç, ȤÀº
mysql_row_seek()¿Í mysql_row_tell() ÇÔ¼ö¸¦ ÅëÇÏ¿© °á°ú ¼Â ³»¿¡¼­ÀÇ ÇöÇà À§Ä¡¸¦ ¾ò°Å³ª À§
Ä¡¸¦ ¼³Á¤ÇØÁÙ ¼ö ÀÖ´Ù.

°á°ú¼ÂÀ» ÅëÇÑ ÀÛ¾÷ÀÌ ³¡³ª¸é ¹Ýµå½Ã mysql_free_result() ÇÔ¼ö¸¦ È£ÃâÇØÁØ´Ù.

18.4.45.2 Return values
°á°ú°¡ ÀúÀåµÈ MYSQL_RES °á°ú ±¸Á¶Ã¼(result structure). ¿¡·¯À̸é NULLÀ» ¸®ÅÏ.

18.4.45.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_OUT_OF_MEMORY
Out of memory.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

18.4.46 mysql_thread_id()
unsigned long mysql_thread_id(MYSQL *mysql)

18.4.46.1 Description
ÇöÀç ¿¬°á¿¡ ´ëÇÑ ¾²·¹µå ID¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ °ªÀº mysql_kill() ÇÔ¼öÀÇ Àμö·Î »ç¿ëµÇ¾î ¾²·¡
µå¸¦ kill Çϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.

18.4.46.2 Return values
ÇöÀç ¿¬°á¿¡ ´ëÇÑ ¾²·¹µå ID.

18.4.46.3 Errors
None.

18.4.47 mysql_use_result()
MYSQL_RES *mysql_use_result(MYSQL *mysql)

18.4.47.1 Description
µ¥ÀÌÅ͸¦ ¾ò¾î¿À´Â ÁúÀÇ(SELECT, SHOW, DESCRIBE, EXPLAIN)ÀÇ ¼öÇà¿¡ ´ëÇÏ¿©
mysql_store_result() ȤÀº mysql_use_result() ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

mysql_use_result() ÇÔ¼ö´Â °á°ú ¼ÂÀ» ¾ò¾î¿À´Â ÀÛ¾÷À» ÃʱâÈ­ÇÏÁö¸¸ mysql_store_result() ÇÔ¼ö
ó·³ ½ÇÁ¦·Î °á°ú ¼ÂÀ» Àо Ŭ¶óÀ̾ðÆ®¿¡°Ô ³Ñ°ÜÁÖÁö´Â ¾Ê´Â´Ù. ´ë½Å mysql_fetch_row()
ÇÔ¼ö¸¦ °¢°¢ È£ÃâÇÔÀ¸·Î½á °¢ ÇàÀÌ Çϳª¾¿ ¾ò¾îÁø´Ù. ÀÌ°ÍÀº ÁúÀÇÀÇ °á°ú¸¦ Àӽà Å×À̺íÀÌ
³ª Áö¿ª ¹öÆÛ¿¡ ÀúÀåÇÏÁö ¾Ê°í ¼­¹ö·ÎºÎÅÍ Á÷Á¢ Àоî¿À°Ô µÇ¸ç, ÀÌ´Â mysql_store_result() ÇÔ
¼ö¿¡ ºñÇÏ¿© Á»´õ ºü¸£°í ÈξÀ ÀûÀº ¾çÀÇ ¸Þ¸ð¸®¸¦ Â÷ÁöÇÑ´Ù. Ŭ¶óÀ̾ðÆ®´Â ÇöÀç Çà¿¡ ´ëÇÑ
¸Þ¸ð¸®¿Í max_allowed_packet ¹ÙÀÌÆ®±îÁö Áõ°¡ÇÒ ¼ö ÀÖ´Â Åë½Å ¹öÆÛ(communication buffer)¸¸
À» ÇÒ´çÇÏ°Ô µÈ´Ù.

ÇÏÁö¸¸ Ŭ¶óÀ̾ðÆ® Ãø¿¡¼­ °¢ Çະ·Î ¸¹Àº ÀÛ¾÷À» ¼öÇàÇÏ°í Àְųª »ç¿ëÀÚ°¡ ^S(stop scroll)
À» ÀÔ·ÂÇÒ ¼öµµ ÀÖ´Â ½ºÅ©¸°À¸·Î °á°ú¸¦ ³»º¸³»´Â °æ¿ì¿¡´Â mysql_use_result() ÇÔ¼ö¸¦ »ç¿ë
Çؼ­´Â ¾ÈµÈ´Ù. ÀÌ°ÍÀº ¼­¹ö¸¦ ¸ØÃß°Ô ÇÏ°í ´Ù¸¥ ¾²·¹µåµé·Î ÇÏ¿©±Ý µ¥ÀÌÅÍ°¡ ¾ò¾îÁö°í ÀÖ
´Â Å×À̺íÀ» °»½ÅÇÏ´Â °ÍÀ» ¸·°Ô µÈ´Ù.

mysql_use_result() ÇÔ¼ö¸¦ »ç¿ëÇÒ ¶§´Â NULL °ªÀÌ ¸®Å쵃 ¶§±îÁö mysql_fetch_row() ÇÔ¼ö¸¦
¼öÇàÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¾ÆÁ÷ ¾ò¾î¿ÀÁö ¾ÊÀº ÇàµéÀÌ ´ÙÀ½ ÁúÀÇ¿¡ ´ëÇÑ °á°ú ¼ÂÀ¸·Î
³Ñ¾î°¡¼­ ¸®ÅÏµÇ°Ô µÈ´Ù. C API´Â 'Commands out of sync' ¿¡·¯¸¦ ÁÖ°Ô µÈ´Ù.

mysql_use_result() ÇÔ¼ö·ÎºÎÅÍ ¸®ÅϵǴ °á°ú¿¡ ´ëÇؼ­ mysql_data_seek(), mysql_row_seek(),
mysql_row_tell(), mysql_num_rows(), mysql_affected_rows()°ú °°Àº ÇÔ¼öµéÀ» »ç¿ëÇÒ ¼ö ¾øÀ¸¸ç,
ȤÀº mysql_use_result() ÇÔ¼ö°¡ Á¾·áÇÒ ¶§±îÁö ´Ù¸¥ ÁúÀǸ¦ ¼öÇàÇÒ ¼ö ¾ø´Ù(±×·¯³ª ¸ðµç Çàµé
À» fetchÇÑ ÈÄ¿¡´Â mysql_num_rows() ÇÔ¼ö°¡ ½ÇÁ¦·Î fetchµÇ¾îÁø ÇàÀÇ °³¼ö¸¦ ¸®ÅÏÇÑ´Ù).

°á°ú ¼Â¿¡ ´ëÇÑ ÀÛ¾÷ÀÌ ³¡³ª¸é ¹Ýµå½Ã mysql_free_result()¸¦ È£ÃâÇÏ¿©¾ß ÇÑ´Ù.

18.4.47.2 Return values
MYSQL_RES °á°ú ±¸Á¶Ã¼(result structure). ¿¡·¯À̸é NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.47.3 Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_OUT_OF_MEMORY
Out of memory.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.


18.4.48 mysql_query() ÇÔ¼ö°¡ ¼º°øÇÏ¿´´Âµ¥ mysql_store_result() ÇÔ¼ö°¡ °¡²û NULLÀ» ¸®ÅÏÇÏ
´Â ÀÌÀ¯´Â ¹«¾ùÀΰ¡?

ÀÌ·± °æ¿ì°¡ ÀÖÀ» ¼ö ÀÖÀ¸¸ç ÀÌ°ÍÀº ´ÙÀ½ Áß ÇϳªÀÇ »óȲÀÌ ¹ß»ýÇÏ¿´À½À» ÀǹÌÇÑ´Ù:

malloc()ÀÌ ½ÇÆÐÇÑ °æ¿ì(¿¹¸¦ µé¾î °á°ú ¼ÂÀÌ ³Ê¹« Å« °æ¿ì).
µ¥ÀÌÅ͸¦ ÀÐÀ» ¼ö ¾ø´Â °æ¿ì(¿¬°á¿¡ ¿¡·¯°¡ »ý±â´Â µî).
ÁúÀÇ°¡ ¾Æ¹« µ¥ÀÌÅ͵µ ¸®ÅÏÇÏÁö ¾Ê´Â °æ¿ì(INSERT, UPDATE, DELETE ¹® µîÀÇ °æ¿ì).

ÁúÀǹ®ÀÌ ºñ¾îÀÖÁö ¾ÊÀº(non-empty) °á°ú¸¦ »ý¼ºÇÏ¿´³ª´Â mysql_num_fields() ÇÔ¼ö¸¦ È£ÃâÇÔ
À¸·Î½á üũÇغ¼ ¼ö ÀÖ´Ù. ¸¸¾à mysql_num_fields() ÇÔ¼ö°¡ 0À» ¸®ÅÏÇÏ¸é °á°ú¼ÂÀÌ ºó °ÍÀÌ
°í °¡Àå ¸¶Áö¸· ÁúÀÇ°¡ INSERT, DELETE¿Í °°ÀÌ °ªÀ» ¸®ÅÏÇÏÁö ¾Ê´Â ÁúÀǹ®ÀÓÀ» ÀǹÌÇÑ´Ù.
mysql_num_fields() ÇÔ¼ö°¡ 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÏ´Â °æ¿ì´Â ÁúÀǹ®ÀÌ ºñ¾îÀÖÁö ¾Ê´Â °á°ú¸¦
»ý¼ºÇؾ߸¸ ÇÔÀ» ÀǹÌÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº mysql_num_fields() ÇÔ¼öÀÇ ¼³¸íÀ» ÂüÁ¶ÇÑ´Ù.

mysql_errno() ÇÔ¼ö³ª mysql_error() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ¿¡·¯¸¦ Å×½ºÆ®Çغ¼ ¼ö ÀÖ´Ù.

18.4.49 What results can I get from a query?

ÁúÀÇÀÇ °á°ú·Î ¸®ÅϵǴ °á°ú ¼Â¿¡ µ¡ºÙ¿© ´ÙÀ½°ú °°Àº Á¤º¸µéÀ» ¶ÇÇÑ ¾òÀ» ¼ö ÀÖ´Ù:
- mysql_affected_rows()´Â INSERT, UPDATE, DELETE ¹®À» ¼öÇàÇÒ ¶§ °¡Àå ÃÖ±Ù¿¡ ¼öÇàµÈ
ÁúÀÇ¿¡ ÀÇÇØ affectedµÈ ÇàµéÀÇ °³¼ö¸¦ ¸®ÅÏÇÑ´Ù. ¿¹¿Ü´Â DELETE°¡ WHERE ±¸¹®¾øÀÌ
»ç¿ëµÇ¾î Å×À̺íÀÌ truncateµÇ´Â °æ¿ìÀÌ´Ù. ÀÌ °æ¿ì mysql_affected_rows() ÇÔ¼ö´Â affected
µÈ ·¹ÄÚµåÀÇ ¼ýÀڷμ­ 0À» ¸®ÅÏÇÑ´Ù.
- mysql_num_rows()´Â °á°ú ¼Â ³»ÀÇ ÇàÀÇ °³¼ö¸¦ ¸®ÅÏÇÑ´Ù. mysql_store_result() ÇÔ¼ö¿Í ÇÔ²²
»ç¿ëµÇ´Â °æ¿ì¿¡´Â mysql_store_result()°¡ ¸®ÅϵÇÀÚ¸¶ÀÚ ÃÖ´ëÇÑ »¡¸® mysql_num_rows()°¡
È£ÃâµÇ¾îÁø´Ù. mysql_use_result()¿Í ÇÔ²² »ç¿ëµÇ´Â °æ¿ì¿¡´Â mysql_fetch_row()°¡ ¸ðµç Çà
¿¡ ´ëÇؼ­ ¼öÇàµÈ ÈÄ¿¡¸¸ mysql_num_rows()°¡ È£ÃâµÉ ¼ö ÀÖ´Ù.
- mysql_insert_id()´Â AUTO_INCREMENT À妽º¸¦ °¡Áø Å×ÀÌºí¿¡ ÇàÀ» Ãß°¡ÇÑ °æ¿ì °¡Àå
ÃÖ±Ù¿¡ »õ·Î »ý¼ºµÈ ID¸¦ ¸®ÅÏÇÑ´Ù.
- ¸î¸î ÁúÀǵé(LOAD DATA INFILE ..., INSERT INTO ... SELECT ..., UPDATE)Àº ºÎ°¡ÀûÀÎ Á¤
º¸¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ °á°úµéÀº mysql_info()¿¡ ÀÇÇÏ¿© ¸®ÅϵȴÙ. mysql_info()´Â ¸®ÅÏÇÒ ºÎ°¡
ÀûÀÎ Á¤º¸°¡ ¾ø´Â °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù.

18.4.50 How can I get the unique ID for the last inserted row?
AUTO_INCREMENT ¼Ó¼ºÀ» °¡Áö´Â Ä÷³À» Æ÷ÇÔÇÏ°í ÀÖ´Â Å×ÀÌºí¿¡ »õ·Î¿î ·¹Äڵ带 »ðÀÔ
ÇÏ´Â °æ¿ì, mysql_insert_id() ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á °¡Àå ÃÖ±Ù¿¡ »ý¼ºµÈ ID¸¦ ¾ò¾î¿Ã ¼ö ÀÖ´Ù.

´ÙÀ½ÀÇ Äڵ带 ¼öÇàÇÔÀ¸·Î½á AUTO_INCREMENT À妽º°¡ »ç¿ëµÇ¾ú³ª¸¦ üũÇØ º¼ ¼ö ÀÖ´Ù.
¶ÇÇÑ ÁúÀÇ°¡ AUTO_INCREMENT À妽º¸¦ °¡Áø INSERT ¹®Àΰ¡¸¦ üũÇÒ ¼ö ÀÖ´Ù:

if (mysql_error(&mysql)[0] == 0 && mysql_num_fields(result) == 0 && mysql_insert_id(&mysql) != 0)
{
  used_id = mysql_insert_id(&mysql);
}

ÇϳªÀÇ Å×ÀÌºí¿¡¼­ »ý¼ºµÈ ID¸¦ ´Ù¸¥ Å×ÀÌºí¿¡ »ðÀÔÇϴµ¥ »ç¿ëÇÏ°íÀÚ ÇÏ´Â °æ¿ì ´ÙÀ½°ú
°°Àº SQL ¹®À» »ç¿ëÇÑ´Ù:

INSERT INTO foo (auto, text) VALUES(NULL, 'text');             # generate ID by inserting NULL
INSERT INTO foo2 (id, text) VALUES(LAST_INSERT_ID(), 'text');  # use ID in second table


18.4.51 Problems linking with the C API
¾î¶² ½Ã½ºÅÛ¿¡¼­´Â C API¸¦ linkingÇÏ¿© ÄÄÆÄÀÏÇÒ ¶§ ´ÙÀ½°ú °°Àº ¿¡·¯°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù:

gcc -g -o client test.o -L/usr/local/lib/mysql -lmysqlclient -lsocket -lnsl

Undefined       first referenced
symbol          in file
floor            /usr/local/lib/mysql/libmysqlclient.a(password.o)
ld: fatal: Symbol referencing errors. No output written to client

À§¿Í °°Àº ¿¡·¯°¡ ¹ß»ýÇÏ´Â °æ¿ì¿¡´Â ÄÄÆÄÀÏ ½Ã¿¡ -lmÀ» Ãß°¡ÇÔÀ¸·Î½á math ¶óÀ̺귯¸®¸¦
ÇÔ²² Æ÷ÇÔÇØ ÁØ´Ù.


18.4.52 How to make a thread-safe client
Ŭ¶óÀ̾ðÆ®´Â °ÅÀÇ thread-safeÇÏ´Ù. °¡Àå Å« ¹®Á¦Á¡Àº 'net.c'¿¡¼­ ¼ÒÄÏÀ» Àд ¼­ºê·çƾµéÀÌ
interrupt-safeÇÏÁö ¸øÇÏ´Ù´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ¼­¹ö·ÎºÎÅÍ Àд ÀÛ¾÷ÀÌ ¿À·¡ °É¸± ¶§ Ŭ¶óÀ̾ð
Æ®°¡ ÀÛ¾÷À» Áß´ÜÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» ¿øÇÒ °ÍÀ̶ó´Â »ý°¢¿¡¼­ ±×·¸°Ô ÀÛ¼ºµÇ¾îÁ³´Ù.

Ç¥ÁØ Å¬¶óÀ̾ðÆ® ¶óÀ̺귯¸®´Â ¾²·¹µå ¿É¼Ç¾øÀÌ ÄÄÆÄÀϵǾîÁø´Ù.

Thread-safe Ŭ¶óÀ̾ðÆ®¸¦ ¸¸µé±â À§Çؼ­´Â -lmysys, -lstring, -ldbug ¶óÀ̺귯¸®¿Í ¼­¹ö°¡ »ç¿ë
ÇÏ´Â net_serv.o¸¦ ÇÔ²² »ç¿ëÇÑ´Ù.

Threaded client¸¦ »ç¿ëÇϸé 'thr_alarm.c' ÆÄÀÏ¿¡ ÀÖ´Â ·çƾµéÀ» È°¿ëÇÒ ¼ö ÀÖ´Ù. mysys ¶óÀ̺ê
·¯¸®ÀÇ ·çƾµéÀ» »ç¿ëÇÒ ¶§ ±â¾ïÇؾßÇÒ ´Ü ÇÑ°¡Áö´Â my_init() ÇÔ¼ö¸¦ °¡Àå ¸ÕÀú È£ÃâÇؾß
ÇÑ´Ù´Â °ÍÀÌ´Ù!

mysql_real_connect()¸¦ Á¦¿ÜÇÑ ¸ðµç ÇÔ¼öµéÀº ÇöÀç thread-safeÇÏ´Ù. ´ÙÀ½ÀÇ ³»¿ë¿¡¼­´Â thread-
safe Ŭ¶óÀ̾ðÆ® ¶óÀ̺귯¸®¸¦ ÄÄÆÄÀÏÇÏ´Â ¹æ¹ý°ú ±×°ÍÀ» thread-safe ¹æ½ÄÀ¸·Î »ç¿ëÇÏ´Â ¹æ
¹ý¿¡ ´ëÇÏ¿© ±â¼úÇÑ´Ù(¿©±â¼­´Â mysql_real_connect() ÇÔ¼ö¿¡ ´ëÇÑ ¿¹¸¦ ¼³¸íÇϸç,
mysql_connect()ÀÇ °æ¿ì¿¡µµ µ¿ÀÏÇÏ´Ù).

mysql_real_connect() ÇÔ¼ö¸¦ thread-safeÇÏ°Ô ¸¸µé±â À§Çؼ­´Â ´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î Ŭ¶óÀ̾ðÆ®¸¦
ÀçÄÄÆÄÀÏÇÏ¿©¾ß ÇÑ´Ù:

shell> CPPFLAGS=-DTHREAD_SAFE_CLIENT ./configure ...

pthread ¶óÀ̺귯¸®°¡ µðÆúÆ®·Î Æ÷ÇԵǾîÁöÁö ¾Ê±â ¶§¹®¿¡ Ç¥ÁØ Å¬¶óÀ̾ðÆ®(standard client)¸¦
¸µÅ·ÇÒ ¶§ Á¤ÀǵÇÁö ¾ÊÀº ½Éº¼(undefined symbols)·Î ÀÎÇÑ ¿¡·¯°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù.

°á°ú·Î ³ª¿À´Â 'libmysqld.a' ¶óÀ̺귯¸®´Â ÀÌÁ¨ thread-safeÇÏ´Ù. ÀÌ°ÍÀº µÎ°³ÀÇ thread°¡
mysql_real_connect()¿¡ ÀÇÇØ ¸®ÅÏµÈ µ¿ÀÏÇÑ ¿¬°á ÇÚµé(connection handle)À» µ¿½Ã¿¡ ÁúÀÇÇÏÁö
¾Ê´Â ÇÑ Å¬¶óÀ̾ðÆ® Äڵ尡 thread-safeÇÏ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù; Ŭ¶óÀ̾ðÆ®/¼­¹ö ÇÁ·ÎÅäÄÝÀº
ÁÖ¾îÁø ¿¬°á¿¡ ´ëÇÏ¿© µ¿½Ã¿¡ ÇϳªÀÇ ¿äû¸¸À» Çã¿ëÇÑ´Ù. µ¿ÀÏÇÑ ¿¬°á¿¡ ´ëÇÏ¿© º¹¼ö°³ÀÇ
thread¸¦ »ç¿ëÇÏ±æ ¿øÇÏ´Â °æ¿ì¿¡´Â mysql_query()¿Í mysql_store_result()ÀÇ È£Ãâ ¹­À½(call
combination)¿¡ ´ëÇÏ¿© mutex lockÀ» ÇØ¾ß ÇÑ´Ù.

ÀÏ´Ü mysql_store_result()°¡ ÁغñµÇ¸é lockÀº ÇØÁ¦µÉ ¼ö ÀÖÀ¸¸ç ´Ù¸¥ threadµéÀº µ¿ÀÏÇÑ ¿¬°á
¿¡ ´ëÇÏ¿© query¸¦ ÇÒ ¼ö ÀÖ´Ù(´Ù½Ã ¸»Çؼ­, ¼­·Î ´Ù¸¥ threadµéÀÌ ÀûÀýÇÑ locking ÇÁ·ÎÅäÄÝ
À» »ç¿ëÇÏ´Â ÇÑ mysql_store_result()°ú ÇÔ²² »ý¼ºµÈ ¼­·Î ´Ù¸¥ MYSQL_RES Æ÷ÀÎÅ͵éÀ» »ç¿ë
ÇÒ ¼ö ÀÖ´Ù). POSIX thread·Î ÇÁ·Î±×·¥ÇÑ´Ù¸é mutex lockÀ» »ý¼ºÇÏ°í ÇØÁ¦Çϴµ¥
pthread_mutex_lock()¿Í pthread_mutex_unlock() ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

mysql_store_result()°¡ ¾Æ´Ñ mysql_use_result()¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡´Â lockÀÌ mysql_use_result()
¿Í mysql_fetch_row()¿¡ ´ëÇÑ È£ÃâÀ» surroundÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ±×·¯³ª threaded client´Â
mysql_use_result()¸¦ »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ °¡Àå ÁÁ´Ù.



19. Ÿ DB¿Í ºñ±³
19.1 Mysql/mSQL ºñ±³

À̹øÀåÀº Mysql °³¹ßÀÚ°¡ ¾´ ±ÛÀ̹ǷΠ ÀÌÁ¡À» ¿°µÎ¿¡ µÎ°í º¸¾Æ¾ß  ÇÑ´Ù.
±×·¸Áö¸¸ °³¹ßÀÚµéÀÌ ¾Ë°í Àִ´ë·Î ¼ÖÁ÷ÇÏ°Ô ÀÛ¼ºµÇ¾ú´Ù.

Áö¿øµÇ´Â ÇÔ¼ö, ŸÀÔ, Á¦ÇÑ»çÇ×µîÀº crash-me À¥ ÆäÀÌÁö¸¦ Âü°íÇÏ¸é µÈ´Ù.

<¼º´É>
¼Óµµ ºñ±³¿Í °ü·ÃÇؼ­´Â Mysql º¥Ä¡¸¶Å©¸¦ Âü°íÇÑ´Ù. (11Àå)  mSQLÀº ½º·¹
µå »ý¼º ¶§¹®¿¡ ¹ß»ýÇÏ´Â °úºÎÇÏ°¡ ¾ø°í, ÆÄÁ®(parser)°¡  ÀÛÀ¸¸ç, ±â´ÉÀÌ
Àû°í º¸¾ÈÀÌ °£´ÜÇÏ´Ù. ±×·¡¼­ ´ÙÀ½°ú °°Àº °æ¿ì¿¡´Â mSQLÀÇ  ¼Óµµ°¡ ºü¸£
´Ù.
- ¿¬°á/ÇØÁ¦¸¦ ¹Ýº¹Çϸ鼭 °¢ ¿¬°á¶§¸¶´Ù °£´ÜÇÑ ÁúÀǸ¦ ÇÏ´Â Å×½ºÆ®
-¸î°³ÀÇ Ä÷³°ú Å°¸¸ ÀÖ´Â ¾ÆÁÖ °£´ÜÇÑ Å×ÀÌºí¿¡  ÀÚ·áÀ» ÀÔ·Â(INSER)ÇÏ´Â
°æ¿ì
- CREATE TABLE, DROP TABLE
- À妽º ¾øÀÌ SELECT ÇÏ´Â °æ¿ì(Å×ÀÌºí °Ë»öÀÌ ¸Å¿ì °£´Ü)

ÀÌ·± ÀÛ¾÷µéÀº ¸Å¿ì °£´ÜÇؼ­, ½ÃÀ۽à  ³ôÀº ºÎÇÏ°¡ °É¸®´Â °æ¿ì¿¡  ÁÁ´Ù.
¿¬°áÀÌ µÇ°í³ª¼­´Â MysqlÀÌ ´õ ³ôÀº ¼º´ÉÀ» º¸¿©ÁØ´Ù.

±× ¿Ü¿¡´Â ´ÙÀ½°ú °°Àº ¸é¿¡¼­ MysqlÀÌ mSQL( ¹× ´Ù¸¥ SQL ÇÁ·Î±×·¥) º¸´Ù
ºü¸£´Ù.
- º¹ÇÕÀûÀÎ SELECT ¿¬»ê
- ´ë·®ÀÇ ÀڷḦ °Ë»ö (MysqlÀº ¼º´ÉÀÌ ¶Ù¾î³ª°í ºü¸£¸ç  ¾ÈÀüÇÑ ÇÁ·ÎÅäÄÝ
À» »ç¿ëÇÑ´Ù)
-  °¡º¯±æÀÌ  ¹®ÀÚ¿­À»  °¡Áø  Å×À̺í.  MysqlÀº  È¿À²ÀûÀ¸·Î  µÇ¾îÀÖÀ¸¸ç
VARCHAR Ä÷³¿¡ À妽º¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- ¸¹Àº Ä÷³À» °¡Áø Å×À̺íÀ» ´Ù·ç´Â °æ¿ì
- ·¹ÄÚµå ±æÀÌ°¡ Å« Å×À̺íÀ» ´Ù·ç´Â °æ¿ì
- ¸¹Àº Ç¥Çö½Ä(expression)À» °¡Áø SELECT ¹®À» »ç¿ëÇÏ´Â °æ¿ì
- °Å´ëÇÑ Å×ÀÌºí¿¡¼­ SELECT¹®À» »ç¿ëÇÏ´Â °æ¿ì
- µ¿½Ã¿¡ ´ÙÁßÀ¸·Î ¿¬°áÀ»  Ã³¸®ÇؾßÇÒ ¶§. MysqlÀº ¿ÏÀüÇÑ  ¸ÖƼ½º·¹µå¸¦
Áö¿øÇÑ´Ù. °¢ ¿¬°áÀº ÀÚ½ÅÀÇ ½º·¹µå¸¦ °¡Áö¸ç ÀÌ´Â ½º·¹µå¿¡¼­  ´Ù¸¥ ½º·¹
µå¸¦ ±â´Ù¸± ÇÊ¿ä°¡ ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. (ÇöÀçÀÇ ½º·¹µå°¡ ´Ù¸¥ ½º·¹µå
¿¡¼­ Á¢±ÙÇϱ⠿øÇÏ´Â Å×À̺íÀ»  ¼öÁ¤ÇÏ°í ÀÖ´Â °æ¿ì´Â Á¦¿Ü)  mSQL¿¡¼­´Â
ÇϳªÀÇ ¿¬°áÀÌ ¼º¸³µÇ¸é ±× ¿¬°á¿¡¼­ ÁúÀǸ¦ ¼öÇàÇϵç ÇÏÁö ¾Êµç »ó°ü¾øÀÌ
ù ¹ø° ¿¬°áÀÌ ³¡³¯¶§±îÁö ´Ù¸¥ °ÍµéÀº ±â´Ù·Á¾ßÇÑ´Ù. ù ¹ø° ¿¬°áÀÌ ÇØ
Á¦µÇ¸é ´ÙÀ½ ¿¬°áÀÌ ¼º¸³µÇ°í ¶Ç ´Ù¸¥ °ÍµéÀº ´Ù½Ã ±â´Ù·Á¾ßÇÑ´Ù.
- Á¶ÀÎ. mSQL¿¡¼­´Â SELECT¿¡¼­ Å×À̺íÀÇ Á¤·Ä ¼ø¼­¸¦  º¯°æÇÏ¸é ¾öû³ª°Ô
´À·ÁÁø´Ù. º¥Ä¡¸¶Å· ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿´À» ¶§, ±× ½Ã°£Àº Mysqlº¸´Ù ÃÖ´ë
15000¹è ´À·È´Ù. mSQL¿¡¼­´Â ÃÖÀûÀÇ ¼ø¼­¿¡ µû¸¥ Å×À̺íÀ»  Á¤¿­Çϱâ À§ÇÑ
Á¶ÀÎ ÃÖÀûÈ­±â°¡ ¾ø±â ¶§¹®ÀÌ´Ù. ±×·¸Áö¸¸, Å×À̺íÀ» mSQL2ÀÇ ÀûÀýÇÑ Á¤¿­
¼ø¼­¿¡ µû¶ó Á¤È®ÇÏ°Ô Å×À̺íÀ» ±¸¼ºÇÏ°í WHERE °¡ °£´ÜÇÏ°í  À妽º Ä÷³
À» »ç¿ëÇϸé Á¶ÀÎÀº »ó´ëÀûÀ¸·Î »¡¶óÁø´Ù. 11Àå Mysql º¥Ä¡¸¶Å· Âü°í.
-  ORDER BY and GROUP BY.
- DISTINCT
- TEXT ³ª  BLOB Ä÷³ »ç¿ë


-  GROUP BY, HAVING. mSQLÀº GROUP BY¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. MysqlÀº  ¿ÏÀü
ÇÏ°Ô GROUP BY ¿Í HAVINGÀ»  Áö¿øÇÏ¸ç ´ÙÀ½ÀÇ ÇÔ¼ö¸¦ Áö¿øÇÑ´Ù.  COUNT(),
AVG(), MIN(), MAX(),  SUM() and STD().  COUNT(*)´Â ÇϳªÀÇ  Å×ÀÌºí¿¡¼­
SELECT¸¦ »ç¿ëÇÏ°í, Ä÷³Àº °Ë»öÇÏÁö ¾ÊÀ¸¸ç  WHERE ¹®ÀÌ ¾øÀ» °æ¿ì  ¸Å¿ì
ºü¸£°Ô ÃÖÀûÈ­µÇ¾îÀÖ´Ù. MIN() °ú MAX()´Â ¹®ÀÚ¿­ ÀÎÀÚ¸¦ °¡Áø´Ù.
- INSERT ¿Í UPDATE¿¡¼­ °è»ê°¡´É.
      ¿¹)Mysql> UPDATE SET x=x*10+y WHERE x<20;
- ¾Ë¸®¾Æ½Ì. Mysql¿¡´Â Ä÷³ ¾Ë¸®¾Æ½ÌÀÌ ÀÖ´Ù.
- Ä÷³ À̸§ ÇÑÁ¤. Mysql¿¡¼­ Äø§ À̸§ÀÌ ÁúÀÇ¿¡ »ç¿ëµÈ Å×ÀÌºí¿¡¼­ À¯ÀÏ
ÇÏ´Ù¸é, ¿ÏÀüÇÑ ÇÑÁ¤ÀÚ¸¦ ¾µ ÇÊ¿ä°¡ ¾ø´Ù. (** table_name.column_name ÀÌ
·± ½ÄÀ¸·Î ÇÏÁö ¾Ê¾Æµµ µÈ´Ù´Â ¸»ÀÔ´Ï´Ù**)
- SELECT¹®¿¡¼­ ´Ù¾çÇÑ ÇÔ¼ö Áö¿ø. 7.3 ÇÔ¼ö ÂüÁ¶.

<µð½ºÅ© °ø°£ È¿À²¼º>
Å×À̺íÀ» ¾ó¸¶³ª ÀÛ°Ô ¸¸µé ¼ö  Àִ°¡¸¦ ¸»ÇÑ´Ù. Mysql¿¡´Â ¸Å¿ì  Á¤¹ÐÇÑ
ŸÀÔÀÌ ¸¹À¸¹Ç·Î ¸Å¿ì ÀûÀº °ø°£¸¸À» Â÷ÁöÇϵµ·Ï Å×À̺íÀ» ¸¸µé  ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î À¯¿ëÇÑ µ¥ÀÌÅÍŸÀÔÁß Çϳª´Â MEDIUMINT·Î 3 ¹ÙÀÌÆ® longÀÌ´Ù. 1
¾ï°ÇÀÇ ·¹Äڵ尡 ÀÖ´Â °æ¿ì, °¢ ·¹ÄÚµå´ç 1 ¹ÙÀÌÆ®¸¦ Àý¾àÇÏ´Â  °ÍÀº ¸Å¿ì
Áß¿äÇÏ´Ù. mSQL2´Â Áö¿øÇÏ´Â µ¥ÀÌÅÍ Å¸ÀÔÀÌ Á¦ÇѵǾîÀ־ Å×À̺íÀ» ÀÛ°Ô
¸¸µé±â°¡ ¾î·Æ´Ù.
<¾ÈÁ¤¼º>
¾ÈÁ¤¼ºÀ» °´°üÀûÀ¸·Î ÆÇ´ÜÇÏ´Â °ÍÀº ½¬¿î ÀÏÀÌ ¾Æ´Ï´Ù.  MysqlÀÇ ¾ÈÁ¤¼ºÀº
1.5Àå Âü°í. ¿ì¸®´Â(Mysql °³¹ßÆÀ)Àº mSQLÀÇ ¾ÈÁ¤¼º¿¡ ´ëÇÑ °æÇèÀÌ ¾øÀ¸¹Ç
·Î ÀÌ¿¡ ´ëÇؼ­´Â ¸»ÇÒ °ÍÀÌ ¾ø´Ù.
<°¡°Ý>
ÁÖ¿äÇÑ ÁÖÁ¦ÁßÀÇ Çϳª°¡ ¶óÀ̼¾½ºÀÌ´Ù. MysqlÀº mSQLº¸´Ù À¯¿¬ÇÑ ¶óÀ̼¾½º
Á¤Ã¥À» °¡Áö°í ÀÖÀ¸¸ç °¡°Ýµµ Àú·ÅÇÏ´Ù. ¾î¶² Á¦Ç°À» ¼±ÅÃÇÏµç  ÃÖ¼ÒÇÑ ¶ó
À̼¾½º³ª À̸ÞÀÏ Áö¿ø¿¡ ´ëÇÑ ºñ¿ëÀ» °í·ÁÇؾßÇÑ´Ù. (¹°·Ð  ÆǸÅÇÏ´Â Á¦Ç°
¿¡ MysqlÀÌ Æ÷ÇԵǾîÀÖÀ¸¸é ¶óÀ̼¾½º°¡ ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù)
<ÆÞ ÀÎÅÍÆäÀ̽º>
MysqlÀº ¸î°¡Áö Ãß°¡µÈ ±â´É°ú ÇÔ²² mSQL°ú µ¿ÀÏÇÑ ÆÞ  ÀÎÅÍÆäÀ̽º¸¦ °¡Áö
°í ÀÖ´Ù.

MysqlÀº ÇöÀç 4°¡Áö JDBC µå¶óÀ̹ö°¡ ÀÖ´Ù.
- The gwe driver: A Java interface by GWE technologies (not supported
anymore).
- The jms driver: An improved gwe driver by Xiaokun Kelvin ZHU
- The twz driver:  A type 4  JDBC driver by  Terrence W. Zellers  and
educational use.
- The mm driver: A type 4 JDBC driver by Mark Matthews{{
}}
ÃßõÇÏ´Â µå¶óÀ̹ö´Â twz³ª mm µå¶óÀ̹öÀÌ´Ù. µÑ´Ù ÈǸ¢ÇÏ°Ô  ÀÛµ¿ÇÏ´Â °Í
À¸·Î º¸°íµÇ¾ú´Ù.
mSQL¿¡ JDBC µå¶óÀ̹ö°¡ ÀÖ´Â °ÍÀº ¾Ë°í ÀÖÁö¸¸ ±×¿¡ ´ëÇÑ ºñ±³ °æÇèÀº ¾ø
´Ù.

<°³¹ß¼Óµµ>
MysqlÀº ¸Å¿ì ÀÛÀº ±Ô¸ðÀÇ °³¹ßÆÀÀ» °¡Áö°í ÀÖÁö¸¸, ¸ðµÎ C¿Í  C++ ÄÚµùÀ»
¸Å¿ì ºü¸£°Ô Çϴµ¥  Àͼ÷ÇØÀÖ´Ù. ½º·¹µå, ÇÔ¼ö, GROUP BY µîµî  mSQL¿¡´Â
¾ÆÁ÷ ±¸ÇöµÇÁö   ¾ÊÀº °ÍµéÀÌ  ¸¹¾Æ¼­ µû¶ó¿À·Á¸é   ¸Ö¾ú´Ù. mSQLÀÇ  ÃÖ±Ù
'HISTORY' ÆÄÀÏ°ú Mysql ·¹ÆÛ·±½º ¸Å´º¾óÀÇ ´º½º ¼½¼ÇÀ» ºñ±³Çغ¸ÀÚ. ¾î¶²
°ÍÀÌ ºü¸£°Ô °³¹ßµÇ°í ÀÖ´ÂÁö ¸íÈ®ÇÒ °ÍÀÌ´Ù.

<À¯Æ¿¸®Æ¼ ÇÁ·Î±×·¥>
mSQL°ú Mysql¿¡´Â ¸Å¿ì ´Ù¾çÇÑ ¼­µå-ÆÄƼ ÅøÀÌ ÀÖ´Ù. mSQL¿¡¼­ Mysql·Î Æ÷
ÆÃÇÏ´Â °ÍÀÌ ¸Å¿ì ½±±â ¶§¹®¿¡, mSQL¿¡¼­ »ç¿ë°¡´ÉÇÑ ´ëºÎºÐÀÇ ¾ÖÇø®ÄÉÀÌ
¼ÇÀº Mysql¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
Mysql¿¡´Â °£´ÜÇÑ mSQL2Mysql ÇÁ·Î±×·¥ÀÌ µé¾îÀִµ¥ mSQL°ú Mysql »çÀÌÀÇ
´ëºÎºÐÀÇ C-API ÇÔ¼öÀÇ ½ºÆ縵À» ¹Ù²Ü ¼ö ÀÖ´Ù. mSQL¿¡¼­ Mysql ·Î Ŭ¶óÀÌ
¾ðÆ® ÇÁ·Î±×·¥À» Æ÷ÆÃÇÏ´Â °ÍÀº ÀϹÝÀûÀ¸·Î ±×´ÙÁö ½Ã°£ÀÌ °É¸®Áö ¾Ê´Â´Ù.

19.1.1 mSQL ÅøÀ» Mysql·Î ¹Ù²Ù±â
°æÇè»ó º¸¾ÒÀ» ¶§, mSQL C-API¸¦ »ç¿ëÇÏ´Â mSQL-tcl °ú  mSQLjava¸¦ Mysql
C-API  ¿¡¼­ ÀÛµ¿ÇÒ ¼ö ÀÖµµ·Ï º¯È¯ÇÏ´Â °ÍÀº ¸î½Ã°£À̸é ÃæºÐÇÏ´Ù.

º¯È¯°úÁ¤Àº ´ÙÀ½°ú °°´Ù:

1. ¼Ò½º¿¡¼­ mSQL2Mysql ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÑ´Ù. ¿©±â¿¡´Â replace ÇÁ·Î±×·¥
ÀÌ ÇÊ¿äÇѵ¥, Mysql°ú ÇÔ²² ¹èÆ÷µÈ´Ù.
2. ÄÄÆÄÀÏ
3. ¸ðµç ÄÄÆÄÀÏ ¿¡·¯ ¼öÁ¤

mSQL C API¿Í Mysql C API ÀÇ Â÷ÀÌÁ¡Àº ´ÙÀ½°ú °°´Ù.
- Mysql uses  a Mysql structure  as a connection  type (mSQL uses  an
int).
-  Mysql_connect()   takes a  pointer  to a   Mysql structure  as  a
parameter. It is easy  to define one globally  or to use malloc()  to
get one. Mysql_connect() also takes  2 parameters for specifying  the
user and password. You may set these to NULL, NULL for default use.
- Mysql_error() takes the  Mysql structure as  a parameter. Just  add
the parameter to your  old mSQL_error() code  if you are porting  old
code.
-  Mysql returns an  error number and  a text error  message for all
errors. mSQL returns only a text error message.
-  Some  incompatibilities exist  as  a result  of Mysql   supporting
multiple connections to the server from the same process.{{
}}
(
M
ysqlÀº µ¿ÀÏÇÑ ÇÁ·Î¼¼½º¿¡¼­ ¼­¹ö¿¡ ´ÙÁß ¿¬°áÀ» Áö¿øÇϹǷΠȣȯµÇÁö ¾Ê´Â ºÎºÐÀÌ  Á¸ÀçÇÑ´Ù.)

19.1.2 mSQL °ú Mysql  Å¬¶óÀ̾ðÆ®/¼­¹ö Åë½Å ÇÁ·ÎÅäÄÝ Â÷ÀÌÁ¡
mSQL°ú MysqlÀ» µÑ´Ù Áö¿øÇÏÁö ¸øÇϰųª Èûµç ¸î°¡Áö Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù.

Mysql ÇÁ·ÎÅäÄÝÀÌ  mSQL ÇÁ·ÎÅäÄÝ°ú ´Ù¸¥ ¸î°¡Áö ÁÖ¿ä Â÷ÀÌÁ¡Àº ´ÙÀ½°ú °°
´Ù.
- ¸Þ½ÃÁö ¹öÆÛ¿¡ ¸¹Àº °Ë»ö ÇàÀ» °¡Áö°í ÀÖ´Ù.
- ¸Þ½ÃÁö ¹öÆÛ´Â ÁúÀdzª °á°ú°¡ ÇöÀçÀÇ ¹öÆÛº¸´Ù Å©¸é, ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®
¿¡¼­ ¼³Á¤ÇÑ Á¦ÇѼ±±îÁö µ¿ÀûÀ¸·Î È®ÀåÀÌ µÉ ¼ö ÀÖ´Ù.
- Áߺ¹µÇ°Å³ª ºÐ½ÇµÈ ÆÐŶÀ» Àâ¾Æ ¸ðµç ÆÐŶÀÇ ¼ýÀÚ¸¦ ¼¿ ¼ö ÀÖ´Ù.
- ¸ðµç Ä÷³ °ªÀº ¾Æ½ºÅ°·Î Àü¼ÛµÈ´Ù. Ä÷³°ú ÇàÀÇ ±æÀÌ´Â  ¹ÙÀ̳ʸ® ÄÚµù
(1, 2, 3 ¹ÙÀÌÆ®)À¸·Î ²Ù·ÁÁ® Àü¼ÛµÈ´Ù.
- Mysql can read  in the result  unbuffered (without having to  store
the full set in the client).
- ´ÜÀÏ ¾²±â/Àб⠶ôÀÌ 30ÃÊÀÌ»ó °É¸®¸é, ¼­¹ö¿¡¼­ ¿¬°áÀ» ÇØÁ¦ÇÑ´Ù.
- ¿¬°áÀÌ 8½Ã°£ ÀÌ»ó ½¬°í ÀÖÀ¸¸é, ¼­¹ö¿¡¼­ ¿¬°áÀ» ÇØÁ¦ÇÑ´Ù.

19.1.3  How mSQL 2.0 SQL syntax differs from Mysql
(** ±»ÀÌ ¹ø¿ªÇÏÁö ¾Ê½À´Ï´Ù. ½É½ÉÇϸé Çѹø Àо¼¼¿ä. mSQL  ½áº»Áö ¿ö
³« ¿À·¡µÇ¾ú°í ±×´ÙÁö ¾µ ÀÏÀÌ ¾ø¾î¼­¿ä**)

Column types
Mysql
Has the following  additional types  (among others;  see see  section  
7.6)
ENUM type for one of a set of strings.
SET type for many of a set of strings.
BIGINT type for 64-bit integers.{{
}}

Mysql also supports the following additional type attributes:
UNSIGNED option for integer columns.
ZEROFILL option for integer columns.
AUTO_INCREMENT option for integer columns that are a PRIMARY KEY.
DEFAULT value for all columns.{{
}}

mSQL2
mSQL column types correspond to the Mysql types shown below:{{

}}

mSQLtype        Corresponding Mysql type
CHAR(len)       CHAR(len)
TEXT(len)       TEXT(len). len is the maximal length. And LIKE works.
INT             INT. With many more options!
REAL            REAL. Or   FLOAT. Both  4- and   8-byte versions  are
available.
UINT            INT UNSIGNED
DATE            DATE. Uses ANSI SQL format rather than mSQL's own.
TIME            TIME
MONEY   DECIMAL(12,2). A fixed-point value with two decimals.{{
}}

{{
}}Index creation
Mysql
Indexes may be specified at table creation time with the CREATE TABLE
statement.
mSQL
Indexes must  be  created after   the table has   been created,  with
separate CREATE INDEX statements.{{
}}

To insert a unique identifier into a table
Mysql
Use AUTO_INCREMENT as a column type specifier.
mSQL
Create a SEQUENCE on a table and select the _seq column.{{
}}
To obtain a unique identifier for a row
Mysql
Add a PRIMARY KEY or UNIQUE key to the table.
mSQL
Use the  _rowid column.  Observe  that _rowid  may change   over time
depending on many factors.{{
}}

To get the time a column was last modified
Mysql
Add a TIMESTAMP column to the table. This column is automatically set
to the current date and time  for INSERT or UPDATE statements if  you
don't give the column a value or if you give it a NULL value.
mSQL
Use the _timestamp column.{{
}}
NULL value comparisons
Mysql
Mysql follows ANSI SQL and a comparison with NULL is always NULL.
mSQL
In mSQL, NULL = NULL  is TRUE. You must  change =NULL to IS NULL  and
<>NULL to IS NOT NULL when porting old code from mSQL to Mysql.{{
}}

String comparisons
Mysql
Normally,  string  comparisons   are performed   in  case-independent
fashion with the sort order  determined by the current character  set
(ISO-8859-1 Latin1 by default). If you don't like this,  declare your
columns with the  BINARY attribute,  which causes  comparisons to  be
done according to the ASCII order used on the Mysql server host.
mSQL
All string comparisons are  performed in case-sensitive fashion  with
sorting in ASCII order.{{
}}

Case-insensitive searching
Mysql
LIKE is a case-insensitive  or case-sensitive operator, depending  on
the columns involved.  If possible,  Mysql uses indexes  if the  LIKE
argument doesn't start with a wildcard character.
mSQL
Use CLIKE.{{
}}
Handling of trailing spaces
Mysql
Strips all spaces at the end of CHAR and VARCHAR columns. Use  a TEXT
column if this behavior is not desired.
mSQL
Retains trailing space.{{
}}
WHERE clauses
Mysql
Mysql correctly prioritizes everything (AND is evaluated  before OR).
To get mSQL behavior in Mysql, use parentheses (as shown below).
mSQL
Evaluates everything from left to right. This means that some logical
calculations with more  than three arguments  cannot be expressed  in
any way. It also means you must change some queries when  you upgrade
to Mysql. You do this easily by adding parentheses. Suppose  you have
the following mSQL query:
Mysql> SELECT * FROM table WHERE a=1 AND b=2 OR a=3 AND b=4;
To make Mysql  evaluate this the  way that mSQL  would, you must  add
parentheses:
Mysql> SELECT  *  FROM table   WHERE (a=1  AND (b=2   OR (a=3  AND
(b=4))));
{{
}}Access control
Mysql
Has tables to  store grant  (permission) options per  user, host  and
database.
mSQL
Has a file `mSQL.acl'  in which you  can grant read/write  privileges
for users.


19.2 PostgreSQL°ú Mysql ºñ±³
PostgreSQLÀº »ç¿ëÀÚ-Á¤ÀÇ Å¸ÀÔ, Æ®¸®°Å, ·ê, Æ®·£Àè¼Ç Áö¿ø µî ¸î°¡Áö Çâ
»óµÈ ±â´ÉÀ» °¡Áö°í ÀÖ´Ù. ±×·¸Áö¸¸ ANSI SQL °ú ODBCÀÇ Ç¥ÁØ Å¸ÀÔÀ̳ª ÇÔ
¼ö Áö¿øÀÌ   ¹Ì¾àÇÏ´Ù. Áö¿øµÇ°Å³ª  Áö¿øµÇÁö ¾Ê´Â   Á¦ÇÑ, ŸÀÔ,  ÇÔ¼ö´Â
crash-me               À¥               ÆäÀÌÁö¸¦               Âü°íÇÏ
ÀÚ.(http://www.Mysql.com/crash-me-choose.htmy)

ÀϹÝÀûÀ¸·Î PostgreSQLÀº Mysqlº¸´Ù ´À¸®´Ù. 11Àå [º¥Ä¡¸¶Å©] Âü°í.  ÀÌ°Í
Àº ´ëºÎºÐ Æ®·£Àè¼Ç ½Ã½ºÅÛ ¶§¹®ÀÌ´Ù. Á¤¸»·Î Æ®·£Àè¼ÇÀÌ ÇÊ¿äÇÏ°í ¼Óµµ¸¦
Èñ»ýÇÒ »ý°¢ÀÌ ÀÖ´Ù¸é PostgreSQLÀ» °í·ÁÇغ¼ ¼ö ÀÖ´Ù.

**Âü°í
http://www.postgresql.org/comp-comparison.html
¿©±â¿¡ °¡¸é °£·«ÇÏ°Ô³ª¸¶ PostgreSQL°ú Ÿ DB¿Í ºñ±³ÀÚ·á°¡ ÀÖ½À´Ï´Ù.
http://database.sarang.net/database/database.phtml
¿©±â¿¡´Â À§ ÀÚ·á ¹ø¿ªº»ÀÌ ÀÖ½À´Ï´Ù.


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

        

Powered by Kang Jul Ki

Modify Delete Post Reply Backward Forward List
Powered by Kang Jul Ki