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 |