Copyright © 2004 ±¾ÎÄ×ñ´ÓGNU µÄ×ÔÓÉÎĵµÐí¿ÉÖ¤(Free Document License)µÄÌõ¿î£¬»¶Ó×ªÔØ¡¢Ð޸ġ¢É¢²¼¡£
·¢²¼Ê±¼ä: 2004Äê11ÔÂ06ÈÕ
×î½ü¸üÐÂ: 2005Äê01ÔÂ12ÈÕ
Table of Contents
List of Tables
Table of Contents
MySQLÊý¾Ý¿âÊÇÓÉÊý¾Ý×é³ÉµÄ£¬ÎªÁËÄÜ·½±ã¹ÜÀíºÍʹÓÃÕâЩÊý¾Ý£¬ÎÒÃǰÑÕâЩÊý¾Ý½øÐзÖÀ࣬Ðγɸ÷ÖÖÊý¾ÝÀàÐÍ£¬ÓÐÊý¾ÝÖµµÄÀàÐÍ£¬ÓбíÖÐÊý¾ÝÁеÄÀàÐÍ£¬ÓÐÊý¾Ý±íµÄÀàÐÍ¡£Àí½âMySQLµÄÕâЩÊý¾ÝÀàÐÍÄÜʹÎÒÃǸüºÃµØÊ¹ÓÃMySQLÊý¾Ý¿â¡£ÏÂÃæ¶Ô¸÷ÖÖÊý¾ÝÀàÐͽøÐмòµ¥µÄ½éÉÜ¡£
¶ÔMySQLÖÐÊý¾ÝÖµµÄ·ÖÀ࣬ÓÐÊýÖµÐÍ¡¢×Ö·ûÐÍ¡¢ÈÕÆÚÐͺͿÕÖµµÈ£¬ÕâºÍÒ»°ãµÄ±à³ÌÓïÑԵķÖÀà²î²»¶à¡£
MySQLÖеÄÊýÖµ·ÖÕûÐͺ͸¡µãÐÍÁ½ÖÖ¡£MySQLÖ§³Ö¿ÆÑ§¼ÇÊý·¨¡£ÕûÐÍ¿ÉÒÔÊÇÊ®½øÖÆ£¬Ò²¿ÉÊÇÊ®Áù½øÖÆÊý¡£
MySQLÖ§³ÖÒÔµ¥»òË«ÒýºÅ°üΧµÄ×Ö·ûÐòÁС£Èç¡°MySQL tutorial¡±¡¢¡®Mysql Database¡¯¡£
MySQLÄÜʶ±ð×Ö·û´®ÖеÄתÒåÐòÁУ¬×ªÒåÐòÁÐÓ÷´Ð±¸Ü(\)±íʾ¡£ÏÂÃæÊÇÒ»¸öתÒåÐòÁÐÁÐ±í¡£
Table 1.1. תÒåÐòÁÐ
| תÒåÐòÁÐ | º¬Òå |
|---|---|
| \0 | NUL(ASCIIµÄ0Öµ) |
| \' | µ¥ÒýºÅ |
| \" | Ë«ÒýºÅ |
| \b | ºóÍË·û |
| \n | »»Ðзû |
| \r | »Ø³µ·û |
| \t | ÖÆ±í·û |
| \\ | ·´Ð±¸Ü |
| \Z | Ctrl+Z |
Èç¹û×Ö·û´®±¾Éí°üº¬Óе¥Ë«ÒýºÅ£¬ÔòÓÃÒÔÏÂÈýÖÖ·½·¨ÖеÄÒ»ÖÖÀ´±íʾ£º
×Ö·û´®µÄÒýºÅºÍ×Ö·û´®Á½¶ËµÄÒýºÅ˫ͬ£¬Ôò˫д¸ÃÒýºÅ¡£È磺'mysql''s test'¡£
ÓÃÓë×Ö·û´®µÄÒýºÅ²»Í¬µÄÒýºÅ°Ñ×Ö·û´®ÒýÆðÀ´£¬È磺"mysql's test"¡£
Ó÷´Ð±¸ÜתÒåÒýºÅ£¬È磺"mysql\' test"£¬'mysql\' test'¡£ÕâÑù¾Í²»ÓÃÀí»á×Ö·û´®Á½¶ËµÄÊǵ¥ÒýºÅ»¹ÊÇË«ÒýºÅÁË¡£
×Ö·û´®¿ÉÓÉÒ»¸öÊ®Áù½øÖÆÊý±íʾ£¬Èç0x61±íʾ×Ö·û"a"¡£ÓÉMySQL 4.0¿ªÊ¼£¬×Ö·û´®ÖµÒ²¿ÉÓÃANSI SQL±íʾ·¨X'val'À´±íʾ¡£ÈçX'61'±íʾ×Ö·û"a"¡£
´ÓMySQL 4.1¿ªÊ¼£¬¿ÉÒÔΪ×Ö·û´®Öµ×¨ÃÅÖ¸¶¨Ò»¸ö×Ö·û¼¯¡£
MySQLÊý¾Ý¿âµÄ±íÊÇÒ»¸ö¶þά±í£¬ÓÉÒ»¸ö»ò¶à¸öÊý¾ÝÁй¹³É¡£Ã¿¸öÊý¾ÝÁж¼ÓÐËüµÄÌØ¶¨ÀàÐÍ£¬¸ÃÀàÐ;ö¶¨ÁËMySQLÈçºÎ¿´´ý¸ÃÁÐÊý¾Ý£¬ÎÒÃÇ¿ÉÒÔ°ÑÕûÐÍÊýÖµ´æ·Åµ½×Ö·ûÀàÐ͵ÄÁÐÖУ¬MySQLÔò»á°ÑËü¿´³É×Ö·û´®À´´¦Àí¡£MySQLÖеÄÁÐÀàÐÍÓÐÈýÖÖ£ºÊýÖµÀà¡¢×Ö·û´®ÀàºÍÈÕÆÚ/ʱ¼äÀà¡£´Ó´óÀàÀ´¿´ÁÐÀàÐͺÍÊýÖµÀàÐÍÒ»Ñù£¬¶¼ÊÇÖ»ÓÐÈýÖÖ¡£µ«Ã¿ÖÖÁÐÀàÐͶ¼»¹¿Éϸ·Ö¡£ÏÂÃæ¶Ô¸÷ÖÖÁÐÀàÐͽøÐÐÏêϸ½éÉÜ¡£
ÊýÖµÐ͵ÄÁÐÀàÐͰüÀ¨ÕûÐͺ͸¡µãÐÍÁ½´óÀà¡£
Table 1.2. ÊýÖµÀàÊý¾ÝÁÐÀàÐÍ
| Êý¾ÝÁÐÀàÐÍ | ´æ´¢¿Õ¼ä | ÃèÊö |
|---|---|---|
| TINYINT | 1×Ö½Ú | ·Ç³£Ð¡µÄÕýÕûÊý£¬´ø·ûºÅ£º-128~127£¬²»´ø·ûºÅ£º0~255 |
| SMALLINT | 2×Ö½Ú | СÕûÊý£¬´ø·ûºÅ£º-32768~32767£¬²»´ø·ûºÅ£º0~65535 |
| MEDIUMINT | 3×Ö½Ú | ÖеȴóСµÄÕûÊý£¬´ø·ûºÅ£º-8388608~8388607£¬²»´ø·ûºÅ£º0~16777215 |
| INT | 4×Ö½Ú | ±ê×¼ÕûÊý£¬´ø·ûºÅ£º-2147483648~2147483647£¬²»´ø·ûºÅ£º0~4294967295 |
| BIGINT | 8×Ö½Ú | ´óÕûÊý£¬´ø·ûºÅ£º-9223372036854775808~9233372036854775807£¬²»´ø·ûºÅ£º0~18446744073709551615 |
| FLOAT | 4×Ö½Ú | µ¥¾«¶È¸¡µãÊý£¬×îС·ÇÁãÖµ£º+-1.175494351E-38£¬×î´ó·ÇÁãÖµ£º+-3.402823466E+38 |
| DOUBLE | 8×Ö½Ú | Ë«¾«¶È¸¡µãÊý£¬×îС·ÇÁãÖµ£º+-2.2250738585072014E-308£¬×î´ó·ÇÁãÖµ£º+-1.7976931348623157E+308 |
| DECIMAL | M+2×Ö½Ú | ÒÔ×Ö·û´®ÐÎʽ±íʾµÄ¸¡µãÊý£¬ËüµÄȡֵ·¶Î§¿É±ä£¬ÓÉMºÍDµÄÖµ¾ö¶¨¡£ |
MySQLÓÐÎåÖÖÕûÐÍÊý¾ÝÁÐÀàÐÍ£¬¼´TINYINT£¬SMALLINT£¬MEDIUMINT£¬INTºÍBIGINT¡£ËüÃÇÖ®¼äµÄÇø±ðÊÇȡֵ·¶Î§²»Í¬£¬´æ´¢¿Õ¼äÒ²¸÷²»Ïàͬ¡£ÔÚÕûÐÍÊý¾ÝÁкó¼ÓÉÏUNSIGNEDÊôÐÔ¿ÉÒÔ½ûÖ¹¸ºÊý£¬È¡Öµ´Ó0¿ªÊ¼¡£
ÉùÃ÷ÕûÐÍÊý¾ÝÁÐʱ£¬ÎÒÃÇ¿ÉÒÔΪËüÖ¸¶¨¸öÏÔʾ¿í¶ÈM(1~255)£¬ÈçINT(5)£¬Ö¸¶¨ÏÔʾ¿í¶ÈΪ5¸ö×Ö·û,Èç¹ûûÓиøËüÖ¸¶¨ÏÔʾ¿í¶È£¬MySQL»áΪËüÖ¸¶¨Ò»¸öĬÈÏÖµ¡£ÏÔʾ¿í¶ÈÖ»ÓÃÓÚÏÔʾ£¬²¢²»ÄÜÏÞÖÆÈ¡Öµ·¶Î§ºÍÕ¼Óÿռ䣬È磺INT(3)»áÕ¼ÓÃ4¸ö×ֽڵĴ洢¿Õ¼ä£¬²¢ÇÒÔÊÐíµÄ×î´óÖµÒ²²»»áÊÇ999,¶øÊÇINTÕûÐÍËùÔÊÐíµÄ×î´óÖµ¡£
MySQLÓÐÈýÖÖ¸¡µãÐÍÊý¾ÝÁÐÀàÐÍ£¬·Ö±ðÊÇ£ºFLOAT£¬DOUBLEºÍDECIMAL¡£¸¡µãÀàÊý¾ÝÀàÐÍÓÐÒ»¸ö×î´ó¿É±íʾֵºÍÒ»¸ö×îС·ÇÁã¿É±íʾֵ£¬×îС·ÇÁã¿É±íʾֵ¾ö¶¨Á˸ÃÀàÐ͵ľ«È·¶È¡£
MySQL 4.0.2°æÖ®ºó£¬FLOATºÍDOUBLE¶¼¿ÉÒÔÖ¸¶¨UNSIGNEDÊôÐÔ¡£µ±Ö¸¶¨¸ÃÊôÐÔʱ£¬È¡Öµ·¶Î§²»Æ½ÒƵ½ÕýÊýÇø¼ä£¬¶øÖ»ÊǼòµ¥µØ°Ñ¸¡µãÀàÐ͵ĸºÊý²¿·ÝÈ¥µô¡£
¸¡µãÀàÐÍÒ²ÓÐM(1~255)ºÍD(1~30£¬ÇÒ²»ÄÜ´óÓÚM-2)¡£·Ö±ð±íʾÏÔʾ¿í¶ÈºÍСÊýλÊý¡£MºÍDÔÚFLOATºÍDOUBLEÖÐÊÇ¿ÉÑ¡µÄ£¬Ä¬ÈÏ£¬µ±MySQL°æ±¾´óÓÚ3.23.6ʱ£¬FLOATºÍDOUBLEÀàÐͽ«±»±£´æÎªÓ²¼þËùÖ§³ÖµÄ×î´ó¾«¶È¡£DECIMALµÄMºÍDÖµÔÚMySQL3.23.6ºó¿ÉÑ¡£¬Ä¬ÈÏDֵΪ0,MֵΪ10¡£
ΪÁ˽ÚÊ¡´æ´¢¿Õ¼äºÍÌá¸ßÊý¾Ý¿â´¦ÀíЧÂÊ£¬ÎÒÃÇÓ¦¸ù¾ÝÓ¦ÓÃÊý¾ÝµÄȡֵ·¶Î§À´Ñ¡ÔñÒ»¸ö×îÊʺϵÄÊý¾ÝÁÐÀàÐÍ¡£Èç¹û°ÑÒ»¸ö³¬³öÊý¾ÝÁÐȡֵ·¶Î§µÄÊý´æÈë¸ÃÁУ¬ÔòMySQL¾Í»á½Ø¶Ì¸ÃÖµ£¬È磺ÎÒÃǰÑ99999´æÈëSMALLINT(3)Êý¾ÝÁÐÀÒòΪSMALLINT(3)µÄȡֵ·¶Î§ÊÇ-32768~32767£¬ËùÒԾͻᱻ½Ø¶Ì³É32767´æ´¢¡£ÏÔʾ¿í¶È3²»»áÓ°ÏìÊýÖµµÄ´æ´¢¡£Ö»Ó°ÏìÏÔʾ¡£
¶ÔÓÚ¸¡µãÊý¾ÝÁУ¬´æÈëµÄÊýÖµ»á±»¸ÃÁж¨ÒåµÄСÊýλ½øÐÐËÄÉáÎåÈë¡£Èç°ÑÒ»¸ö1.234´æÈëFLOAT(6.1)Êý¾ÝÁÐÖУ¬½á¹ûÊÇ1.2¡£
DECIMALÓëFLOATºÍDOUBLEµÄÇø±ðÊÇ£ºDECIMALÀàÐ͵ÄÖµÊÇÒÔ×Ö·û´®µÄÐÎʽ±»´¢´æÆðÀ´µÄ£¬ËüµÄСÊýλÊýÊǹ̶¨µÄ¡£ËüµÄÓŵãÊÇ£¬²»»áÏóFLOATºÍDOUBLEÀàÐÍÊý¾ÝÁÐÄÇÑù½øÐÐËÄÉáÎåÈë¶ø²úÉúÎó²î£¬ËùÒÔºÜÊʺÏÓÃÓÚ²ÆÎñ¼ÆË㣻¶øËüµÄȱµãÊÇ£ºÓÉÓÚËüµÄ´æ´¢¸ñʽ²»Í¬£¬CPU²»ÄܶÔËü½øÐÐÖ±½ÓÔËË㣬´Ó¶øÓ°ÏìÔËËãЧÂÊ¡£DECIMAL(M£¬D)×ܹ²ÒªÕ¼ÓÃM+2¸ö×Ö½Ú¡£
ZEROFILLÊôÐÔÊÊÓÃÓÚËùÓÐÊýÖµÀàÊý¾ÝÁÐÀàÐÍ£¬×÷ÓÃÊÇ£¬Èç¹ûÊýÖµµÄ¿í¶ÈСÓÚ¶¨ÒåµÄÏÔʾ¿í¶È£¬ÔòÔÚÊýֵǰÌî³ä0¡£
UNSIGNEDÊôÐÔ²»ÔÊÐíÊý¾ÝÁгöÏÖ¸ºÊý¡£
AUTO_INCREMENTÊôÐÔ¿ÉÉú³É¶ÀÒ»ÎÞ¶þµÄÊý×ÖÐòÁС£Ö»¶ÔÕûÊýÀàµÄÊý¾ÝÁÐÓÐЧ¡£
NULLºÍNOT NULLÊôÐÔÉèÖÃÊý¾ÝÁÐÊÇ·ñ¿ÉΪ¿Õ¡£
DEFAULTÊôÐÔ¿ÉΪÊý¾ÝÁÐÖ¸¶¨Ä¬ÈÏÖµ¡£
×Ö·û´®¿ÉÒÔÓÃÀ´±íʾÈκÎÒ»ÖÖÖµ£¬ËùÒÔËüÊÇ×î»ù±¾µÄÀàÐÍÖ®Ò»¡£ÎÒÃÇ¿ÉÒÔÓÃ×Ö·û´®ÀàÐÍÀ´´æ´¢Í¼Ïó»òÉùÒôÖ®ÀàµÄ¶þ½øÖÆÊý¾Ý£¬Ò²¿É´æ´¢ÓÃgzipѹËõµÄÊý¾Ý¡£Ï±í½éÉÜÁ˸÷ÖÖ×Ö·û´®ÀàÐÍ£º
Table 1.3. ×Ö·û´®ÀàÊý¾ÝÁÐÀàÐÍ
| ÀàÐÍ | ×î´ó³¤¶È | Õ¼Óô洢¿Õ¼ä |
|---|---|---|
| CHAR[(M)] | M×Ö½Ú | M×Ö½Ú |
| VARCHAR[(M)] | M×Ö½Ú | L+1×Ö½Ú |
| TINYBLOD£¬TINYTEXT | 2^8-1×Ö½Ú | L+1×Ö½Ú |
| BLOB£¬TEXT | 2^16-1×Ö½Ú | L+2 |
| MEDIUMBLOB£¬MEDIUMTEXT | 2^24-1×Ö½Ú | L+3 |
| LONGBLOB£¬LONGTEXT | 2^32-1×Ö½Ú | L+4 |
| ENUM('value1','value2',...) | 65535¸ö³ÉÔ± | 1»ò2×Ö½Ú |
| SET('value1','value2',...) | 64¸ö³ÉÔ± | 1,2,3,4»ò8×Ö½Ú |
L+1¡¢L+2ÊDZíʾÊý¾ÝÁÐÊǿɱ䳤¶ÈµÄ£¬ËüÕ¼ÓõĿռä»á¸ù¾ÝÊý¾ÝÐеÄÔö¼õÃæÔò¸Ä±ä¡£Êý¾ÝÐеÄ×ܳ¤¶ÈÈ¡¾öÓÚ´æ·ÅÔÚÕâЩÊý¾ÝÁÐÀïµÄÊý¾ÝÖµµÄ³¤¶È¡£L+1»òL+2Àï¶à³öÀ´µÄ×Ö½ÚÊÇÓÃÀ´±£´æÊý¾ÝÖµµÄ³¤¶ÈµÄ¡£ÔÚ¶Ô³¤¶È¿É±äµÄÊý¾Ý½øÐд¦Àíʱ£¬MySQLÒª°ÑÊý¾ÝÄÚÈݺÍÊý¾Ý³¤¶È¶¼±£´æÆðÀ´¡£
Èç¹û°Ñ³¬³ö×Ö·û´®×î´ó³¤¶ÈµÄÊý¾Ý·Åµ½×Ö·ûÀàÊý¾ÝÁÐÖУ¬MySQL»á×Ô¶¯½øÐнض̴¦Àí¡£
ENUMºÍSETÀàÐ͵ÄÊý¾ÝÁж¨ÒåÀïÓÐÒ»¸öÁÐ±í£¬ÁбíÀïµÄÔªËØ¾ÍÊǸÃÊý¾ÝÁеĺϷ¨È¡Öµ¡£Èç¹ûÊÔͼ°ÑÒ»¸öûÓÐÔÚÁбíÀïµÄÖµ·Åµ½Êý¾ÝÁÐÀËü»á±»×ª»»Îª¿Õ×Ö·û´®(¡°¡±)¡£
×Ö·û´®ÀàÐ͵ÄÖµ±»±£´æÎªÒ»×éÁ¬ÐøµÄ×Ö½ÚÐòÁУ¬²¢»á¸ù¾ÝËüÃÇÈÝÄɵÄÊǶþ½øÖÆ×Ö·û´®»¹ÊǷǶþ½øÖÆ×Ö·û¶ø±»Çø±ð¶Ô´ýΪ×Ö½Ú»òÕß×Ö·û£º
¶þ½øÖÆ×Ö·û´®±»ÊÓΪһ¸öÁ¬ÐøµÄ×Ö½ÚÐòÁУ¬Óë×Ö·û¼¯Î޹ء£MySQL°ÑBLOBÊý¾ÝÁкʹøBINARYÊôÐÔµÄCHARºÍVARCHARÊý¾ÝÁÐÀïµÄÊý¾Ýµ±×÷¶þ½øÖÆÖµ¡£
·Ç¶þ½øÖÆ×Ö·û´®±»ÊÓΪһ¸öÁ¬ÐøÅÅÁеÄ×Ö·ûÐòÁС£Óë×Ö·û¼¯Óйء£MySQL°ÑTEXTÁÐÓë²»´øBINARYÊôÐÔµÄCHARºÍVARCHARÊý¾ÝÁÐÀïµÄÊý¾Ýµ±×÷¶þ½øÖÆÖµ¶Ô´ý¡£
ÔÚMySQL4.1ÒÔºóµÄ°æ±¾ÖУ¬²»Í¬µÄÊý¾ÝÁпÉÒÔʹÓò»Í¬µÄ×Ö·û¼¯¡£ÔÚMySQL4.1°æ±¾ÒÔǰ£¬MySQLÓ÷þÎñÆ÷µÄ×Ö·û¼¯×÷ΪĬÈÏ×Ö·û¼¯¡£
·Ç¶þ½øÖÆ×Ö·û´®£¬¼´ÎÒÃÇͨ³£Ëù˵µÄ×Ö·û´®£¬Êǰ´×Ö·ûÔÚ×Ö·û¼¯ÖÐÏȺó´ÎÐò½øÐбȽϺÍÅÅÐòµÄ¡£¶ø¶þ½øÖÆ×Ö·û´®ÒòΪÓë×Ö·û¼¯Î޹أ¬ËùÒÔ²»ÒÔ×Ö·û˳ÐòÅÅÐò£¬¶øÊÇÒÔ×ֽڵĶþ½øÖÆÖµ×÷Ϊ±È½ÏºÍÅÅÐòµÄÒÀ¾Ý¡£ÏÂÃæ½éÉÜÁ½ÖÖ×Ö·û´®µÄ±È½Ï·½Ê½£º
¶þ½øÖÆ×Ö·û´®µÄ±È½Ï·½Ê½ÊÇÒ»¸ö×Ö½ÚÒ»¸ö×Ö½Ú½øÐеģ¬±È½ÏµÄÒÀ¾ÝÊÇÁ½¸ö×ֽڵĶþ½øÖÆÖµ¡£Ò²¾ÍÊÇ˵ËüÊÇÇø·Ö´óСдµÄ£¬ÒòΪͬһ¸ö×ÖĸµÄ´óСдµÄÊýÖµ±àÂëÊDz»Ò»ÑùµÄ¡£
·Ç¶þ½øÖÆ×Ö·û´®µÄ±È½Ï·½Ê½ÊÇÒ»¸ö×Ö·ûÒ»¸ö×Ö·û½øÐеģ¬±È½ÏµÄÒÀ¾ÝÊÇÁ½¸ö×Ö·ûÔÚ×Ö·û¼¯ÖеÄÏȺó˳Ðò¡£ÔÚ´ó¶àÊý×Ö·û¼¯ÖУ¬Í¬Ò»¸ö×ÖĸµÄ´óСдÍùÍùÓÐ×ÅÏàͬµÄÏȺó˳Ðò£¬ËùÒÔËü²»Çø·Ö´óСд¡£
¶þ½øÖÆ×Ö·û´®Óë×Ö·û¼¯Î޹أ¬ËùÒÔÎÞÂÛ°´×Ö·û¼ÆË㻹Êǰ´×Ö½Ú¼ÆË㣬¶þ½øÖÆ×Ö·û´®µÄ³¤¶È¶¼ÊÇÒ»ÑùµÄ¡£ËùÒÔVARCHAR(20)²¢²»±íʾËü×î¶àÄÜÈÝÄÉ20¸ö×Ö·û£¬¶øÊDZíʾËü×î¶àÖ»ÄÜÈÝÄÉ¿ÉÒÔÓÃ20¸ö×Ö½Ú±íʾ³öÀ´µÄ×Ö·û¡£¶ÔÓÚµ¥×Ö½Ú×Ö·û¼¯£¬Ã¿¸ö×Ö·ûÖ»Õ¼ÓÃÒ»¸ö×Ö½Ú£¬ËùÒÔÕâÁ½Õߵij¤¶ÈÊÇÒ»ÑùµÄ£¬µ«¶ÔÓÚ¶à×Ö½Ú×Ö·û¼¯£¬ËüÄÜÈÝÄɵÄ×Ö·û¸öÊý¿Ï¶¨ÉÙÓÚ20¸ö¡£
CHARºÍVARCHARÊÇ×î³£ÓõÄÁ½ÖÖ×Ö·û´®ÀàÐÍ£¬ËüÃÇÖ®¼äµÄÇø±ðÊÇ£º
CHARÊǹ̶¨³¤¶ÈµÄ£¬Ã¿¸öÖµÕ¼ÓÃÏàͬµÄ×Ö½Ú£¬²»¹»µÄλÊýMySQL»áÔÚËüµÄÓÒ±ßÓÿոñ×Ö·û²¹×ã¡£
VARCHARÊÇÒ»Öֿɱ䳤¶ÈµÄÀàÐÍ£¬Ã¿¸öÖµÕ¼ÓÃÆä¸ÕºÃµÄ×Ö½ÚÊýÔÙ¼ÓÉÏÒ»¸öÓÃÀ´¼Ç¼Æä³¤¶ÈµÄ×Ö½Ú¼´L+1×Ö½Ú¡£
CHAR(0)ºÍVARCHAR(0)¶¼ÊǺϷ¨µÄ¡£VARCHAR(0)ÊÇ´ÓMySQL4.0.2°æ¿ªÊ¼µÄ¡£ËüÃǵÄ×÷ÓÃÊÇ×÷Ϊռλ·û»òÓÃÀ´±íʾ¸÷ÖÖon/off¿ª¹ØÖµ¡£
ÈçºÎÑ¡ÔñCHARºÍVARCHAR£¬ÕâÀï¸ø³öÁ½¸öÔÔò£º
Èç¹ûÊý¾Ý¶¼ÓÐÏàͬµÄ³¤¶È£¬Ñ¡ÓÃVARCHAR»á¶àÕ¼Óÿռ䣬ÒòΪÓÐһλÓÃÀ´´æ´¢Æä³¤¶È¡£Èç¹ûÊý¾Ý³¤¶Ì²»Ò»£¬Ñ¡ÓÃVARCHARÄܽÚÊ¡´æ´¢¿Õ¼ä¡£¶øCHAR²»ÂÛ×Ö·û³¤¶Ì¶¼ÐèÕ¼ÓÃÏàͬµÄ¿Õ¼ä£¬¼´Ê¹ÊÇ¿ÕÖµÒ²²»ÀýÍâ¡£
Èç¹û³¤¶È³öÈë²»´ó£¬¶øÇÒÊÇʹÓÃMyISAM»òISAMÀàÐÍµÄ±í£¬ÔòÓÃCHAR»á±ÈVARCHARºÃ£¬ÒòΪMyISAMºÍISAMÀàÐ͵ıí¶Ô´¦Àí¹Ì¶¨³¤¶ÈµÄÐеÄЧÂʸߡ£
![]() | |
| ÔÚÒ»¸öÊý¾Ý±íÀֻҪÓÐÒ»¸öÊý¾ÝÁеij¤¶ÈÊǿɱäµÄ£¬ÔòËùÓÐÊý¾ÝÁеij¤¶È½«ÊǿɱäµÄ¡£MySQL»á½øÐÐ×Ô¶¯µØ×ª»»¡£Ò»¸öÀýÍ⣬CHAR³¤¶ÈСÓÚ4µÄ²»»á½øÐÐ×Ô¶¯×ª»»£¬ÒòΪMySQL»áÈÏΪÕâÑù×öû±ØÒª£¬½ÚÊ¡²»Á˶àÉٿռ䡣·´¶øMySQL»á°Ñ´óÁ¿³¤¶ÈСµÄVARCHARת»»³ÉCHAR£¬ÒÔ¼õÉÙ¿Õ¼äÕ¼ÓÃÁ¿¡£ | |
BLOBÊǶþ½øÖÆ×Ö·û´®£¬TEXTÊǷǶþ½øÖÆ×Ö·û´®¡£Á½Õß¶¼¿É´æ·Å´óÈÝÁ¿µÄÐÅÏ¢¡£
ÓйØBLOBºÍTEXTË÷ÒýµÄ½¨Á¢£º
BDB±íÀàÐͺÍMySQL3.23.2ÒÔÉϰ汾µÄMyISAM±íÀàÐÍÔÊÐíÔÚBLOBºÍTEXTÊý¾ÝÁÐÉϽ¨Á¢Ë÷Òý¡£
ISAM¡¢HEAPºÍInnoDB±í²»Ö§³Ö´ó¶ÔÏóÁеÄË÷Òý¡£
ʹÓÃBLOBºÍTEXTӦעÒâµÄÎÊÌ⣺
ÓÉÓÚÕâÁ½¸öÁÐÀàÐÍËù´æ´¢µÄÊý¾ÝÁ¿´ó£¬ËùÒÔɾ³ýºÍÐ޸IJÙ×÷ÈÝÒ×ÔÚÊý¾Ý±íÀï²úÉú´óÁ¿µÄË鯬£¬Ð趨ÆÚÔËÐÐOPTIMIZE TABLEÒÔ¼õÉÙË鯬ºÍÌá¸ßÐÔÄÜ¡£
Èç¹ûʹÓõÄÖµ·Ç³£¾Þ´ó£¬¾ÍÐè¶Ô·þÎñÆ÷½øÐÐÏàÓ¦µÄÓÅ»¯µ÷Õû£¬Ôö¼Ómax_allowed_packet²ÎÊýµÄÖµ¡£¶ÔÄÇЩ¿É»áÓõ½±äЩ¾Þ´óÊý¾ÝµÄ¿Í»§³ÌÐò£¬Ò²Ðè¼Ó´óËüÃǵÄÊý¾Ý°ü´óС¡£
ENUMºÍSET¶¼ÊDZȽÏÌØÊâµÄ×Ö·û´®Êý¾ÝÁÐÀàÐÍ£¬ËüÃǵÄȡֵ·¶Î§ÊÇÒ»¸öÔ¤Ïȶ¨ÒåºÃµÄÁÐ±í¡£ENUM»òSETÊý¾ÝÁеÄȡֵֻÄÜ´ÓÕâ¸öÁбíÖнøÐÐÑ¡Ôñ¡£ENUMºÍSETµÄÖ÷񻂿±ðÊÇ£º
ENUMÖ»ÄÜÈ¡µ¥Öµ£¬ËüµÄÊý¾ÝÁбíÊÇÒ»¸öö¾Ù¼¯ºÏ¡£ËüµÄºÏ·¨È¡ÖµÁбí×î¶àÔÊÐíÓÐ65535¸ö³ÉÔ±¡£ÀýÈ磺ENUM("N","Y")±íʾ£¬¸ÃÊý¾ÝÁеÄȡֵҪôÊÇ"Y"£¬ÒªÃ´¾ÍÊÇ"N"¡£
SET¿ÉÈ¡¶àÖµ¡£ËüµÄºÏ·¨È¡ÖµÁбí×î¶àÔÊÐíÓÐ64¸ö³ÉÔ±¡£¿Õ×Ö·û´®Ò²ÊÇÒ»¸öºÏ·¨µÄSETÖµ¡£
ENUMºÍSETµÄÖµÊÇÒÔ×Ö·û´®ÐÎʽ³öÏֵ쬵«ÔÚÄÚ²¿£¬MySQLÒÔÊýÖµµÄÐÎʽ´æ´¢ËüÃÇ¡£
ENUMµÄºÏ·¨È¡ÖµÁбíÖеÄ×Ö·û´®±»°´ÉùÃ÷¶¨ÒåµÄ˳Ðò±»±àºÅ£¬´Ó1¿ªÊ¼¡£
SETµÄ±àºÅ²»Êǰ´Ë³Ðò½øÐбàºÅµÄ£¬SETÖÐÿһ¸öºÏ·¨È¡Öµ¶¼¶ÔÓ¦×ÅSETÖµÀïµÄÒ»¸öλ¡£µÚÒ»¸öºÏ·¨È¡Öµ¶ÔÓ¦0룬µÚ¶þ¸öºÏ·¨È¡Öµ¶ÔÓ¦1룬ÒÔ´ËÀàÍÆ£¬Èç¹ûÊýÖµÐÎʽµÄSETÖµµÈÓÚ0,Ôò˵Ã÷ËüÊÇÒ»¸ö¿Õ×Ö·û´®£¬Èç¹ûij¸öºÏ·¨µÄȡֵ³öÏÖÔÚSETÊý¾ÝÁÐÀÓëÖ®¶ÔÓ¦µÄλ¾Í»á±»ÖÃλ£»Èç¹ûij¸öºÏ·¨µÄȡֵûÓгöÏÖÔÚSETÊý¾ÝÁÐÀÓëÖ®¶ÔÓ¦µÄλ¾Í»á±»ÇåÁã¡£ÕýÒòΪSETÖµÓëλÓÐÕâÑùµÄ¶ÔÓ¦¹ØÏµ£¬ËùÒÔSETÊý¾ÝÁеĶà¸öºÏ·¨È¡Öµ²ÅÄÜͬʱ³öÏÖ²¢¹¹³ÉSETÖµ¡£
MySQLµÄÈÕÆÚʱ¼äÀàÐÍÓУºDATE£¬DATETIME£¬TIME£¬TIMESTAMPºÍYEAR£¬Ï±íÊÇÕâЩÀàÐ͵Äȡֵ·¶Î§ºÍ´æ´¢¿Õ¼äÒªÇó£º
Table 1.4. ÈÕÆÚ£¬Ê±¼äÀàÐÍÁÐ
| ÀàÐÍ | ȡֵ·¶Î§ | ´æ´¢¿Õ¼ä | ÁãÖµ±íʾ·¨ |
|---|---|---|---|
| DATE | 1000-01-01~9999-12-31 | 3×Ö½Ú(MySQL3.23°æÒÔǰÊÇ4×Ö½Ú ) | 0000-00-00 |
| TIME | -838:59:59~838:59:59 | 3×Ö½Ú | 00:00:00 |
| DATETIME | 1000-01-01 00:00:00~9999-12-31 23:59:59 | 8×Ö½Ú | 0000-00-00 00:00:00 |
| TIMESTAMP | 19700101000000~2037ÄêµÄij¸öʱ¿Ì | 4×Ö½Ú | 00000000000000 |
| YEAR | YEAR(4)£º1901~2155 YEAR(2)£º1970~2069 | 1×Ö½Ú | 0000 |
![]() | |
| MySQL×ÜÊǰÑÈÕÆÚºÍÈÕÆÚÀïµÄÄê·Ý·ÅÔÚ×îÇ°Ãæ£¬°´ÄêÔÂÈÕµÄ˳ÐòÏÔʾ¡£ | |
DATE¡¢TIMEºÍDATATIMEÀàÐÍ·Ö±ð´æ·ÅÈÕÆÚÖµ¡¢Ê±¼äÖµ¡¢ÈÕÆÚºÍʱ¼äÖµµÄ×éºÏ¡£ËüÃǵĸñʽ·Ö±ðÊÇ¡°CCYY-MM-DD¡±¡¢¡°hh:mm:ss¡±¡¢¡°CCYY-MM-DD hh:mm:ss¡±¡£
DATATIMEÀïµÄʱ¼äÖµºÍTIMEÖµÊÇÓÐÇø±ðµÄ£¬DATATIMEÀïµÄʱ¼äÖµ´ú±íµÄÊǼ¸µã¼¸·Ö£¬TIMEÖµ´ú±íµÄÊÇËù»¨·ÑµÄʱ¼ä¡£µ±ÏòTIMEÊý¾ÝÁвåֵʱ£¬ÐèÓÃʱ¼äµÄÍêÕûд·¨£¬Èç12·Ö30ÃëҪд³É¡°00:12:30¡±¡£
TIMESTAMPÊý¾ÝÁеĸñʽÊÇCCYYMMDDhhmmss£¬È¡Öµ·¶Î§´Ó19700101000000¿ªÊ¼£¬¼´1970Äê1ÔÂ1ºÅ£¬×î´óµ½2037Äê¡£ËüµÄÌØµãÊÇÄܰÑÊý¾ÝÐеĴ´½¨»òÐÞ¸Äʱ¼ä¼Ç¼ÏÂÀ´£º
Èç¹û°ÑÒ»¸öNULLÖµ²åÈëTIMESTAMPÁУ¬Õâ¸öÊý¾ÝÁоͽ«×Ô¶¯È¡ÖµÎªµ±Ç°µÄÈÕÆÚºÍʱ¼ä¡£
ÔÚ´´½¨ºÍÐÞ¸ÄÊý¾ÝÐÐʱ£¬Èç¹ûûÓÐÃ÷È·¶ÔTIMESTAMPÊý¾ÝÁнøÐи³Öµ£¬ÔòËü¾Í»á×Ô¶¯È¡ÖµÎªµ±Ç°µÄÈÕÆÚºÍʱ¼ä¡£Èç¹ûÐÐÖÐÓжà¸öTIMESTAMPÁУ¬Ö»ÓеÚÒ»¸ö»á×Ô¶¯È¡Öµ¡£
Èç¹û¶ÔTIMESTAMPÉèÖÃÒ»¸öÈ·¶¨µÄÈÕÆÚºÍʱ¼äÖµ£¬Ôò»áʹTIMESTAMPµÄ×Ô¶¯È¡Öµ¹¦ÄÜʧЧ¡£
TIMESTAMPĬÈϵÄÁпíÊÇ14,¿ÉÖ¸¶¨ÁÐ¿í£¬ÒԸıäÏÔʾЧ¹û¡£µ«²»ÂÛÄãÖ¸¶¨µÄÁпíÈçºÎ£¬MySQL¶¼ÊÇÒÔ4×Ö½ÚÀ´´æ´¢TIMESTAMPÖµ£¬Ò²×ÜÊÇÒÔ14λ¾«¶ÈÀ´¼ÆËã¡£
Èç¹ûÐèÒª°Ñ´´½¨Ê±¼äºÍ×î½üÒ»´ÎÐÞ¸Äʱ¼äͬʱ¼Ç¼ÏÂÀ´£¬¿ÉÒÔÓÃÁ½¸öʱ¼ä´ÁÀ´¼Ç¼£¬Ò»¸ö¼Ç¼´´½¨Ê±¼ä£¬Ò»¸ö¼Ç¼ÐÞ¸Äʱ¼ä¡£²»¹ýÐè¼ÇסÁ½¼þÊ£¬Ò»ÊÇÒª°Ñ¼Ç¼ÐÞ¸Äʱ¼äµÄTIMESTAMPÊý¾ÝÁзÅÔÚ×îÇ°Ãæ£¬ÕâÑù²Å»á×Ô¶¯È¡Öµ£»¶þÊÇ´´½¨Ò»ÌõмǼʱ£¬ÒªÓÃnow()º¯ÊýÀ´³õʼ»¯´´½¨Ê±¼äTIMESTAMPÊý¾ÝÁУ¬ÕâÑù£¬¸ÃTIMESTAMPÊý¾ÝÁоͲ»»áÔٱ仯¡£
YEARÊÇÒ»ÖÖµ¥×Ö½ÚµÄÊý¾ÝÁÐÀàÐÍ£¬YEAR(4)µÄȡֵ·¶Î§ÊÇ1901~2155,YEAR(2)µÄȡֵ·¶Î§ÊÇ1970~2069,µ«Ö»ÏÔʾ×îºóÁ½Î»Êý¡£MySQLÄÜ×Ô¶¯°ÑÁ½Î»Êý×ÖÄê·Ýת»»³ÉËÄλÊý×ÖµÄÄê·Ý£¬Èç97ºÍ14·Ö±»×ª»»³É1997ºÍ2014¡£×ª»»¹æÔòÊÇÕâÑùµÄ£º
Äê·ÝÖµ00~69½«±»×ª»»³É2000~2069£»
Äê·ÝÖµ70~99½«±»×ª»»³É1970~1999¡£
![]() | |
| 00±»×ª»»³É0000,¶ø²»ÊÇ2000¡£ÒòΪÊýÖµ00Ò²¾ÍÊÇ0,¶ø0ÖµÊÇYEARµÄÒ»¸öºÏ·¨È¡Öµ¡£ | |
ÔÚÊý¾Ý¿âÓ¦Óã¬ÎÒÃǾ³£ÒªÓõ½Î¨Ò»±àºÅ£¬ÒÔ±êʶ¼Ç¼¡£ÔÚMySQLÖпÉͨ¹ýÊý¾ÝÁеÄAUTO_INCREMENTÊôÐÔÀ´×Ô¶¯Éú³É¡£MySQLÖ§³Ö¶àÖÖÊý¾Ý±í£¬Ã¿ÖÖÊý¾Ý±íµÄ×ÔÔöÊôÐÔ¶¼ÓвîÒ죬ÕâÀォ½éÉܸ÷ÖÖÊý¾Ý±íÀïµÄÊý¾ÝÁÐ×ÔÔöÊôÐÔ¡£
ISAM±í
Èç¹û°ÑÒ»¸öNULL²åÈëµ½Ò»¸öAUTO_INCREMENTÊý¾ÝÁÐÀïÈ¥£¬MySQL½«×Ô¶¯Éú³ÉÏÂÒ»¸öÐòÁбàºÅ¡£±àºÅ´Ó1¿ªÊ¼£¬²¢1Ϊ»ùÊýµÝÔö¡£
°Ñ0²åÈëAUTO_INCREMENTÊý¾ÝÁеÄЧ¹ûÓë²åÈëNULLÖµÒ»Ñù¡£µ«²»½¨ÒéÕâÑù×ö£¬»¹ÊÇÒÔ²åÈëNULLֵΪºÃ¡£
µ±²åÈë¼Ç¼ʱ£¬Ã»ÓÐΪAUTO_INCREMENTÃ÷È·Ö¸¶¨Öµ£¬ÔòµÈͬ²åÈëNULLÖµ¡£
µ±²åÈë¼Ç¼ʱ£¬Èç¹ûΪAUTO_INCREMENTÊý¾ÝÁÐÃ÷È·Ö¸¶¨ÁËÒ»¸öÊýÖµ£¬Ôò»á³öÏÖÁ½ÖÖÇé¿ö£¬Çé¿öÒ»£¬Èç¹û²åÈëµÄÖµÓëÒÑÓеıàºÅÖØ¸´£¬Ôò»á³öÏÖ³ö´íÐÅÏ¢£¬ÒòΪAUTO_INCREMENTÊý¾ÝÁеÄÖµ±ØÐëÊÇΨһµÄ£»Çé¿ö¶þ£¬Èç¹û²åÈëµÄÖµ´óÓÚÒѱàºÅµÄÖµ£¬Ôò»á°Ñ¸Ã²åÈëµ½Êý¾ÝÁÐÖУ¬²¢Ê¹ÔÚÏÂÒ»¸ö±àºÅ½«´ÓÕâ¸öÐÂÖµ¿ªÊ¼µÝÔö¡£Ò²¾ÍÊÇ˵£¬¿ÉÒÔÌø¹ýһЩ±àºÅ¡£
Èç¹û×ÔÔöÐòÁеÄ×î´óÖµ±»É¾³ýÁË£¬ÔòÔÚ²åÈëмǼʱ£¬¸ÃÖµ±»ÖØÓá£
Èç¹ûÓÃUPDATEÃüÁî¸üÐÂ×ÔÔöÁУ¬Èç¹ûÁÐÖµÓëÒÑÓеÄÖµÖØ¸´£¬Ôò»á³ö´í¡£Èç¹û´óÓÚÒÑÓÐÖµ£¬ÔòÏÂÒ»¸ö±àºÅ´Ó¸ÃÖµ¿ªÊ¼µÝÔö¡£
Èç¹ûÓÃreplaceÃüÁî»ùÓÚAUTO_INCREMENTÊý¾ÝÁÐÀïµÄÖµÀ´ÐÞ¸ÄÊý¾Ý±íÀïµÄÏÖÓмǼ£¬¼´AUTO_INCREMENTÊý¾ÝÁгöÏÖÔÚÁËreplaceÃüÁîµÄwhere×Ó¾äÀÏàÓ¦µÄAUTO_INCREMENTÖµ½«²»»á·¢Éú±ä»¯¡£µ«Èç¹ûreplaceÃüÁîÊÇͨ¹ýÆäËüµÄPRIMARY KEY OR UNIQUEË÷ÒýÀ´ÐÞ¸ÄÏÖÓмǼµÄ(¼´AUTO_INCREMENTÊý¾ÝÁÐûÓгöÏÖÔÚreplaceÃüÁîµÄwhere×Ó¾äÖÐ)£¬ÏàÓ¦µÄAUTO_INCREMENTÖµ--Èç¹ûÉèÖÃÆäΪNULL(ÈçûÓжÔËü¸³Öµ)µÄ»°--¾Í»á·¢Éú±ä»¯¡£
last_insert_id()º¯Êý¿É»ñµÃ×ÔÔöÁÐ×Ô¶¯Éú³ÉµÄ×îºóÒ»¸ö±àºÅ¡£µ«¸Ãº¯ÊýÖ»Óë·þÎñÆ÷µÄ±¾´Î»á»°¹ý³ÌÖÐÉú³ÉµÄÖµÓйء£Èç¹ûÔÚÓë·þÎñÆ÷µÄ±¾´Î»á»°ÖÐÉÐδÉú³ÉAUTO_INCREMENTÖµ£¬Ôò¸Ãº¯Êý·µ»Ø0¡£
ÆäËüÊý¾Ý±íµÄ×Ô¶¯±àºÅ»úÖÆ¶¼ÒÔISAM±íÖеĻúÖÆÎª»ù´¡¡£
MyISAMÊý¾Ý±í
ɾ³ý×î´ó±àºÅµÄ¼Ç¼ºó£¬¸Ã±àºÅ²»¿ÉÖØÓá£
¿ÉÔÚ½¨±íʱ¿ÉÓá°AUTO_INCREMENT=n¡±Ñ¡ÏîÀ´Ö¸¶¨Ò»¸ö×ÔÔöµÄ³õʼֵ¡£
¿ÉÓÃalter table table_name AUTO_INCREMENT=nÃüÁîÀ´ÖØÉè×ÔÔöµÄÆðʼֵ¡£
¿ÉʹÓø´ºÏË÷ÒýÔÚͬһ¸öÊý¾Ý±íÀï´´½¨¶à¸öÏ໥¶ÀÁ¢µÄ×ÔÔöÐòÁУ¬¾ßÌå×ö·¨ÊÇÕâÑùµÄ£ºÎªÊý¾Ý±í´´½¨Ò»¸öÓɶà¸öÊý¾ÝÁÐ×é³ÉµÄPRIMARY KEY OR UNIQUEË÷Òý£¬²¢°ÑAUTO_INCREMENTÊý¾ÝÁаüÀ¨ÔÚÕâ¸öË÷ÒýÀï×÷ΪËüµÄ×îºóÒ»¸öÊý¾ÝÁС£ÕâÑù£¬Õâ¸ö¸´ºÏË÷ÒýÀï£¬Ç°ÃæµÄÄÇЩÊý¾ÝÁÐÿ¹¹³ÉÒ»ÖÖ¶ÀÒ»ÎÞ¶þµÄ×éºÏ£¬×îĩβµÄAUTO_INCREMENTÊý¾ÝÁоͻáÉú³ÉÒ»¸öÓë¸Ã×éºÏÏà¶ÔÓ¦µÄÐòÁбàºÅ¡£
HEAPÊý¾Ý±í
HEAPÊý¾Ý±í´ÓMySQL4.1¿ªÊ¼²ÅÔÊÐíʹÓÃ×ÔÔöÁС£
×ÔÔöÖµ¿Éͨ¹ýCREATE TABLEÓï¾äµÄ AUTO_INCREMENT=nÑ¡ÏîÀ´ÉèÖá£
¿Éͨ¹ýALTER TABLEÓï¾äµÄAUTO_INCREMENT=nÑ¡ÏîÀ´ÐÞ¸Ä×ÔÔöʼ³õÖµ¡£
±àºÅ²»¿ÉÖØÓá£
HEAPÊý¾Ý±í²»Ö§³ÖÔÚÒ»¸öÊý¾Ý±íÖÐʹÓø´ºÏË÷ÒýÀ´Éú³É¶à¸ö»¥²»¸ÉÈŵÄÐòÁбàºÅ¡£
BDBÊý¾Ý±í
²»¿Éͨ¹ýCREATE TABLE OR ALTER TABLEµÄAUTO_INCREMENT=nÑ¡ÏîÀ´¸Ä±ä×ÔÔö³õʼֵ¡£
¿ÉÖØÓñàºÅ¡£
Ö§³ÖÔÚÒ»¸öÊý¾Ý±íÀïʹÓø´ºÏË÷ÒýÀ´Éú³É¶à¸ö»¥²»¸ÉÈŵÄÐòÁбàºÅ¡£
InnDBÊý¾Ý±í
²»¿Éͨ¹ýCREATE TABLE OR ALTER TABLEµÄAUTO_INCREMENT=nÑ¡ÏîÀ´¸Ä±ä×ÔÔö³õʼֵ¡£
²»¿ÉÖØÓñàºÅ¡£
²»Ö§³ÖÔÚÒ»¸öÊý¾Ý±íÀïʹÓø´ºÏË÷ÒýÀ´Éú³É¶à¸ö»¥²»¸ÉÈŵÄÐòÁбàºÅ¡£
ÔÚʹÓÃAUTO_INCREMENTʱ£¬Ó¦×¢ÒâÒÔϼ¸µã£º
AUTO_INCREMENTÊÇÊý¾ÝÁеÄÒ»ÖÖÊôÐÔ£¬Ö»ÊÊÓÃÓÚÕûÊýÀàÐÍÊý¾ÝÁС£
ÉèÖÃAUTO_INCREMENTÊôÐÔµÄÊý¾ÝÁÐÓ¦¸ÃÊÇÒ»¸öÕýÊýÐòÁУ¬ËùÒÔÓ¦¸Ã°Ñ¸ÃÊý¾ÝÁÐÉùÃ÷ΪUNSIGNED£¬ÕâÑùÐòÁеıàºÅ¸ö¿ÉÔö¼ÓÒ»±¶¡£
AUTO_INCREMENTÊý¾ÝÁбØÐëÓÐΨһË÷Òý£¬ÒÔ±ÜÃâÐòºÅÖØ¸´¡£
AUTO_INCREMENTÊý¾ÝÁбØÐë¾ß±¸NOT NULLÊôÐÔ¡£
AUTO_INCREMENTÊý¾ÝÁÐÐòºÅµÄ×î´óÖµÊܸÃÁеÄÊý¾ÝÀàÐÍÔ¼Êø£¬ÈçTINYINTÊý¾ÝÁеÄ×î´ó±àºÅÊÇ127,Èç¼ÓÉÏUNSIGNED£¬Ôò×î´óΪ255¡£Ò»µ©´ïµ½ÉÏÏÞ£¬AUTO_INCREMENT¾Í»áʧЧ¡£
µ±½øÐÐÈ«±íɾ³ýʱ£¬AUTO_INCREMENT»á´Ó1ÖØÐ¿ªÊ¼±àºÅ¡£È«±íɾ³ýµÄÒâ˼ÊÇ·¢³öÒÔÏÂÁ½ÌõÓï¾äʱ£º
delete from table_name; or truncate table table_name
ÕâÊÇÒòΪ½øÐÐÈ«±í²Ù×÷ʱ£¬MySQLʵ¼ÊÊÇ×öÁËÕâÑùµÄÓÅ»¯²Ù×÷£ºÏȰÑÊý¾Ý±íÀïµÄËùÓÐÊý¾ÝºÍË÷Òýɾ³ý£¬È»ºóÖØ½¨Êý¾Ý±í¡£Èç¹ûÏëɾ³ýËùÓеÄÊý¾ÝÐÐÓÖÏë±£ÁôÐòÁбàºÅÐÅÏ¢£¬¿ÉÕâÑùÓÃÒ»¸ö´øwhereµÄdeleteÃüÁîÒÔÒÖÖÆMySQLµÄÓÅ»¯£º
delete from table_name where 1;
Õ⽫ÆÈʹMySQLΪÿ¸öɾ³ýµÄÊý¾ÝÐж¼×öÒ»´ÎÌõ¼þ±í´ïʽµÄÇóÖµ²Ù×÷¡£
Ç¿ÖÆMySQL²»¸´ÓÃÒѾʹÓùýµÄÐòÁÐÖµµÄ·½·¨ÊÇ£ºÁíÍâ´´½¨Ò»¸öרÃÅÓÃÀ´Éú³ÉAUTO_INCREMENTÐòÁеÄÊý¾Ý±í£¬²¢×öµ½ÓÀÔ¶²»È¥É¾³ý¸Ã±íµÄ¼Ç¼¡£µ±ÐèÒªÔÚÖ÷Êý¾Ý±íÀï²åÈëÒ»Ìõ¼Ç¼ʱ£¬ÏÈÔÚÄǸöרÃÅÉú³ÉÐòºÅµÄ±íÖвåÈëÒ»¸öNULLÖµÒÔ²úÉúÒ»¸ö±àºÅ£¬È»ºó£¬ÔÚÍùÖ÷Êý¾Ý±íÀï²åÈëÊý¾Ýʱ£¬ÀûÓÃLAST_INSERT_ID()º¯ÊýÈ¡µÃÕâ¸ö±àºÅ£¬²¢°ÑËü¸³Öµ¸øÖ÷±íµÄ´æ·ÅÐòÁеÄÊý¾ÝÁС£È磺
insert into id set id = NULL; insert into main set main_id = LAST_INSERT_ID();
¿ÉÓÃalterÃüÁî¸øÒ»¸öÊý¾Ý±íÔö¼ÓÒ»¸ö¾ßÓÐAUTO_INCREMENTÊôÐÔµÄÊý¾ÝÁС£MySQL»á×Ô¶¯Éú³ÉËùÓеıàºÅ¡£
ÒªÖØÐÂÅÅÁÐÏÖÓеÄÐòÁбàºÅ£¬×î¼òµ¥µÄ·½·¨ÊÇÏÈɾ³ý¸ÃÁУ¬ÔÙÖØ½¨¸Ã£¬MySQL»áÖØÐÂÉúÁ¬ÐøµÄ±àºÅÐòÁС£
ÔÚ²»ÓÃAUTO_INCREMENTµÄÇé¿öÏÂÉú³ÉÐòÁУ¬¿ÉÀûÓôø²ÎÊýµÄLAST_INSERT_ID()º¯Êý¡£Èç¹ûÓÃÒ»¸ö´ø²ÎÊýµÄLAST_INSERT_ID(expr)È¥²åÈë»òÐÞ¸ÄÒ»¸öÊý¾ÝÁУ¬½ô½Ó×ÅÓÖµ÷Óò»´ø²ÎÊýµÄLAST_INSERT_ID()º¯Êý£¬ÔòµÚ¶þ´Îº¯Êýµ÷Ó÷µ»ØµÄ¾ÍÊÇexprµÄÖµ¡£ÏÂÃæÑÝʾ¸Ã·½·¨µÄ¾ßÌå²Ù×÷£º
ÏÈ´´½¨Ò»¸öÖ»ÓÐÒ»¸öÊý¾ÝÐеÄÊý¾Ý±í£º create table seq_table (id int unsigned not null); insert into seq_table values (0); ½Ó×ÅÓÃÒÔϲÙ×÷¼ìË÷³öÐòÁкţº update seq_table set seq = LAST_INSERT_ID( seq + 1 ); select LAST_INSERT_ID(); ͨ¹ýÐÞ¸Äseq+1Öеij£ÊýÖµ£¬¿ÉÉú³É²»Í¬²½³¤µÄÐòÁУ¬Èçseq+10¿ÉÉú³É²½³¤Îª10µÄÐòÁС£
¸Ã·½·¨¿ÉÓÃÓÚ¼ÆÊýÆ÷£¬ÔÚÊý¾Ý±íÖвåÈë¶àÐÐÒԼǼ²»Í¬µÄ¼ÆÊýÖµ¡£ÔÙÅäºÏLAST_INSERT_ID()º¯ÊýµÄ·µ»ØÖµÉú³É²»Í¬ÄÚÈݵļÆÊýÖµ¡£ÕâÖÖ·½·¨µÄÓŵãÊDz»ÓÃÊÂÎñ»òLOCK£¬UNLOCK±í¾Í¿ÉÉú³ÉΨһµÄÐòÁбàºÅ¡£²»»áÓ°ÏìÆäËü¿Í»§³ÌÐòµÄÕý³£±í²Ù×÷¡£
MySQL4.1ÒÔǰ°æ±¾·þÎñÆ÷Ö»ÄÜʹÓõ¥Ò»×Ö·û¼¯£¬´ÓMySQL4.1°æ±¾¿ªÊ¼£¬²»½ö·þÎñÆ÷Äܹ»Ê¹ÓöàÖÖ×Ö·û¼¯£¬¶øÇÒÔÚ·þÎñÆ÷¡¢Êý¾Ý¿â¡¢Êý¾Ý±í¡¢Êý¾ÝÁÐÒÔ¼°×Ö·û´®³£Êý¶à¸ö¼¶±ðÉÏÉèÖò»Í¬µÄ×Ö·û¼¯¡£
MySQL4.1ÒÔǰ°æ±¾µÄ×Ö·û¼¯ÓÉ·þÎñÆ÷ĬÈÏÖ¸¶¨£¬Ä¬ÈÏÖµÊDZàÒëϵͳʱָ¶¨µÄ×Ö·û¼¯£¬¸Ã×Ö·û¼¯Ò²¿Éͨ¹ýÔÚÆô¶¯·þÎñÆ÷ʱָ¶¨--default-character-setÀ´Ð޸ġ£ÕâÖÖÐ޸Ļá¶ÔÊý¾Ý±íµÄË÷ÒýÔì³ÉÓ°Ï죬ÒòΪË÷ÒýµÄ˳ÐòÊǺÍ×Ö·û¼¯Óйصģ¬ÐÞ¸Ä×Ö·û¼¯»áʹÕâ¸öÒÑÅÅÐòµÄ˳Ðò²úÉú´íÎó¡£Òª½â¾ö¸ÃÎÊÌ⣬ÎÒÃÇÒªÓÃÐ޸ĺóµÄ×Ö·û¼¯µÄÅÅÐò˳ÐòÖØ½¨±íµÄË÷Òý¡£Öؽ¨Ë÷ÒýÓÐÒÔϼ¸ÖÖ·½·¨£º
ÓÃmysqldumpµ¼³öÊý¾Ý£¬ÔÙÇå³ý±íÀïµÄÄÚÈÝ£¬×îºóÓõ¼³öÎļþÖØÐµ¼Èë¡£Êý¾Ý±íµÄË÷Òý½«ÔÚµ¼ÈëÊýÊ±ÖØ½¨¡£¸Ã·½·¨ÊÊÓÃÓÚËùÓÐÊý¾Ý±íÀàÐÍ¡£
ɾ³ýË÷Òý£¬È»ºóÖØ½¨¡£ÓÃalter tableÃüÁî»òdrop indexºÍcreate indexÃüÁîÀ´Íê³É¡£¸Ã·½·¨Ò²ÊÊÓÃÓÚËùÓÐÊý¾Ý±íÀàÐÍ¡£µ«¸Ã·½·¨ÐèÒªÎÒÃÇÁ˽âÖØ½¨Ë÷ÒýµÄ¾«È·¶¨Òå¡£
MyISAMÊý¾Ý±íµÄË÷Òý¿ÉÒÔÓÃmyisamchk³ÌÐòµÄ--recoverºÍ--quickÑ¡Ïî¼ÓÉÏÒ»¸öÓÃÀ´É趨ÐÂ×Ö·û¼¯µÄ--set-character-setÑ¡Ïî½øÐÐÖØ½¨¡£»¹¿ÉÒÔÓÃmysqlcheck³ÌÐòµÄ--repairºÍ--quickÑ¡Ïî»òÕßÒ»¸ö´øQUICKÑ¡ÏîµÄREPLACE TABLEÓï¾äÀ´Öؽ¨Ë÷Òý£¬ÕâÖÖ·½Ê½½Ï·½±ã¡£
MySQL4.1ÒÔºóµÄ°æ±¾¶Ô×Ö·û¼¯µÄÖ§³ÖºÃÁ˺ܶ࣬¾ßÓÐÒÔÏÂÐÂÔö¹¦ÄÜ£º
Ö§³Ö·þÎñÆ÷ͬʱʹÓöàÖÖ×Ö·û¼¯¡£
ÔÊÐíÔÚ·þÎñÆ÷£¬Êý¾Ý¿â£¬Êý¾Ý±í£¬Êý¾ÝÁеȶ༶±ðÉÏÉèÖò»Í¬µÄ×Ö·û¼¯¡£
·þÎñÆ÷µÄĬÈÏ×Ö·û¼¯ÔÚ±àÒëʱѡ¶¨£¬µ«¿ÉÔÚÆô¶¯·þÎñÆ÷ʱÓÃ--default-character-setÑ¡ÏîÀ´¸ü¸Ä¡£
ÓÃALTER DATABASE db_name DEFAULT CHARACTER SET charsetÀ´ÉèÖÃÊý¾Ý¿â×Ö·û¼¯¡£ Èç¹ûÖ»ÓÐdefault²ÎÊý£¬ÔòʹÓ÷þÎñÆ÷µÄ×Ö·û¼¯¡£
ÓÃCREATE TABLE table_name(...) CHARACTER SET = charsetÉèÖÃÊý¾Ý±í×Ö·û¼¯¡£Èç¹ûcharsetΪdefault£¬ÔòʹÓÃÊý¾Ý±íËùÔÚÊý¾Ý¿âµÄ×Ö·û¼¯×÷ΪÊý¾Ý±íµÄ×Ö·û¼¯¡£
ÔÚÊý¾ÝÁÐÖУ¬¿ÉÓÃCHARACTER SET charsetÊôÐÔÀ´ÉèÖÃÊý¾ÝÁеÄ×Ö·û¼¯¡£charset²»ÄÜÊÇdefault£¬Èç¹ûûÓиÃÊôÐÔ£¬ÔòĬÈÏʹÓÃÊý¾Ý±íµÄ×Ö·û¼¯¡£ÔÊÐíÉèÖÃ×Ö·û¼¯µÄÊý¾ÝÁÐÓÐchar£¬varchar(²»´øbinaryÊôÐÔ)¼°TEXTÀàÐÍ¡£
ÓÃ_charset strת»»×Ö·û´®³£ÊýµÄ×Ö·û¼¯¡£È磺_utf8 'mysql'£¬_latinl 'oracle'¡£¸Ã·½·¨Ö»ÊÊÓÃÓÚÀ¨ÔÚÒýºÅÄÚµÄ×Ö·û´®£¬ÆäËüÊ®Áù½øÖƳ£Êý ¡¢×Ö·û´®±í´ïʽµÈ¿ÉÓÃCONVERT()º¯Êý½øÐÐת»»£¬È磺SELECT CONVERT( str USING charset)¡£
ͨ¹ýMySQLÌṩµÄº¯Êý¿É½øÐÐ×Ö·û¼¯×ª»»ºÍ²éѯ¡£
ÐÂÔöµÄCOLLATE²Ù×÷·ûʹÎÒÃǿɰ´Ä³Ò»ÖÖ×Ö·û¼¯µÄÅÅÐò˳ÐòÀ´´¦ÀíÁíÒ»ÖÖ×Ö·û¼¯µÄÊý¾Ý¡£È磺SELECT a from t ORDER BY a COLLATE utf-8£»
ÓÃSHOW CHARACTER SETÃüÁî¿ÉÏÔʾ·þÎñÆ÷Ö§³ÖµÄ×Ö·û¼¯ÁÐ±í¡£
µ±·þÎñÆ÷ת»»µ½ÁíÒ»ÖÖ×Ö·û¼¯Ê±£¬»á×Ô¶¯¶ÔË÷Òý½øÐÐÖØÐÂÅÅÐò¡£
ͨ¹ýUTF-8ºÍUCS2×Ö·û¼¯ÌṩÁËUnicodeÖ§³Ö¡£
MySQLÏÖÔÚ»¹²»Ö§³Ö£º1,ÔÚͬһ¸ö×Ö·û´®Àï»ìÓò»Í¬×Ö·û¼¯µÄ×Ö·û£»2,ÔÚͬһ¸öÊý¾ÝÁÐÀï»ìÓò»Í¬µÄ×Ö·û¼¯¡£
·þÎñÆ÷¼¶
SHOW CHARACTER SET£»¿É²é³ö¿É¹©Ê¹ÓõÄËùÓÐ×Ö·û¼¯¡£ SHOW VARIABLES LIKE 'character_set'£»¿É²é³ö·þÎñÆ÷µÄĬÈÏ×Ö·û¼¯¡£
¿É²é³öÊý¾Ý¿â¼¶µÄ×Ö·û¼¯¡£
SHOW CREATE DATABASE db_name£»
Á½ÌõÃüÁî¿É²é³öÊý¾Ý±íµÄ×Ö·û¼¯¡£
SHOW CREATE TABLE table_name£» SHOW TABLE STATUS LIKE 'table_name'
ÒÔϼ¸ÃüÁî¿É²é³öÊý¾ÝÁеÄ×Ö·û¼¯£º
DESCRIBE table_name; SHOW COLUMNS FROM table_name; SHOW CREATE TABLE table_name;
ÓÃCHARSET()º¯Êý¿ÉÈ·¶¨Ìض¨×Ö·û´®£¬×Ö·û´®±í´ïʽ»òÊý¾ÝÁÐÖµÏà¹ØÁªµÄ×Ö·û´®µÄ×Ö·û¼¯¡£È磺SELECT CHARSET(str)¡£
Ñ¡ÔñÕýÈ·µÄÊý¾ÝÁÐÀàÐÍÄÜ´ó´óÌá¸ßÊý¾Ý¿âµÄÐÔÄܺÍʹÊý¾Ý¿â¾ßÓиßÀ©Õ¹ÐÔ¡£ÔÚÑ¡ÔñÊý¾ÝÁÐÀàÐÍʱ£¬Çë´ÓÒÔϼ¸¸ö·½Ã濼ÂÇ£º
´æ·Åµ½Êý¾ÝÁÐÖеÄÊý¾ÝÀàÐÍ¡£
Êý¾ÝÖµµÄȡֵ·¶Î§¡£
¿¼ÂÇÐÔÄܺʹ¦ÀíЧÂÊ¡£
ÊýÖµ²Ù×÷±È×Ö·û²Ù×÷¿ì¡£
СÀàÐ͵Ĵ¦ÀíËٶȱȴóÀàÐͿ졣
²»Í¬Êý¾Ý±íÖй̶¨³¤¶ÈÀàÐͺͿɱ䳤¶ÈÀàÐ͵Ĵ¦ÀíЧÂÊÊDz»Í¬µÄ¡£
¿É±ä³¤¶ÈÀàÐÍÔÚ¾¹ýɾ³ýºÍÐ޸IJÙ×÷ºóÈÝÒײúÉúË鯬£¬½µµÍϵͳÐÔÄÜ£¬Ð趨ÆÚÔËÐÐOPTIMIZE TABLEÃüÁîÒÔÓÅ»¯Êý¾Ý±í¡£
¹Ì¶¨³¤¶ÈÀàÐÍÓÉÓÚÓй̶¨µÄ³¤¶È£¬ËùÒÔÈÝÒ×È·¶¨Ã¿Ìõ¼Ç¼µÄÆðʼµã£¬¿É¼Ó¿ìÊý¾Ý±íµÄÐÞ¸´ËÙ¶È¡£
ÔÚMyISAMºÍISAM±íÖÐʹÓù̶¨³¤¶ÈÀàÐÍÊý¾ÝÁÐÓÐÖú¸ÄÉÆÊý¾Ý¿âÐÔÄÜ¡£
ÔÚInnoDB±íÖУ¬¹Ì¶¨³¤¶ÈºÍ¿É±ä³¤¶ÈÊý¾ÝÁÐÀàÐͶ¼ÒÔÏàͬ·½Ê½´æ´¢£¬ËùÒԹ̶¨³¤¶ÈÊý¾ÝÁÐÀàÐͲ¢Ã»ÓÐÐÔÄÜÓÅÊÆ£¬·´¶øÓÉÓڿɶȳ¤¶ÈÊý¾ÝÁÐÀàÐÍÓÉÓÚÕ¼Óô洢¿Õ¼ä½ÏÉÙ£¬ËùÒÔ´¦ÀíËÙ¶È»á¿ìЩ¡£
¿ÉË÷ÒýÀàÐÍÄܼӿìÊý¾ÝµÄ²éѯËÙ¶È¡£
Ã÷È·Ö¸¶¨Êý¾ÝÁеÄNOT NULLÊôÐÔ¿ÉʹMySQLÔÚ¼ìË÷¹ý³ÌÖв»ÓÃÈ¥ÅжÏÊý¾ÝÁÐÊÇ·ñÊÇNULL£¬ËùÒԿɼӿ촦ÀíËÙ¶È¡£
Êý¾ÝÈçºÎ½øÐбȽϣ¬ÊÇ·ñÇø·Ö´óСд¡£
ÊÇ·ñÒªÔÚÊý¾ÝÁÐÉϽ¨Á¢Ë÷Òý¡£
Table 1.6. Âß¼²Ù×÷·û
| ²Ù×÷·û | Óï·¨ | º¬Òå |
|---|---|---|
| AND »ò && | a AND b »ò a && b | Âß¼Ó룬ÈôÁ½¸ö²Ù×÷ÊýÍ¬Ê±ÎªÕæ£¬ÔòÎªÕæ |
| OR »ò || | a OR b »ò a || b | Âß¼»ò£¬Ö»ÒªÓÐÒ»¸ö²Ù×÷ÊýÎªÕæ£¬ÔòÎªÕæ |
| XOR | a XOR b | Âß¼Òì»ò£¬ÈôÓÐÇÒ½öÓÐÒ»¸ö²Ù×÷ÊýÎªÕæ£¬ÔòÎªÕæ |
| NOT »ò £¡ | NOT a »ò !a | Âß¼·Ç£¬Èô²Ù×÷ÊýΪ¼Ù£¬ÔòÎªÕæ |
Table 1.7. λ²Ù×÷·û
| ²Ù×÷·û | Óï·¨ | º¬Òå |
|---|---|---|
| & | a & b | °´Î»Ó룬Èô²Ù×÷ÊýͬλͬΪ1,Ôò¸ÃλΪ1 |
| | | a | b | °´Î»»ò£¬Èô²Ù×÷ÊýͬλÓÐһλΪ1,Ôò¸ÃλΪ1 |
| ^ | a ^ b | °´ÀÒì»ò£¬Èô²Ù×÷Êýͬһλ·Ö±ðΪ1ºÍ0,Ôò¸ÃλΪ1 |
| << | a << b | °ÑaÖеĸ÷¸öλ×óÒÆb¸öλÖà |
| >> | a >> b | °ÑaÖеĸ÷¸öλÓÒÒÆb¸öλÖà |
Table 1.8. ±È½Ï²Ù×÷·û
| ²Ù×÷·û | Óï·¨ | º¬Òå |
|---|---|---|
| = | a = b | ÈôÁ½¸ö²Ù×÷ÊýÏàµÈ£¬ÔòÎªÕæ |
| <=> | a <=> b | ÈôÁ½¸ö²Ù×÷ÊýÏàµÈ£¬ÔòÎªÕæ£¬¿ÉÓÃÓÚNULLÖµ±È½Ï |
| != »ò <> | a != b »ò a <> b | ÈôÁ½¸ö²ÙÓÃÊý²»µÈ£¬ÔòÎªÕæ |
| < | a < b | ÈôaСÓÚb£¬ÔòÎªÕæ |
| <= | a <= b | ÈôaСÓÚ»òµÈÓÚb£¬ÔòÎªÕæ |
| > | a > b | Èôa´óÓÚb£¬ÔòÎªÕæ |
| >= | a > b | Èôa´óÓÚ»òµÈÓÚb£¬ÔòÎªÕæ |
| IN | a IN (b1,b2,...) | ÈôaµÈÓÚb1,b2,...ÖеÄijһ¸ö£¬ÔòÎªÕæ |
| BETWEEN | a BETWEEN b AND c | ÈôaÔÚbºÍcÖ®¼ä(°üÀ¨bºÍc)£¬ÔòÎªÕæ |
| NOT BETWEEN | a NOT BETWEEN b AND c | Èôa²»ÔÚbºÍcÖ®¼ä(°üÀ¨bºÍc)£¬ÔòÎªÕæ |
| LIKE | a LIKE b | SQLģʽƥÅ䣬ÈôaÆ¥Åäb£¬ÔòÎªÕæ |
| NOT LIKE | a NOT LIKE b | SQLģʽƥÅ䣬Èôa²»Æ¥Åäb£¬ÔòÎªÕæ |
| REGEXP | a REGEXP b | ÕýÔò±í´ïʽƥÅ䣬ÈôaÆ¥Åäb£¬ÔòÎªÕæ |
| NOT REGEXP | a NOT REGEXP b | ÕýÔò±í´ïʽƥÅ䣬Èôa²»Æ¥Åäb£¬ÔòÎªÕæ |
| IS NULL | a IS NULL | ÈôaΪNULL£¬ÔòÎªÕæ |
| IS NOT NULL | a IS NOT NULL | Èôa²»ÎªNULL£¬ÔòÎªÕæ |
![]() | |
| LIKEģʽƥÅäÖеġ°%¡±Æ¥ÅäÈÎÒâ¸ö×Ö·û£¬¡°_¡±Æ¥ÅäÒ»¸ö×Ö·û¡£Æ¥Åä²»Çø·Ö´óСд×Ö·û¡£ | |
ÔÚMySQLµÄ±í´ïʽÖУ¬Èç¹ûij¸öÊý¾ÝÖµµÄÀàÐÍÓëÉÏÏÂÎÄËùÒªÇóµÄÀàÐͲ»Ïà·û£¬MySQLÔò»á¸ù¾Ý½«Òª½øÐеIJÙ×÷×Ô¶¯µØ¶ÔÊý¾ÝÖµ½øÐÐÀàÐÍת»»¡£È磺
1 + '2' »áת»»³É1 + 2 = 3 1+ 'abc' »áת»»³É1 + 0 = 1 ÓÉÓÚabc²»ÄÜת»»³ÉÈκεÄÖµ£¬ËùÒÔĬÈÏΪ0
MySQL»á¸ù¾Ý±í´ïʽÉÏÏÂÎĵÄÒªÇ󣬰Ñ×Ö·û´®ºÍÊýÖµ×Ô¶¯×ª»»ÎªÈÕÆÚºÍʱ¼äÖµ
¶ÔÓÚ³¬·¶Î§»ò·Ç·¨µÄÖµ£¬MySQLÒ²»á½øÐÐת»»£¬µ«×ª»»³öÀ´µÄ½á¹ûÊÇ´íÎóµÄ¡£³öÏÖ¸ÃÇé¿öʱ£¬MySQL»áÌáʾ¾¯¸æÐÅÏ¢£¬ÎÒÃǿɲ¶»ñ¸ÃÐÅÏ¢ÒÔ½øÐÐÏàÓ¦µÄ´¦Àí¡£
Table of Contents
Êý¾Ý¿âÊÇÊý¾ÝµÄ¼¯ºÏ£¬ÓëÊýѧµÄ¼¯ºÏÂÛÓÐÃܲ»¿É·ÖµÄ¹ØÏµ¡£
ΪÌá¸ß²éѯËÙ¶È£¬ÎÒÃÇ¿ÉÒÔ£º
¶ÔÊý¾Ý±íÌí¼ÓË÷Òý£¬ÒÔ¼Ó¿ìËÑË÷ËÙ¶È£»
ͨ¹ý±à³Ì¼¼ÇÉ×î´óÏ޶ȵØÀûÓÃË÷Òý£»
ÓÅ»¯²éѯÓï¾ä£¬ÒÔʹ·þÎñÆ÷×î¿ìÏìÓ¦¶à¿Í»§µÄÇëÇó¡£
Ñо¿Ó²¼þ´¦Àí¹ý³Ì£¬¼õÉÙÎïÀíÔ¼Êø¡£
Ë÷Òý¼¼ÊõÊǹØÏµÊý¾Ý²éѯÖÐ×îÖØÒªµÄ¼¼Êõ¡£Èç¹ûÒª¼ÓÌáÉýÊý¾Ý¿âµÄÐÔÄÜ£¬Ë÷ÒýÓÅ»¯ÊÇÊ×ÏÈÓ¦¸Ã¿¼Âǵġ£ÒòΪËüÄÜʹÎÒÃǵÄÊý¾Ý¿âµÃµ½×î´óÐÔÄÜ·½ÃæµÄÌáÉý¡£
Ë÷ÒýµÄÓŵ㣺
ûÓÐË÷ÒýµÄ±íÊÇûÓÐÅÅÐòµÄÊý¾Ý¼¯ºÏ£¬Èç¹ûÒª²éѯÊý¾ÝÐè½øÐÐÈ«±íɨÃè¡£ÓÐË÷ÒýµÄ±íÊÇÒ»¸öÔÚË÷ÒýÁÐÉÏÅÅÐòÁËÊý¾Ý±í£¬¿Éͨ¹ýË÷Òý¿ìËÙ¶¨Î»¼Ç¼¡£ÔÚMyISAMºÍISAMÊý¾Ý±íÖУ¬Êý¾ÝÐб£´æÔÚÊý¾ÝÎļþÖУ¬Ë÷Òý±£´æÔÚË÷ÒýÎļþÖС£BDBÓëInnoDBÊý¾Ý±í°ÑÊý¾ÝÓëË÷Òý·ÅÔÚͬһ¸öÎļþÖС£
ÔÚ¶à±í¹ØÁª²éѯÖУ¬Ë÷ÒýµÄ×÷Óþ͸ü´ó¡£Èç¹ûûÓÐË÷Òý£¬ÔÚ×µÄÇé¿öÏ£¬È«±íɨÃèµÄ´ÎÊý¿ÉÄÜÊǸ÷±íÊý¾ÝÐеÄ×éºÏ¸öÊý£¬¿ÉÄÜÊÇÒ»¸öÌìÎÄÊý×Ö¡£ÕâÑùµÄ²éѯÊÇÆÆ»µÐԵģ¬¿ÉÄÜ»áÔì³ÉÊý¾Ý¿â̱»¾¡£
¶ÔÓÚʹÓÃÁËMIN()»òÊÇMAX()º¯ÊýµÄ²éѯ£¬Èç¹ûÏà¹ØµÄÊý¾ÝÁÐÉÏÓÐË÷Òý£¬MySQLÄÜÖ±½ÓÕÒµ½¸Ã×î´ó¡¢×îСֵµÄÐУ¬¸ù±¾²»ÓÃÒ»¸öÒ»¸öµØÈ¥¼ì²éÊý¾ÝÐС£
Ë÷Òý¼Ó¿ìORDER BY ºÍ GROUP BY×Ó¾äµÄ²Ù×÷¡£
µ±ÔÚÊýÖµÐÍÊý¾ÝÁÐÉϲéѯÊý¾Ý£¬¶ø¸ÃÁÐÓÐË÷Òý£¬Ë÷ÒýÄÜʹMySQL¸ù±¾²»ÓÃÈ¥¶ÁÈ¡Êý¾ÝÐУ¬Ö±½Ó´ÓË÷Òýȡֵ¡£
Ë÷ÒýµÄȱµã£º
Ë÷ÒýÐèÕ¼ÓôÅÅ̿ռ䡣
Ë÷Òý»á¼õÂýÔÚË÷ÒýÊý¾ÝÁÐÉϵIJåÈ롢ɾ³ýºÍÐ޸IJÙ×÷¡£
Ë÷ÒýÁеÄÑ¡Ôñ
Ë÷ÒýÓ¦¸Ã´´½¨ÔÚËÑË÷¡¢ÅÅÐò¡¢·Ö×éµÈ²Ù×÷ËùÉæ¼°µÄÊý¾ÝÁÐÉÏ¡£Ò²¾ÍÊÇ˵£¬ÔÚwhere×Ӿ䣬¹ØÁª¼ìË÷ÖеÄfrom×Ӿ䡢order by»ògroup by×Ó¾äÖгöÏÖ¹ýµÄÊý¾ÝÁÐ×îÊʺÏÓÃÀ´´´½¨Ë÷Òý¡£
¾¡Á¿Ê¹ÓÃΨһË÷Òý£¬ËüÄÜʹË÷Òý·¢»Ó×îºÃµÄЧÄÜ¡£
¾¡Á¿ÓñȽ϶̵ÄÖµ½øÐÐË÷Òý¡£µ±¶Ô×Ö·û´®½øÐÐË÷Òýʱ£¬Ó¦¸ÃÖ¸¶¨Ò»¸öǰ׺³¤¶È£¬±ÈÈç¶Ô×Ö·û´®µÄǰ10λ»ò20λµÄ×Ö·û½øÐÐÅÅÐò£¬¶ø²»ÓðÑÕû¸ö×Ö·û´®¼¸Ê®¸ö×Ö·ûÓÃÀ´Ë÷ÒýÅÅÐò¡£ÕâÑùÄܼõÉÙ´ÅÅÌI/O£¬Ìá¸ß´¦ÀíËÙ¶È¡£×îÖØÒªµÄÒ»µãÊÇ£¬¼üÖµÔ½¶Ì£¬Ë÷Òý»º³åÇøÀïÈÝÄɵļüÖµÒ²¾ÍÔ½¶à£¬¶øMySQLͬʱ±£´æÔÚÄÚ´æÀïµÄË÷ÒýÔ½¶à£¬Ë÷Òý»º³åÇøµÄÃüÖÐÂÊÒ²¾ÍÔ½¸ß¡£µ±È»£¬Ö»¶ÔÊý¾ÝÁеÚÒ»¸ö×Ö·û½øÐÐË÷ÒýÊÇûʲôÒâÒåµÄ¡£
³ä·ÖÀûÓÃ×î×óǰ׺¡£Ëùν×î×óǰ׺Ҳ¾ÍÊÇÔÚ¸´ºÏË÷ÒýÖÐ×î±ßµÄË÷ÒýÁС£È縴ºÏË÷Òý(a,b,c) £¬ÆäÖÐa¾ÍÊÇ×î×óǰ׺¡£ËüÊÇʹÓÃÂÊ×î¸ßµÄË÷Òý£¬ÐèÈÏÕæÑ¡Ôñ¡£
²»Òª½¨Ì«¶àË÷Òý£¬Ë÷ÒýÊÇ»áÏûºÄϵͳ×ÊÔ´µÄ£¬ÒªÊʿɶøÖ¹¡£
Ë÷ÒýÖ÷ÒªÓÃÓÚ<¡¢<=¡¢=¡¢>=¡¢>¡¢BETWEENµÈµÄ±È½Ï²Ù×÷ÖУ¬ËùÒÔË÷ÒýÓ¦¸Ã½¨Á¢ÔÚÓëÕâÑù²Ù×÷Ïà¹ØµÄÊý¾ÝÁÐÉÏ¡£
ÀûÓÃÂý²éѯÈÕÖ¾À´ÕÒ³öÐÔÄܲîµÄ²éѯ£¬Í¨¹ýmysqldumpslow¿É²é¿´¸ÃÈÕÖ¾¡£Õë¶ÔÐÔÄܲîµÄ²éѯ¿ÉÀûÓÃË÷ÒýÀ´¼Ó¿ì²éѯËÙ¶È¡£
µ±ÎÒÃÇ·¢Ò»Ìõ²éѯÃüÁîʱ£¬MySQL·Ö¶ÔËü½øÐзÖÎö£¬ÒÔÓÅ»¯²éѯ¡£°ÑexplainÓïÃû·Åµ½²éÑ¯Ç°Ãæ¿ÉÏÔʾ²éѯµÄÖ´ÐзÏߣ¬¶ÔÓÅ»¯²éѯÌṩÓÐÓõÄÐÅÏ¢¡£ÒÔϼ¸¸öÔÔò¿É°ïÖúϵͳÌôÑ¡ºÍʹÓÃË÷Òý£º
¾¡Á¿¶ÔͬÀàÐ͵ÄÊý¾ÝÁнøÐбȽϡ£È磺VARCHAR(5)ºÍVARCHAR(5)ÊÇͬÀàÐ͵ģ¬CHAR(5)ºÍVARCHAR(5)ÊDz»Í¬ÀàÐ͵ġ£
¾¡Á¿ÈÃË÷ÒýµÄÊý¾ÝÁÐÔڱȽϱí´ïʽÖе¥¶À³öÏÖ£¬²»Òª°ÑËü°üº¬ÔÚº¯Êý»ò¸´ÔÓ±í´ïʽ¡£·ñÔòË÷Òý»á²»Æð×÷Óá£
¾¡Á¿²»ÒªÔÚLIKEģʽµÄ¿ªÍ·Ê¹ÓÃͨÅä·û¡£È磺%string%¡£
¶ÔÓÚMyISAMºÍBDBÊý¾Ý±í£¬ÓÃANALYZE TABLEÓï¾äÈ÷þÎñÆ÷¶ÔË÷Òý¼üÖµµÄ·Ö²¼½øÐзÖÎö£¬ÎªÓÅ»¯³ÌÐòÌṩ¸üÓмÛÖµµÄÐÅÏ¢¡£ÁíÒ»¸ö·½·¨ÊÇÓÃmyisamchk --analyze(ÊÊÓÃÓÚMyISAM±í)»òisamchk --analyze(ÊÊÓÃÓÚISAM±í)ÃüÁî¡£
ÓÃEXPLAINÓï¾äÀ´·ÖÎö²éѯÓï¾äµÄÖ´ÐÐЧÂÊ¡£¼ì²é²éѯËùʹÓõÄË÷ÒýÊDz»ÊÇÄܹ»Ñ¸ËÙµØÅųý²»·ûºÏÌõ¼þµÄÊý¾ÝÐУ¬Èç¹û²»ÊÇ£¬¿ÉÒÔÊÔ×ÅÓÃSTRAIGHT_JOINÇ¿ÖÆ¸÷ÓйØÊý¾Ý±í°´Ö¸¶¨Ë³Ðò½øÐйØÁª¡£
³¢ÊÔ²éѯµÄ²»Í¬Ð´·¨£¬±È½ÏÔËÐÐÇé¿ö¡£
²»ÒªÀÄÓÃMySQLµÄÀàÐÍ×Ô¶¯×ª»»¹¦ÄÜ¡£×Ô¶¯×ª»»»á¼õÂý²éѯµÄËٶȲ¢»áʹÓйصÄË÷ÒýʧЧ¡£
Ñ¡ÓÃÊʵ±µÄÊý¾ÝÁÐÀàÐÍÓÐÖúÓÚÌá¸ß²éѯÃüÁîµÄÖ´ÐÐËÙ¶È£¬ÏÂÃæÊǼ¸µã¹ØÓÚÈçºÎÑ¡ÔñºÏÊÊÊý¾ÝÁÐÀàÐ͵Ľ¨Ò飺
¾¡Á¿Ñ¡Óóߴç½ÏСµÄÊý¾ÝÁС£ÕâÑùÄܽÚÔ¼´ÅÅ̿ռäºÍ¼Ó¿ì²éѯËÙ¶È¡£Èç¹û½Ï¶ÌµÄÊý¾ÝÁÐÉϽ¨ÓÐË÷Òý£¬ÔòË÷ÒýµÄ´¦ÀíËÙ¶È»á½øÒ»²½Ìá¸ß¡£
Õë¶ÔÊý¾ÝÁÐÀàÐÍ£¬¾¡Á¿Ñ¡Ôñ×îÊÊÓõÄÊý¾Ý±íÀàÐÍ¡£Èç¹Ì¶¨³¤¶ÈÊý¾ÝÁÐÔÚMyISAM»òISAMÊý¾Ý±íÖеÄËÙ¶ÈÊÇ×î¿ìµÄ£¬ËùÒÔÔÚÕâÑùÊý¾Ý±íÖо¡Á¿Ê¹ÓÃcharÀàÐͶø²»ÊÇvarcharÀàÐÍÀ´±£´æ×Ö·û´®Êý¾Ý¡£¶ÔÓÚInnoDBÊý¾Ý±íÀàÐÍ£¬ÓÉÓÚvarcharÀàÐÍ¿ÉÓÐЧ¼õÉÙÕ¼Óÿռ䣬´Ó¶ø¼õÉÙ´ÅÅÌI/O£¬ËùÒÔʹÓÃvarcharÀàÐÍÊÇÓÐÀûµÄ¡£¶ÔÓÚBDBÀàÐÍÊý¾Ý±í£¬Ê¹Óö¨³¤ºÍ²»¶¨³¤ÁÐÀàÐ͵ÄÇø±ð¾Í²»´ó£¬¿ÉÈÎѡһÖÖ¡£
¾¡Á¿°ÑÊý¾ÝÁÐÉùÃ÷ΪNOT NULL£¬ÒÔ½ÚÔ¼´æ´¢¿Õ¼äºÍ¼Ó¿ì´¦ÀíËÙ¶È¡£
¶ÔÓÚȡֵ·¶Î§ÓÐÏÞµÄÊý¾ÝÁУ¬¿¼ÂÇʹÓÃENUMÊý¾ÝÁÐÀàÐÍ¡£ENUMÊý¾ÝÁÐÀàÐÍÔÚMySQLÖеĴ¦ÀíËÙ¶ÈÊǺܿ졣
ʹÓÃPROCEDURE ANALYSE()Óï¾äÀ´·ÖÎöÊý¾Ý±í£¬Ëü»á¶ÔÊý¾ÝÁеÄÉùÃ÷Ìá³ö½¨Ò飬ÎÒÃǿɸù¾Ý½¨Òé½øÐÐÐ޸ġ£
select * from table_name PROCEDURE ANALYSE(); select * from table_name PROCEDURE ANALYSE(16,256); #(16,256)º¬ÒåÊÇ£ºÈç¹ûijÁеIJ»Í¬È¡ÖµÔÚ16¸öÒÔÉÏ»ò³¤¶È³¬¹ý256×Ö½Ú£¬¾Í²»Ìá³öʹÓÃENUMµÄ½¨Òé¡£
ÓÃOPTIMIZE TABLEÓï¾ä¶ÔÈÝÒ׳öÏÖË鯬µÄÊý¾Ý±í½øÐÐÕûÀí¡£°üº¬¿É±ä³¤Êý¾ÝÁеÄÊý¾Ý±í¶¼»á²úÉúË鯬£¬´Ó¶øÕ¼ÓöàÓàµÄ´ÅÅ̿ռäºÍÓ°Ïì²éѯËÙ¶È¡£ËùÒÔÒª¶¨ÆÚÔËÐÐOPTIMIZE TABLEÓï¾äÒÔ·ÀÖ¹Êý¾Ý±í²éѯÐÔÄܽµµÍ¡£µ«¸ÃÓï¾äÖ»¶ÔMyISAMÊý¾Ý±íÓÐЧ¡£¶Ô¸÷ÖÖÊý¾Ý±íͨÓõÄË鯬ÕûÀí·½·¨ÊÇÕâÑùµÄ£ºÏÈÓù¤¾ß³ÌÐòmysqldumpµ¼³öÊý¾Ý±í£¬ÔÙɾ³ýÊý¾Ý±íºóÖØ½¨£¬È磺
$ mysqldump --opt db_name table_name > dump.sql $ mysql db_name < dump.sql
°Ñ·Ç½á¹¹»¯ºÍ±ä»¯´óµÄÊý¾Ý·ÅÔÚBLOBÊý¾ÝÁÐÀ¶¨ÆÚÓÃOPTIMIZE TABLEÃüÁîÓÅ»¯¡£
ÈËΪµØ¸øÊý¾Ý±íÔö¼ÓÒ»¸öÊý¾ÝÁУ¬ÒԳ䵱Ë÷Òý¡£×ö·¨ÊÇÕâÑùµÄ£¬Ïȸù¾ÝÊý¾Ý±íÀïµÄÆäËüÊý¾ÝÁмÆËã³öÒ»¸öÉ¢ÁÐÖµ£¬²¢±£´æÔÚÒ»¸öÊý¾ÝÁÐÀȻºóͨ¹ýËÑË÷É¢ÁÐÖµÀ´¼ìË÷Êý¾ÝÐС£×¢Ò⣬¸Ã¼¼ÇÉÖ»ÊÊÓÃÓÚ¾«È·Æ¥ÅäÐͲéѯ¡£É¢ÁÐÖµÔÚ´óÓÚ£¬Ð¡ÓڵȵIJÙ×÷Öв»Æð×÷Óá£É¢ÁÐÖµ¿ÉÒÔMD5()(ÊÊÓÃÓÚ3.23¼°ÒÔÉϰ汾)£¬SHA1()(ÊÊÓÃÓÚ4.0.1¼°ÒÔÉϰ汾)£¬CRC32()(ÊÊÓÃÓÚ4.1¼°ÒÔÉϰ汾)µÈº¯ÊýÉú³É¡£Ê¹ÓÃÉ¢ÁÐÖµÖ§¼ìË÷BLOBºÍTEXTÖµµÄ×ö·¨±ÈÖ±½Ó¼ìË÷BLOBºÍTEXT±¾ÉíµÄ×ö·¨¿ì¡£
¾¡Á¿±ÜÃâ¶Ô´ó³ß´çµÄBLOBÖµ½øÐмìË÷¡£Èç¹ûÒª¼ìË÷¶¼Ó¦¸Ãͨ¹ýËüµÄÉÏÃæÌᵽɢÁÐÖµÏȽøÐÐɸѡ¡£¶ø²»Ó¦¸ÃäĿµØÔÚÍøÂçÖд«ËÍ´óÁ¿BLOBÖµ¡£
Èç¹û°ÑBLOBÖµ°þÀëµ½ÁíÍâÒ»¸öÊý¾Ý±íÀïÈ¥£¬¿ÉʵÏÖÊý¾Ý±íÖÐÆäËüÊý¾ÝÁÐת±ä³É¹Ì¶¨³¤¶ÈÊý¾ÝÁеϰ¡£¾Í¼´¿É¼õÉÙÊý¾Ý±íË鯬£¬ÓÖ¿ÉʹÔÚÔʼ±íÖеÄselect *²éѯ²»»á°Ñ´ó³ß´çµÄBLOBÖµ²»±ØÒªµØÍ¨¹ýÍøÂç´«ËÍ¡£
ÓÐʱÎÒÃÇÐè´óÁ¿µØ°ÑÊý¾Ý¼ÓÔØµ½Êý¾Ý±í£¬²ÉÓÃÅúÁ¿¼ÓÔØµÄ·½Ê½±ÈÒ»¸öÒ»¸ö¼Ç¼¼ÓÔØÐ§Âʸߣ¬ÒòΪMySQL²»ÓÃÿ¼ÓÔØÒ»Ìõ¼Ç¼¾ÍË¢ÐÂÒ»´ÎË÷Òý¡£ÏÂÃæ½éÉܼ¸¸öÓÐÖúÓÚ¼Ó¿ìÊý¾Ý¼ÓÔØµÄ²Ù×÷£º
ʹÓÃLOAD DATAÓï¾äÒª±ÈINSERTÓï¾äµÄ¼ÓÔØËٶȿ졣
LOAD DATA±ÈLOAD DATA LOCALÓï¾äµÄЧÂʸߡ£Ç°Õß¿ÉÓÉ·þÎñÆ÷Ö±½Ó´Ó±¾µØ´ÅÅ̶ÁÈ¡¼ÓÔØÊý¾Ý£¬ºóÕßÐèÓɿͻ§³ÌÐòÈ¥¶ÁÈ¡Îļþ²¢Í¨¹ýÍøÂç´«Ë͵½·þÎñÆ÷¡£
Èç¹ûÒ»¶¨ÒªÓÃINSERTÓï¾ä£¬Ó¦¾¡Á¿ÔÚÒ»ÌõÓï¾äÖвåÈë¶à¸öÊý¾ÝÐС£
Èç¹û±ØÐëʹÓöàÌõINSERTÓï¾ä£¬ÔòÓ¦¾¡Á¿°ÑËüÃǼ¯ÖÐÔÚÒ»Æð·Åµ½Ò»¸öÊÂÎñÖнøÐд¦Àí£¬¶ø²»ÊÇÔÚ×Ô¶¯ÌύģʽÏÂÖ´ÐÐËüÃÇ£ºÈ磺
BEGIN; INSERT INTO table_name values (...); INSERT INTO table_name values (...); INSERT INTO table_name values (...); ... COMMIT;
¶ÔÓÚ²»Ö§³ÖÊÂÎñµÄ±í£¬Ó¦¶Ô±í½øÐÐÐ´Ëø¶¨£¬È»ºóÔÚ±íËø¶¨ÆÚ¼ä¶Ô±í½øÐÐINSERT²Ù×÷£¬È磺
LOCK TABLES table_name WRITE; INSERT INTO table_name ...; INSERT INTO table_name ...; INSERT INTO table_name ...; ... UNLOCK TABLES;
ÀûÓÿͻ§/·þÎñÆ÷ͨÐÅÐÒéÖеÄѹËõ¹¦ÄÜÒÔ¼õÉÙÍøÂç´«ÊäµÄÊý¾ÝÁ¿¡£µ«¸ÃѹËõ»áÏûºÄ´óÁ¿µÄϵͳ×ÊÔ´£¬ËùÒÔСÐÄʹÓá£
¾¡Á¿ÈÃMySQL²åÈëĬÈÏÖµ¡£²»ÒªÔÚINSERTÖÐд̫¶àÖµ£¬ÒÔ¼õÉÙÍøÂç´«ÊäÁ¿ºÍ·þÎñÆ÷¶ËµÄÓï·¨·ÖÎöʱ¼ä¡£
¶ÔÓÚMyISAMºÍISAMÊý¾Ý±í£¬Èç¹ûÐè¼ÓÔØ´óÁ¿Êý¾Ý£¬Ó¦ÏȽ¨Á¢Ò»¸öûË÷ÒýµÄ±í£¬¼ÓÔØÊý¾ÝºóÔÙ´´½¨Ë÷Òý¡£¸Ã·½·¨²»ÊÊÓÃÓÚInnoDB»òBDBÊý¾Ý±í¡£
½ûÓúÍÖØÐ¼¤»îË÷ÒýµÄ·½·¨ÓÐÁ½ÖÖ£º
ʹÓÃALTER TABLEÓï¾äµÄDISABLE KEYSºÍENABLE KEYSÃüÁÈ磺
ALTER TABLE table_name DISABLE KEYS; ALTER TABLE table_name ENABLE KEYS;
ʹÓÃmyisamchk»òisamchk¹¤¾ß¡£È磺
$ myisamchk --keys-used=0 table_name #½ûÖ¹ $ myisamchk --recover --quick --key-used=n table_name #¼¤»î nÊÇÓÃÀ´±íÃ÷ÐèÒª¼¤»îË÷ÒýµÄλÑÚÂ룬µÚ0λ¶ÔÓ¦µÚÒ»¸öË÷Òý£¬Èç¹ûÓÐÈý¸öË÷Òý£¬nÖµ¾ÍÊÇ7(¶þ½øÖÆ111)¡£Ë÷Òý±àºÅ¿ÉÒÔÏÂÃüÁîÈ·¶¨£º $ myisamchk --description table_name
Ôںܶà¿Í»§Ò»Æð²éѯÊý¾Ý±íʱ£¬Èç¹ûʹ¿Í»§ÄÜ×î¿ìµØ²éѯµ½Êý¾Ý¾ÍÊǵ÷¶ÈºÍËø¶¨×öµÄ¹¤×÷ÁË¡£ÔÚMySQLÖУ¬ÎÒÃǰÑselect²Ù×÷½Ð×ö¶Á£¬°Ñ¶ÔÊý¾Ý±íÐÞ¸ÄÔö¼ÓµÄ²Ù×÷(INSERT,UPDATE,REPLACE...)½Ð×öд¡£MySQLµÄ»ù±¾µ÷¶È²ßÂÔ¿ÉÒÔ¹éÄÉΪÒÔÏÂÁ½Ìõ£º
дÈëÇëÇ󽫰´ËüÃǵ½´ï·þÎñÆ÷µÄ˳Ðò½øÐд¦Àí£»
д²Ù×÷µÄÓÅÏȼ¶Òª¸ßÓÚ¶Á²Ù×÷¡£
MyISAMºÍISAMÊý¾Ý±íµÄµ÷¶È²ßÂÔÊÇÔÚÊý¾Ý±íËøµÄ°ïÖúÏÂʵÏֵģ¬ÔÚ¿Í»§³ÌÐòÒª·ÃÎÊÊý¾Ý±í֮ǰ£¬Ðè»ñµÃÏàÓ¦µÄËø£¬ÔÚÍê³É¶ÔÊý¾Ý±íµÄ²Ù×÷ºó£¬ÔÙÊͷŸÃËø¡£ËøµÄ¹ÜÀíͨ³£ÓÉ·þÎñÆ÷¹ÜÀí£¬Ò²¿ÉÈËΪµØÓÃLOCK TABLESºÍUNLOCK TABLESÃüÁîÀ´ÉêÇëºÍÊÍ·ÅËø¡£Ð´²Ù×÷ʱ£¬ÐèÒªÉêÇëÒ»¸ö¶ÀÕ¼ÐÔµÄËø£¬Ò²¾ÍÊÇ˵ÔÚд²Ù×÷Æä¼ä£¬¸Ã±íÖ»ÄÜÓÉд²Ù×÷µÄ¿Í»§Ê¹Ó᣶Á²Ù×÷ʱ£¬¿Í»§±ØÐëÉêÇëÒ»¸öÔÊÐíÆäËû¿Í»§¶ÔÊý¾Ý±í½øÐÐд²Ù×÷µÄËø£¬ÒÔÈ·±£¿Í»§ÔÚ¶ÁµÄ¹ý³ÌÖÐÊý¾Ý±í²»»á·¢Éú¸Ä±ä¡£µ«¶Á²Ù×÷Ëø²»ÊǶÀÕ¼µÄ£¬¿ÉÓжà¸ö¶Á²Ù×÷ͬʱ×÷ÓÃÓÚͬһ¸öÊý¾Ý±í¡£
ͨ¹ýһЩÐÞÊηû¿ÉÓ°Ïìµ÷¶È²ßÂÔ£¬ÈçLOW_PRIORITY(ÓÃÓÚDELETE,INSERT,LOAD DATA,REPLACE,UPDATEÓï¾ä)¡¢HIGH_PRIORITY(ÓÃÓÚSELECTÓï¾ä)¡¢DELAYED(ÓÃÓÚINSERTºÍREPLACEÓï¾ä)¡£ËüÃǵÄ×÷ÓÃÊÇÕâÑùµÄ£º
LOW_PRIORITY»áʹд²Ù×÷µÄÓÅÏȼ¶½µµÍµ½¶Á²Ù×÷ÒÔÏ£¬Ò²¾ÍÊÇ˵¶Á²Ù×÷»á×èÈû¸Ã¼¶±ðµÄд²Ù×÷£¬SELECTµÄHIGH_PRIORITYÓÐÀàËÆµÄ×÷Óá£
INSERTÓï¾äÖеÄDELAYEDÐÞÊλáʹ²åÈë²Ù×÷±»·ÅÈëÒ»¸ö¡°ÑÓ³Ù²åÈ롱¶ÓÁС£²¢·µ»Ø×´Ì¬ÐÅÏ¢¸ø¿Í»§£¬Ê¹¿Í»§³ÌÐò¿ÉÔÚÐÂÊý¾ÝÐл¹Ã»²åÈëµ½Êý¾Ý±í֮ǰ¼ÌÐøÖ´ÐкóÃæµÄ²Ù×÷¡£Èç¹ûÒ»Ö±Óпͻ§¶Á¸ÃÊý¾Ý±í£¬ÐÂÊý¾ÝÐлáÒ»Ö±´ýÔÚ¶ÓÁÐÖУ¬Ö±µ½Êý¾Ý±íûÓжÁ²Ù×÷ʱ£¬·þÎñÆ÷²Å»á°Ñ¶ÓÁÐÖеÄÊý¾ÝÐÐÕæÕý²åÈëµ½Êý¾Ý±íÖС£¸ÃÓï¾ä¿ÉÓÃÔÚÒÔϳ¡ºÏ£¬ÔÚÒ»¸öÓÐÈß³¤²éѯµÄÊý¾Ý±íÖвåÈëÊý¾Ý£¬¶øÄãÓÖ²»Ïë±»×èÈû£¬Äã¾Í¿É·¢³öINSERT DELAYEDÓï¾ä£¬°Ñ²åÈë²Ù×÷·ÅÈë·þÎñÆ÷¡°ÑÓ³Ù²åÈ롱¶ÓÁУ¬ÄãÎÞÐèµÈ´ý¾ÍÂíÉϿɽøÐнÓÏÂÀ´µÄ²Ù×÷¡£
µ±Ò»¸öÊý¾Ý±íÀï´Óδ½øÐйýɾ³ý²Ù×÷»ò¸Õ¸Õ¶ÔËü½øÐйýË鯬ÕûÀíµÄÇé¿öÏ£¬ÓÃINSERTÓï¾ä²åÈëµÄÊý¾ÝÐÐÖ»»á±»Ìí¼Óµ½Êý¾Ý±íµÄĩ⣬¶ø²»»á²åÈëµ½Êý¾Ý±íµÄÖмäλÖá£ÕâÑù£¬¶ÔÓÚMyISAM±í£¬MySQLÔÊÐíÔÚÓÐÆäËü¿Í»§ÕýÔÚ¶Á²Ù×÷µÄʱ¼ä½øÐÐд²Ù×÷¡£ÎÒÃdzÆÖ®Õâ²¢·¢²åÈ롣ҪʹÓøü¼ÇÉ£¬Ðè×¢ÒâÒÔÏÂÁ½¸öÎÊÌ⣺
²»ÒªÔÚINSERTÓï¾äÖÐʹÓÃLOW_PRIORITYÐÞÊηû¡£
¶Á²Ù×÷Ó¦ÓÃLOCK TABLES ... READ LOCAL¶ø²»ÊÇÓÃLOCK TABLES ... READÓï¾äÀ´½øÐÐÊý¾Ý±í¶ÁËø¶¨¡£LOCAL¹Ø¼ü×ÖÖ»¶ÔÊý¾Ý±íÖÐÒÑ´æÔÚÐнøÐÐËø¶¨£¬²»»á×èÈû°ÑÐÂÐÐÌí¼Óµ½Êý¾Ý±íĩβ¡£
BDBÊý¾Ý±íʹÓÃÒ³Ãæ¼¶²Ù×÷Ëø£¬InnoDBÊý¾Ý±íʹÓÃÊý¾ÝÐм¶²Ù×÷Ëø¡£ËùÒÔÕâÁ½ÖÖ±íµÄ²¢·¢ÐÔ±ÈMyISAMºÍISAMÊý¾Ý±íÕâÖÖ±í¼¶ËøµÄ²¢·¢ÐÔ»áºÃºÜ¶à¡£ÆäÖÐInnoDBµÄ²¢·¢ÐÔ×îºÃ¡£×ÛÉÏËùÊö£¬ÎÒÃǿɵóöÒÔϽáÂÛ£º
MyISAMºÍISAMÊý¾Ý±íµÄ¼ìË÷ËÙ¶È×î¿ì£¬µ«Èç¹ûÔÚ¼ìË÷ºÍÐ޸IJÙ×÷½Ï¶àµÄ³¡ºÏ£¬»á³öËø¾ºÕùµÄÎÊÌ⣬Ôì³ÉµÈ´ýʱ¼äÑÓ³¤¡£
BDBºÍInnoDBÊý¾Ý±íÄÜÔÚÓдóÁ¿Ð޸IJÙ×÷µÄ»·¾³ÏÂÌṩºÜºÃµÄ²¢·¢ÐÔ£¬´Ó¶øÌṩ¸üºÃµÄÐÔÄÜ¡£
MyISAMºÍISAMÊý¾Ý±íÓÉÓÚ½øÐÐ±í¼¶Ëø¶¨£¬ËùÒÔ²»»á³öÏÖËÀËøÏÖÏó£¬BDBºÍInnoDBÊý¾Ý±íÔò´æÔÚËÀËøµÄ¿ÉÄÜÐÔ¡£
ÓÅ»¯ÔÔò£º
ÄÚ´æÀïµÄÊý¾ÝÒª±È´ÅÅÌÉϵÄÊý¾Ý·ÃÎÊÆðÀ´¿ì£»
Õ¾Êý¾Ý¾¡¿ÉÄܳ¤Ê±¼äµØÁôÔÚÄÚ´æÀïÄܼõÉÙ´ÅÅ̶Áд»î¶¯µÄ¹¤×÷Á¿£»
ÈÃË÷ÒýÐÅÏ¢ÁôÔÚÄÚ´æÀïÒª±ÈÈÃÊý¾Ý¼Ç¼µÄÄÚÈÝÁôÔÚÄÚ´æÀï¸üÖØÒª¡£
Õë¶ÔÒÔÉϼ¸¸öÔÔò£¬ÎÒÃÇÓ¦¸Ãµ÷Õû·þÎñÆ÷£º
Ôö¼Ó·þÎñÆ÷µÄ»º´æÇøÈÝÁ¿£¬ÒÔ±ãÊý¾ÝÔÚÄÚ´æÔÚÍ£ÁôµÄʱ¼ä³¤Ò»µã£¬ÒÔ¼õÉÙ´ÅÅÌI/0¡£ÏÂÃæ½éÉܼ¸¸öÖØÒªµÄ»º³åÇø£º
Êý¾Ý±í»º³åÇø´æ·Å×ÅÓë´ò¿ªµÄÊý¾Ý±íÏàµÄÐÅÏ¢£¬ËüµÄ´óС¿ÉÓÉ·þÎñÆ÷²ÎÊý¡°table_cache¡±ÉèÖá£Opened_tables²ÎÊý¼Ç¼·þÎñÆ÷½øÐйý¶àÉÙ´ÎÊý¾Ý±í´ò¿ª²Ù×÷£¬Èç¹û¸ÃÖµ±ä»¯ºÜ´ó£¬¾Í¿ÉÄÜÊÇÊý¾Ý±í»º³åÇøÒÑÂú£¬Ðè°ÑһЩ²»³£ÓõıíÒÆ³ö»º³åÇø£¬ÒÔÌÚ³ö¿Õ´ò¿ªÐµÄÊý¾Ý±í¡£¿ÉÓÃÒÔÏÂÃüÁî²é¿´Opened_tablesµÄÖµ£º
SHOW STATUS LIKE 'Opened_tables';
ÔÚMyISAMºÍISAMÊý¾Ý±íÖУ¬Ë÷Òý±»»º´æÔÚ¡°key buffer¡±ÀËüµÄ´óСÓÉ·þÎñÆ÷²ÎÊý¡°key_buffer_size¡±À´¿ØÖÆ¡£ÏµÍ³Ä¬ÈϵĴóСÊÇ8M£¬Èç¹ûÄÚ´æ³ä×ãµÄ»°¿ÉÊʵ±À©´ó¸ÃÖµ£¬ÒÔʹ¸ü¶àË÷Òý¿é»º´æÔÚ¸ÃÇøÀÒÔ¼Ó¿ìË÷ÒýµÄËÙ¶È¡£
InnoDBºÍBDBÊý¾Ý±íÒ²¸÷ÓÐÒ»¸ö»º³åÇø£¬·Ö±ð½Ðinnodb_buffer_pool_sizeºÍbdb_cache_size¡£InnoDB»¹ÓÐÒ»¸öÈÕÖ¾»º³åÇø½Ðinnodb_log_buffer_size¡£
×Ô4.0.1¿ªÊ¼£¬MySQL¶àÁËÒ»¸ö»º³åÇø£¬½Ð²éѯ»º³åÇø£¬Ö÷ÒªÓÃÀ´´æ·ÅÖØ¸´Ö´ÐеIJéѯÎı¾ºÍ½á¹û£¬µ±ÔÙ´ÎÓöµ½ÏàͬµÄ²éѯ£¬·þÎñÆ÷»áÖ±½Ó´Ó»º³åÇøÖзµ»Ø½á¹û¡£¸Ã¹¦ÄÜÊÇÄÚ½¨µÄ¹¦ÄÜ£¬Èç²»ÏëÖ§³Ö¸Ã¹¦ÄÜ£¬¿ÉÔÚ±àÒë·þÎñÆ÷ʱÓÃconfigure½Å±¾µÄ--without-query-cacheÑ¡ÏîÈ¥µô¸Ã¹¦ÄÜ¡£
²éѯ»º³åÇøÓÉÈý¸ö·þÎñÆ÷²ÎÊý¿ØÖÆ£¬·Ö±ðÊÇ£º
1¡¢query_cache_size ¿ØÖÆ»º³åÇøµÄ´óС£¬Èç¹û¸ÃֵΪ0,Ôò½ûÓòéѯ»º³å¹¦ÄÜ¡£ÉèÖ÷½·¨ÊÇÔÚÑ¡ÏîÎļþÖÐÉèÖÃ: [mysqld] set-variable = query_cache_size = 16M ÕâÑù¾ÍÉèÖÃÁËÒ»¸ö16MµÄ²éѯ»º³åÇø 2¡¢query_cache_limit »º³å½á¹û¼¯µÄ×î´óÈÝÁ¿(ÒÔ×Ö½ÚΪµ¥Î»)£¬Èç¹û²éѯµÄ½á¹û¼¯´óÓÚ¸ÃÖµ£¬Ôò²»»º³å¸ÃÖµ¡£ 3¡¢query_cache_type »º³åÇøµÄ²Ù×÷ģʽ¡£ 0±íʾ²»½øÐлº³å£» 1±íʾ³ýSELECT SQL_NO_CACHE¿ªÍ·µÄ²éѯÍ⣬ÆäÓàµÄ¶¼»º³å£» 2±íʾֻ¶ÔÒÔSELECT SQL_ON_CACHE¿ªÍ·µÄ²éѯ½øÐлº³å¡£
ĬÈÏÇé¿öÏ£¬°´·þÎñÆ÷µÄÉèÖýøÐлº³å£¬µ«¿Í»§¶ËÒ²¿Éͨ¹ýÃüÁî¸Ä±ä·þÎñÆ÷ÉèÖ᣿ͻ§¶Ë¿ÉÖ±½ÓÓÃSELECT SQL_NO_CACHEºÍSELECT SQL_CACHEÃüÁîÀ´ÒªÇó·þÎñÆ÷»º³å»ò²»»º³å²éѯ½á¹û¡£Èç¹û²»ÏëÿÌõ²éѯ¶¼Ð´²ÎÊý£¬ÎÒÃÇÒ²¿ÉÔÚ¿Í»§¶ËÓÃSET SQL_QUERY_CACHE_TYPE = val;À´¸Ä±ä·þÎñÆ÷µÄ²éѯ»º³åÐÐΪ¡£val¿Éȡֵ0£¬1,2»òOFF£¬ON£¬»òDEMAND¡£
½ûÓÃÓò»×ŵÄÊý¾Ý±í´¦Àí³ÌÐò¡£Èç·þÎñÆ÷ÊÇ´ÓÔ´Âë´´½¨£¬¾Í¿É³¹µ×½ûÓÃISAM£¬InnoDBºÍBDBÊý¾Ý±í¡£
ȨÏÞ±íÀïµÄȨÏÞ¹ØÏµÓ¦¾¡¿ÉÄܼòµ¥£¬µ±È»ÁË£¬ÊÇÒªÔÚ±£Ö¤°²È«µÄǰÌáÏ¡£
ÔÚ´ÓÔ´Âë´´½¨·þÎñÆ÷ʱ£¬¾¡Á¿Ê¹Óþ²Ì¬¿â¶ø²»Êǹ²Ïí¿âÀ´Íê³ÉÆäÅäÖù¤×÷¡£¾²Ì¬¿âµÄÖ´ÐÐËٶȸü¿ì£¬µ«Èç¹ûÒª¼ÓÔØÓû§¶¨Ò庯Êý(UDF)µÄ»°£¬¾Í²»ÄÜʹÓþ²Ì¬¿â£¬ÒòΪUDF»úÖÆ±ØÐëÒÀÀµ¶¯Ì¬¿â²ÅÄÜʵÏÖ¡£
ΪÁËÌá¸ßÊý¾ÝÔËÐÐËÙ¶È£¬Éý¼¶Ó²¼þÊÇ×îÖ±½ÓµÄ½â¾ö·½°¸¡£Õë¶ÔÊý¾Ý¿âÓ¦ÓõÄÌØµã£¬ÔÚÉý¼¶Ó²¼þʱӦ¿¼ÂÇÒÔÏÂÄÚÈÝ£º
¶ÔÓÚÊý¾Ý¿â·þÎñÆ÷£¬ÄÚ´æÊÇ×îÖØÒªµÄÒ»¸öÓ°ÏìÐÔÄÜÒòËØ¡£Í¨¹ý¼Ó´óÄڴ棬Êý¾Ý¿â·þÎñÆ÷¿É°Ñ¸ü¶àµÄÊý¾Ý±£´æÔÚ»º³åÇø£¬¿É´ó´ó¼õÉÙ´ÅÅÌI/O£¬´Ó¶øÌáÉýÊý¾Ý¿âµÄÕûÌåÐÔÄÜ¡£
ÅäÖøßËÙ´ÅÅÌϵͳ£¬ÒÔ¼õÉÙ¶ÁÅ̵ĵȴýʱ¼ä£¬Ìá¸ßÏìÓ¦ËÙ¶È¡£
ºÏÀí·Ö²¼´ÅÅÌI/O£¬Ó¦°Ñ´ÅÅÌI/O·ÖÉ¢ÔÚ¶à¸öÉ豸ÉÏ£¬ÒÔ¼õÉÙ×ÊÔ´¾ºÕù£¬Ìá¸ß²¢ÐвÙ×÷ÄÜÁ¦¡£
ÅäÖöദÀíÆ÷£¬MySQLÊǶàÏ̵߳ÄÊý¾Ý¿â£¬¶à´¦ÀíÆ÷¿ÉͬʱִÐжà¸öÏ̡߳£
Table of Contents
Êý¾Ý¿âÊÇÒ»¸ö¸´ÔÓ¶øÓֹؼüµÄϵͳ£¬ÎªÈ·±£ÏµÍ³°²È«¡¢¸ßЧÔËÐУ¬ÐèÊìϤÊý¾Ý¿âÄÚ²¿µÄÔË×÷»úÖÆ£¬ÕÆÎÕ¸÷ÖÖά»¤¹¤¾ß£¬²¢×öºÃÈÕ³£µÄ¹ÜÀí¹¤×÷¡£ÏÂÃæÁоټ¸ÏîÖ÷Òª¹¤×÷Ö°Ôð£º
·þÎñÆ÷µÄ¹Ø±ÕºÍÆô¶¯£»
¹ÜÀíÓû§Õʺţ»
¹ÜÀíÈÕÖ¾Îļþ£»
Êý¾Ý¿â±¸·Ý»Ö¸´£»
Êý¾Ý¿âÓÅ»¯£»
È·±£Êý¾Ý¿âÊý¾Ý°²È«£»
Êý¾Ý¿âÈí¼þÉý¼¶¡£
Êý¾ÝĿ¼ÊÇÓÃÀ´´æ·ÅÊý¾Ý±íºÍÏà¹ØÐÅÏ¢µÄµØ·½£¬ÊÇÊý¾Ý¿âµÄºËÐÄ¡£ÔÚMySQLÖеÄÊý¾ÝĿ¼¸ù¾Ý²»Í¬Æ½Ì¨µÄÓÐһЩ²îÒ죺
ÔÚUNIX/LinuxϵͳÉÏ£¬Èç¹ûÓÃÔ´Âë±àÒë°²×°£¬Êý¾ÝĿ¼µÄλÖÃĬÈÏÊÇÔÚ/usr/local/mysql/varÖУ»
ÔÚUNIX/LinuxϵͳÉÏ£¬Èç¹ûÓöþ½øÖÆ·¢Ðа氲װ£¬Êý¾ÝĿ¼µÄλÖÃĬÈÏÊÇÔÚ/usr/local/mysql/dataÖУ»
ÔÚWINDOWSϵͳÉÏ£¬Êý¾ÝĿ¼µÄλÖÃĬÈÏÊÇÔÚc:/mysql/dataÖУ»
![]() | |
| ÔÚ·þÎñÆ÷Æô¶¯Ê±£¬¿ÉÓÃ--datadir=dir_nameÀ´Ö¸¶¨Êý¾ÝĿ¼£¬Ò²¿É°ÑËüдµ½ÅäÖÃÎļþÖС£ | |
ÎÒÃÇ»¹¿ÉÓÃÃüÁîÏò·þÎñÆ÷²éѯÊý¾ÝĿ¼µÄλÖã¬Êý¾ÝĿ¼µÄ±äÁ¿ÃûÊÇdatadir£¬È磺
% mysqladmin variables
Èç¹ûÔÚһ̨»úÆ÷ÉÏͬʱÔËÐжà¸ö·þÎñÆ÷£¬Ôò¿É¸ù¾Ý¶Ë¿ÚµÄ²»Ê±À´²éѯÿ¸ö·þÎñÆ÷µÄÊý¾ÝĿ¼£¬È磺
% mysqladmin --host=127.0.0.1 --port=port_number variables
Èç¹û--hostÊÇlocalhost£¬ÏµÍ³Ôò»áÓÃÒ»¸öUNIXÌ×½Ó×ÖÈ¥Á¬½ÓÊý¾Ý¿â·þÎñÆ÷£¬ÕâʱҪʹÓÃ--socketÑ¡ÏËùÒÔ²éѯÓï¾ä±ä³É£º
% mysqladmin --host=localhost --socket=/path/to/socket variables
mysql> SHOW VARIABLES LIKE 'datadir';
ÔÚwindows NTƽ̨ÉÏ¿ÉÒÔʹÓá°.¡±×÷ΪһÌõÃüÃû¹ÜµÀÁ¬½ÓµÄÖ÷»úÃû£¬ÓÃ--socketÑ¡Ïî¸ø³öÃüÃû¹ÜµÀµÄÃû×Ö£¬È磺
c:\ mysqladmin --host=. --socket=pipe_name variables
ÅäÖÃÎļþµÄÖÐ[mysqld]¶ÎÖеÄdatadir=/path/to/datadirÉèÖÃÒ²¿É²éѯµ½Êý¾ÝĿ¼¡£
ÔÚmysqld³ÌÐòµÄ°ïÖúÐÅÏ¢ÀïÒ²ÓгÌÐò±àÒëʱĬÈϵÄÊý¾ÝĿ¼ÐÅÏ¢£¬¿ÉÓÃÒÔÏÂÃüÁîÏÔʾ£º
% mysqld --help
Êý¾ÝĿ¼ÊÇ´æ·ÅÊý¾ÝÎļþµÄµØ·½£¬Ã¿¸öÊý¾Ý¿â¶ÔӦĿ¼µÄ²»Í¬Îļþ¡£InnoDBÊý¾Ý±íÓÉÓÚÓñí¿Õ¼äÀ´¹ÜÀíÊý¾Ý¿â£¬ËùÒÔ¾ÍûÕâÖÖ¶ÔÓ¦¹ØÏµ¡£µ«Ò²ÊDZ£´æÔÚÊý¾ÝĿ¼Öеģ¬ÔÚÊý¾ÝĿ¼³ý±£´æÊý¾Ý¿âÎļþÍ⣬»¹¿ÉÄܻᱣ´æÒÔϼ¸ÀàÎļþ£º
·þÎñÆ÷µÄÅäÖÃÎļþ£¬my.cnf£»
·þÎñÆ÷µÄ½ø³ÌID(PID)Îļþ£»
·þÎñÆ÷µÄÈÕÖ¾ÎļþºÍ״̬Îļþ£¬ÕâЩÎļþ¶Ô¹ÜÀíÊý¾Ý¿âÓÐÖØÒªµÄ¼ÛÖµ£»
DESÃÜÔ¿Îļþ»ò·þÎñÆ÷µÄSSLÖ¤ÊéÓëÃÜÔ¿Îļþ¡£
Êý¾ÝĿ¼ÖеÄËùÓÐÊý¾Ý¿âÈ«²¿ÓÉ·þÎñÆ÷(mysqld)À´¹ÜÀí£¬¿Í»§¶Ë²»Ö±½Ó²Ù×÷Êý¾Ý¡£·þÎñÆ÷Êǿͻ§Ê¹ÓÃÊý¾ÝµÄΨһͨµÀ¡£
ÔÚMySQLÖУ¬Ã¿¸öÊý¾Ý¿âÆäʵ¾ÍÊÇÔÚÊý¾ÝĿ¼ÏÂÒ»¸ö×ÓĿ¼£¬show databasesÃüÁîÏ൱ÓÚÁгöÊý¾ÝĿ¼ÖеÄĿ¼Çåµ¥¡£create database db_nameÃüÁî»áÔÚÊý¾ÝĿ¼ÏÂн¨Ò»¸ödb_nameµÄĿ¼£¬ÒÔ´æ·ÅÊý¾Ý¿âµÄÊý¾ÝÎļþ¡£ËùÒÔÎÒÃÇÒ²¿ÉÏÂÃæµÄshellÃüÁʽÀ´½¨Á¢Ò»¸ö¿ÕÊý¾Ý¿â£º
% cd datadir % mkdir db_name % chmod u=rwx,go-rwx db_name
ͬÀí£¬É¾³ýÊý¾Ý¿âdrop database db_nameÒ²¾ÍÊÇɾ³ýÊý¾ÝĿ¼ÖÐÒ»¸öÃûΪdb_nameµÄĿ¼¼°Ä¿Â¼ÖеÄÊý¾Ý±íÎļþ¡£ÎÒÃÇÒ²¿ÉÓÃshellÕâ½øÐвÙ×÷£º
% cd datadir % rm -rf db_name
![]() | |
| ±È½Ïshell·½Ê½Óëdrop database·½Ê½£¬drop database db_nameÃüÁî²»ÄÜɾ³ýdb_nameĿ¼Öд´½¨µÄÆäËü·ÇÊý¾Ý±íÎļþ£»ÓÉÓÚInnoDBÊDZí¿Õ¼äÀ´¹ÜÀíÊý¾Ý±í£¬ËùÒÔ²»ÄÜÓÃrm»òdelÃüÁîɾ³ýInnoDBµÄÊý¾Ý±í¡£ | |
MySQLÊý¾Ý±íÀàÐÍÓУºISAM¡¢MyISAM¡¢MERGE¡¢BDB¡¢InnoDBºÍHEAP¡£Ã¿ÖÖÊý¾Ý±íÔÚÎļþϵͳÖж¼Óв»Í¬µÄ±íʾ·½Ê½£¬ÓÐÒ»¸ö¹²Í¬µã¾ÍÊÇÿÖÖÊý¾Ý±íÖÁÉÙÓÐÒ»¸ö´æ·ÅÊý¾Ý±í½á¹¹¶¨ÒåµÄ.frmÎļþ¡£ÏÂÃæ½éÉÜÿÖÖÊý¾Ý±íÎļþ£º
ISAMÊý¾Ý±íÊÇ×îÔʼµÄÊý¾Ý±í£¬ÓÐÈý¸öÎļþ£¬·Ö±ðÊÇ£º
.frm£¬´æ·ÅÊý¾Ý±íµÄ½á¹¹¶¨Ò壻
.ISD£¬Êý¾ÝÎļþ£¬´æ·ÅÊý¾Ý±íÖеĸ÷¸öÊý¾ÝÐеÄÄÚ¿Õ£»
.ISM£¬Ë÷ÒýÎļþ£¬´æ·ÅÊý¾Ý±íµÄËùÓÐË÷ÒýÐÅÏ¢¡£
MyISAMÊý¾Ý±íÊÇISAMÊý¾Ý±íµÄ¼Ì³ÐÕߣ¬Ò²ÓÐÈý¸öÎļþ£¬·Ö±ðÊÇ£º
.frm£¬½á¹¹¶¨ÒåÎļþ£»
.MYD£¬Êý¾ÝÎļþ£»
.MYI£¬Ë÷ÒýÎļþ¡£
MERGEÊý¾Ý±íÊÇÒ»¸öÂß¼½á¹¹£¬´ú±íÒ»×é½á¹¹ÍêÈ«ÏàͬµÄMyISAMÊý¾Ý±í¹¹³ÉµÄ¼¯ºÏ¡£ËüÔÚÎļþϵͳÖÐÓжþ¸öÎļþ£¬·Ö±ðÊÇ£º
.frm£¬½á¹¹¶¨ÒåÎļþ£»
.MRG£¬¹¹³ÉMERGE±íµÄMyISAMÊý¾Ý±íÇåµ¥£¬Ã¿¸öMyISAMÊý¾Ý±íÃûÕ¼Ò»ÐС£Ò²¾ÍÊÇ˵¿Éͨ¹ý¸Ä±ä¸Ã±íµÄÄÚÈÝÀ´¸Ä±äMERGEÊý¾Ý±íµÄ½á¹¹¡£ÐÞ¸ÄǰÇëÏÈˢлº´æ(flush tables)£¬µ«²»½¨ÒéÕâÑùÐÞ¸ÄMERGEÊý¾Ý±í¡£
BDBÊý¾Ý±íÓÃÁ½¸öÎļþÀ´±íʾ£¬·Ö±ðÊÇ£º
.frm£¬½á¹¹¶¨ÒåÎļþ£»
.db£¬Êý¾Ý±íÊý¾ÝºÍË÷ÒýÎļþ
InnoDBÓÉÓÚ²ÉÓñí¿Õ¼äµÄ¸ÅÄîÀ´¹ÜÀíÊý¾Ý±í£¬ËùÒÔËüÖ»ÓÐÒ»¸öÓëÊý¾Ý±í¶ÔÓ¦.frmÎļþ£¬Í¬Ò»Ä¿Â¼ÏÂµÄÆäËüÎļþ±íʾΪ±í¿Õ¼ä£¬´æ´¢Êý¾Ý±íµÄÊý¾ÝºÍË÷Òý¡£
HEAPÊý¾Ý±íÊÇÒ»¸ö´æÔÚÓÚÄÚ´æÖÐµÄ±í£¬ËùÒÔËüµÄÊý¾ÝºÍË÷Òý¶¼´æÔÚÓÚÄÚ´æÖУ¬ÎļþϵͳÖÐÖ»ÓÐÒ»¸ö.frmÎļþ£¬ÒÔ¶¨Òå½á¹¹¡£
Á˽âMySQLÊý¾Ý±íÔÚÎļþϵͳÖбíÏÖÐÎʽºó£¬ÎÒÃÇ¿ÉÖªµÀ£¬´´½¨¡¢Ð޸Ļòɾ³ýÊý¾Ý±í£¬Æäʵ¾ÍÊǶÔÕâЩÎļþ½øÐвÙ×÷¡£ÀýÈçһЩÊý¾Ý±í(³ýInnoDBºÍHEAPÊý¾Ý±íÍâ)£¬ÎÒÃÇ¿ÉÖ±½ÓÔÚÎļþϵͳÖÐɾ³ýÏàÓ¦µÄÎļþÀ´É¾³ýÊý¾Ý±í¡£
% cd datadir % rm -f mydb/mydb.*
ÒÔÉÏÃüÁî¿Éɾ³ýmydbÊý¾Ý¿âÖеÄmydbÊý¾Ý±í¡£
ÔÚMySQLÖÐÓ°ÏìÊý¾Ý±í³ß´çµÄÒòËØÓкܶ࣬ÏÂÃæ·Ö±ð½øÐнéÉÜ£º
MySQLÊý¾Ý±íÀàÐ͵IJ»Í¬¶ÔÊý¾Ý±í³ß´çµÄÏÞÖÆ£º
ISAMÊý¾Ý±íÖе¥¸ö.ISDºÍ.ISMÎļþµÄ×î´ó³ß´çΪ4G£»
MyISAMÊý¾Ý±íÖе¥¸ö.MYDºÍ.MYIÎļþµÄĬÈÏ×î´ó³ß´çÒ²ÊÇ4G£¬µ«¿ÉÔÚ´´½¨Êý¾Ý±íʱÓÃAVG_ROW_LENGTHºÍMAX_ROWSÑ¡Ïî°ÑÕâ¸ö×îÖµÀ©´óµ½800ÍòTB¡£
MERGEÊý¾Ý±íµÄ×î´ó³ß´çÊÇËüµÄ¸÷×é³ÉMyISAMÊý¾Ý±íµÄ×î´ó³ß´çÖ®ºÍ¡£
BDBÊý¾Ý±íµÄ³ß´çÊÜÏÞÓÚBDB´¦Àí³ÌÐòËùÔÊÐíµÄ.dbÎļþµÄ×î´ó³ß´ç¡£Õâ¸ö×î´ó³ß´çËæ×ÅÊý¾Ý±íÒ³Ãæ³ß´ç(±àÒëʱȷ¶¨)¶ø±ä»¯£¬µ«¼´Ê¹ÊÇ×îСµÄÒ³Ãæ³ß´ç(512×Ö½Ú)£¬.dbÎļþµÄ×î´ó³ß´çÒ²¿É´ï2TB¡£
InnoDBÊý¾Ý±íµÄ±í¿Õ¼äµÄ×î´ó³ß´çÊÇ40ÒÚ¸öÒ³Ãæ£¬Ä¬ÈϵÄÒ³Ãæ³ß´çÊÇ16K£¬¸ÃÖµ¿ÉÔÚ8Kµ½64KÖ®¼ä£¬ÔÚ±àÒëʱȷ¶¨¡£InnoDBÊý¾Ý±íµÄ×î´ó³ß´çÒ²¾ÍÊDZí¿Õ¼äµÄ×î´ó³ß´ç¡£
²Ù×÷ϵͳ¶ÔÎļþµÄ³ß´çÏÞÖÆ£¬Ò»°ãÎļþϵͳ¶¼¶Ôµ¥¸öÎļþ²»µÃ³¬¹ý2GµÄÏÞÖÆ¡£¸ÃÔ¼Êø»á¶ÔÊý¾Ý¿âÎļþÔì³ÉÏÞÖÆ¡£InnoDBÊý¾Ý±í¿Éͨ¹ýÀûÓÃδ¸ñʽ»¯Ó²ÅÌ×÷Ϊ±í¿Õ¼äÀ´Èƹý¸ÃÏÞÖÆ¡£
¶ÔÓÚÊý¾ÝºÍË÷Òý·Ö¿ªÁ½¸öÎļþ´æ·ÅµÄÊý¾Ý±í£¬ÆäÖÐÈκÎÒ»¸öÎļþ´ïµ½²Ù×÷ϵͳÎļþµÄ×î´óÏÞÖÆ£¬Êý¾Ý¿â±íÒ²¾Í´ïµ½×î´ó³ß´ç¡£
°üº¬AUTO_INCREMENTÊý¾ÝÁеıíÊܵ½¸ÃÊý¾ÝÁÐÀàÐÍ×î´óÉÏÏÞÖµµÄÏÞÖÆ¡£
ÓÉÓÚInnoDBÊý¾Ý±íÓñí¿Õ¼äÀ´¹ÜÀí£¬Ò»¸ö±í¿Õ¼ä¿Éͬʱ¿ÕÄɶà¸öÊý¾Ý±í£¬ËùÒÔÊý¾Ý±íµÄ×î´ó³ß´çÊÜϵͳÎļþºÍͬһ±í¿Õ¼äÖÐÊý¾Ý±í¿Õ¼äµÄÔ¼Êø¡£
ÔÚMySQLÊý¾ÝĿ¼Öл¹°üº¬×ÅÐí¶à״̬ÎļþºÍÈÕÖ¾Îļþ£¬ÕâЩÎļþµÄÎļþÃû¶¼ÊÇÒÔÖ÷»úÃû¼ÓÉÏÏà¹Øºó׺À´ÃüÃûµÄ¡£ÏÂÃæÊÇÕâЩÎļþµÄÒ»¸ö˵Ã÷ÁÐ±í£º
Table 3.1. ״̬ÎļþºÍÈÕÖ¾Îļþ
| ÎļþÀàÐÍ | ĬÈÏÃû | ÎļþÄÚÈÝ |
|---|---|---|
| ½ø³ÌIDÎļþ | hostname.pid | MySQL·þÎñÆ÷½ø³ÌµÄID |
| ³£¹æ²éѯÈÕÖ¾ | hostname.log | Á¬½Ó/¶Ï¿ªÁ¬½ÓʼþºÍ²éѯÐÅÏ¢ |
| Âý²éѯÈÕÖ¾ | hostname-slow.log | ¼Ç¼²éѯʱ¼äºÜ³¤µÄÃüÁîÐÅÏ¢ |
| ±ä¸üÈÕÖ¾ | hostname.nnn | ´´½¨»òÐÞ¸ÄÊý¾Ý±í½á¹¹ºÍÄÚÈݵIJéѯÃüÁîÐÅÏ¢ |
| ¶þ½øÖƱä¸üÈÕÖ¾ | hostname-bin.nnn | ´´½¨»òÐÞ¸ÄÊý¾Ý±í½á¹¹ºÍÄÚÈݵIJéѯÃüÁîµÄ¶þ½øÖƱíʾ·¨ |
| ¶þ½øÖƱä¸üÈÕÖ¾µÄË÷ÒýÎļþ | hostname-bin.index | ʹÓÃÖеġ°¶þ½øÖƱä¸üÈÕÖ¾¡±Áбí |
| ´íÎóÈÕÖ¾ | hostname.err | ¼Ç¼¡°Æô¶¯/¹Ø±Õ¡±Ê¼þºÍÒì³£Çé¿ö |
±ä¸üÈÕÖ¾ºÍ¶þ½øÖƱä¸üÈÕÖ¾Ö÷ÒªÓÃÓÚMySQLÊý¾Ý¿â·þÎñÆ÷µÄ±ÀÀ£»Ö¸´ÖУ¬ÓÉÓÚ±ä¸üÈÕÖ¾¼Ç¼ÁËÊý¾Ý¿âµÄËùÓбä¸ü²Ù×÷£¬ËùÒÔ¿ÉÒÔ½øÐÐʼþÖØ·Å¡£¾ßÌå²Ù×÷Çë²Î¿¼Ïà¹ØÊý¾Ý¿â±¸·Ý»Ö¸´Õ½ڡ£¶ÔÓÚ±ä¸üÈÕÖ¾£¬ÎÒÃÇ¿ÉÓÃ--log-long-formatÑ¡ÏîÀ´ÈÃËüÒÔÀ©Õ¹·½Ê½¼Ç¼ÓйØÊ¼þ¡£À©Õ¹·½Ê½¿É¼Ç¼˷¢³ö²éѯºÍʲôʱºò·¢³ö²éѯµÄÐÅÏ¢¡£¿ÉʹÎÒÃǸüºÃµØÕÆÎÕ¿Í»§¶ËµÄ²Ù×÷Çé¿ö¡£ÈÕÖ¾¼Ç¼×ŲéѯÃüÁîµÄËùÓвÙ×÷£¬ÀïÃæ¿ÉÄÜ»áÓÐһЩÃô¸ÐÐÅÏ¢¡£ËùÒÔÎÒÃÇҪȷ±£ÈÕÖ¾ÎļþµÄ°²È«¡£
MySQLÊý¾Ý¿âµÄÊý¾ÝĿ¼λÖ㬰üÀ¨Ä¿Â¼ÀïµÄ¸÷ÖÖÎļþµÄλÖÃ)¿É¸ù¾Ýʵ¼ÊÇé¿ö½øÐе÷Õû¡£µ÷ÕûµÄ·½·¨ÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇʹÓ÷ûºÅÁ´½Ó£»Ò»ÖÖÓ÷þÎñÆ÷Æô¶¯Ñ¡Ïî¡£ÏÂÃæÒ»¸öÁбí˵Ã÷ÁËÊý¾ÝĿ¼¼°Ä¿Â¼ÖÐÎļþ¸÷×ÔÊÊÒ˲ÉÓõķ½·¨£º
Table 3.2. MySQLÊý¾ÝĿ¼¼°Ä¿Â¼ÖÐÎļþλÖõĵ÷Õû·½·¨
| µ÷Õû¶ÔÏó | ÊÊÓ÷½·¨ |
|---|---|
| Õû¸öÊý¾ÝĿ¼ | Æô¶¯Ñ¡ÏîºÍ·ûºÅÁ´½Ó |
| Êý¾Ý¿âĿ¼ | ·ûºÅÁ´½Ó |
| Êý¾Ý±í | ·ûºÅÁ´½Ó |
| InnoDBÊý¾Ý±í¿Õ¼ä | Æô¶¯Ñ¡Ïî |
| PIDÎļþ | Æô¶¯Ñ¡Ïî |
| ÈÕÖ¾Îļþ | Æô¶¯Ñ¡Ïî |
ÏÂÃæÊǸ÷ÖÖµ÷Õû·½·¨µÄ¾ßÌå²Ù×÷¹ý³Ì£º
ÔÚµ÷ÕûMySQLµÄÊý¾ÝĿ¼ʱ£¬ÒªÏÈÍ£Ö¹·þÎñÆ÷£¬ÔÙ°ÑÊý¾ÝÄ¿Â¼ÒÆ¶¯µ½ÐµÄλÖ᣽Ó×Å£¬ÎÒÃÇ¿ÉÑ¡ÔñÔÚÔÀ´Ä¿Â¼Ï´´½¨Ò»¸ö·ûºÅÁ´½ÓÖ¸ÏòеÄλÖ㬻òÕßÓÃÆô¶¯Ñ¡Ôñ--datadirÖ¸ÏòеÄÊý¾ÝĿ¼¡£ÍƼöÓô´½¨·ûºÅÁ´½ÓµÄ·½·¨£¬ÒòΪÈç¹ûÄǸöÊý¾ÝĿ¼ÖÐÓÐmy.cnfÎļþ£¬ÏàÓ¦µÄ·þÎñÆ÷»¹ÄÜÕÒµ½Ëü¡£
Êý¾Ý¿âÖ»ÄÜ´æÔÚÓÚMySQLÊý¾ÝĿ¼ÖУ¬ËùÒÔÖ»ÄÜʹÓ÷ûºÅÁ´½ÓµÄ·½·¨µ÷ÕûËüµÄλÖá£ÔÚLinuxϵͳµÄ²Ù×÷²½ÖèÈ磺
¹Ø±Õ·þÎñÆ÷£»
°ÑÊý¾Ý¿âĿ¼¿½±´µ½ÐµÄλÖã»
ɾ³ýÔÀ´µÄÊý¾Ý¿âĿ¼£»
ÔÚÔÀ´µÄMySQLÊý¾ÝĿ¼Öд´½¨Ò»¸öͬÃû·ûºÅÁ´½ÓÖ¸ÏòеÄλÖã»
ÖØÐÂÆô¶¯·þÎñÆ÷¡£
ÔÚwindowsϵIJÙ×÷·½·¨²»Ð©²»Í¬£¬²Ù×÷·½·¨ÈçÏ£º
¹Ø±Õ·þÎñÆ÷£»
°ÑÊý¾Ý¿âÄ¿Â¼ÒÆ¶¯ÐµÄλÖã»
ɾ³ýÔÀ´µÄÊý¾Ý¿âĿ¼£»
ÔÚÔÀ´Êý¾ÝĿ¼Ï½¨Ò»¸öͬÃûµÄ.symÎļþ£¬ÔÚÎļþÖÐÊäÈëÊý¾Ý¿âÐÂĿ¼µÄȫ·¾¶£¬Èçc:\mysql\newdir\mydb¡£Õâ¸öÎļþ¾ÍÏ൱ÓÚLinuxϵķûºÅÁ´½Ó£»
ÖØÆô·þÎñÆ÷¡£
![]() | |
| ΪÁËÖ§³Ö·ûºÅÁ´½Ó¹¦ÄÜ£¬±ØÐëÓÃ--use-symbolic-linksÑ¡ÏîÆô¶¯·þÎñÆ÷£»»òÔÚÑ¡ÏîÎļþµÄ[mysqld]½ÚÖÐÌí¼Óuse-symbolic-linksÑ¡Ïî¡£ | |
![]() | |
| MySQL±ØÐëÊÇ3.23.16ÒÔÉϰ汾ÇÒÊÇmax·þÎñÆ÷(mysqld-max»òmysqld-max-nt)¡£ | |
ÒªÒÆ¶¯Êý¾Ý±í£¬±ØÐëÂú×ãÒÔÏÂËùÓÐÌõ¼þ²ÅÐУº
MySQLµÄ°æ±¾±ØÐëÊÇ4.0»òÒÔÉϵİ汾£»
²Ù×÷ϵͳ±ØÐëÓÐÒ»¸ö¿ÉÓõÄrealpath()µ÷Óã»
ÒÆ¶¯µÄÊý¾Ý±í±ØÐëÊÇMyISAMÀàÐ͵ÄÊý¾Ý±í¡£
ÔÚÂú×ãÒÔÉÏËùÓÐÌõ¼þºó£¬ÎÒÃǾͿɰÑ.MYDÊý¾ÝÎļþºÍMYIË÷ÒýÎļþÒÆµ½ÐÂλÖã¬ÔÙÔÚÔÀ´Î»Öô´½¨Á½¸öͬÃû·ûºÅÁ´½ÓÖ¸¶¨ÐµÄλÖá£×¢Ò⣬.frm¶¨ÒåÎļþÈÔÐèÁôÔÚÔÀ´µÄÊý¾Ý¿âĿ¼ÖС£
ÈçÒÔÉÏÌõ¼þ²»ÄÜÈ«²¿Âú×㣬×îºÃ²»ÒªÒƶ¯Êý¾Ý±íÎļþ¡£·ñÔòÒ»µ©ÄãÔËÐÐALTER TABLE¡¢OPTIMIZE TABLE¡¢REPAIR TABLEÓï¾ä¶ÔÒÆ¶¯¹ýµÄÊý¾Ý±í½øÐÐÓÅ»¯»òÐ޸ģ¬ÕâÑùÊý¾Ý±í¾Í»á»Øµ½ÔÀ´µÄλÖã¬Ê¹Òƶ¯²Ù×÷ʧЧ¡£ÒòΪÕâЩÃüÁîµÄÖ´Ðйý³ÌÊÇÕâÑùµÄ£ºËü»áÏÈÔÚÊý¾ÝĿ¼Öд´½¨Ò»¸öÁÙʱÊý¾Ý±í²¢¶ÔÕâ¸öÁÙʱÊý¾Ý±í½øÐÐÓÅ»¯»òÐ޸ģ¬È»ºóɾ³ýÔÀ´µÄÊý¾Ý±í(ÕâÀïÊÇÄãΪÁËÒÆ¶¯Êý¾Ý±í¶ø´´½¨µÄÒ»¸ö·ûºÅÁ´½Ó)£¬ÔÙ°ÑÁÙʱÊý¾Ý±í¸üÃûΪÔÀ´µÄÊý¾Ý±íÃû³Æ¡£ÕâÑùÒ»À´£¬ÄãÒÆ×ßµÄÊý¾Ý±í¾ÍºÍÕâ¸öÊý¾Ý¿âÍêȫûÓйØÏµÁË¡£»ùÓÚÒÔϵIJ»Îȶ¨ÒòËØ£¬ÈçÎÞÌØÊâ±ØÒª£¬²»½¨ÒéÒÆ¶¯Êý¾Ý±í¡£
InnoDB±í¿Õ¼äÊÇͨ¹ýÔÚÑ¡ÏîÎļþÖÐʹÓÃinnodb_data_home_dirºÍinnodb_data_file_pathÑ¡ÏîÁгöInnoDB±í¿Õ¼ä×é³ÉÎļþÇåµ¥µÄ·½·¨À´ÅäÖõģ¬ËùÒÔÎÒÃÇ¿Éͨ¹ýÐÞ¸ÄÕâЩѡÏîÀ´ÖØÐ°²ÖÃInnoDB±í¿Õ¼äµÄ×é³ÉÎļþ¡£²½ÖèÈçÏ£º
¹Ø±Õ·þÎñÆ÷£»
ÒÆ¶¯×é³É±í¿Õ¼äµÄÎļþ£»
ÐÞ¸ÄÑ¡ÏîÎļþ£¬Ö¸³ö×é³É±í¿Õ¼äµÄÎļþµÄÐÂλÖã»
ÖØÆô·þÎñÆ÷¡£
״̬ÎļþºÍÈÕÖ¾ÎļþµÄλÖÿÉͨ¹ýÑ¡ÏîÎļþ»òÆô¶¯·þÎñÆ÷ʱָ¶¨¡£
Table of Contents
ΪÁËÈ·±£Êý¾Ý¿âƽÎȿɿ¿ÔËÐУ¬ÎÒÃÇÐè½øÐÐά»¤ºÍ¹ÜÀí£¬ÕâÊÇÿһλÊý¾Ý¿â¹ÜÀíÔ±µÄÖ°Ôð¡£ÏÂÃæ·Ö¼¸¸öרÌâ·Ö±ð½éÉÜ¡£
MySQLÊý¾Ý¿âͨ¹ýÓû§ºÍÃÜÂëÀ´¿ØÖÆÓû§¶ÔÊý¾Ý¿âµÄ·ÃÎÊ£¬µ±ÎÒÃÇа²×°ÁËÒ»¸öÊý¾Ý¿â·þÎñÆ÷ʱ£¬MySQLµÄȨÏÞ±íÉèÖÃÊǺܲ»°²È«£¬ËüĬÈÏÔÊÐíÈκÎÈ˲»ÐèÒªÃÜÂë¾Í¿É·ÃÎÊÊý¾Ý¿â¡£ËùÒÔÎÒÃǰ²×°ºÃ·þÎñÆ÷ºóµÚÒ»¼þÐèÒª×öµÄ¾ÍÊÇÉèÖÃÓû§ÃÜÂë¡£
ÔÚMySQLÖеÄmysqlÊý¾Ý¿âµÄuserÊý¾Ý±íÖдæÓÐÓû§µÄÕʺÅÐÅÏ¢£¬ÔÚ³õʼ״̬ÏÂÒÑ´æÔÚrootºÍһЩÄäÃûÓû§£¬ÇÒËùÓÐÓû§¶¼Ã»ÓÐÉèÖÃÃÜÂë¡£¸ÃÊý¾Ý±íµÄÕâЩÓû§ÐÅÏ¢ÊÇͨ¹ýÒ»¸ömysql_install_db½Å±¾°²×°µÄ¡£¸Ã±íµÄÖ÷ÒªÁÐÓУº
User£¬Á¬½ÓÊý¾Ý¿âµÄÓû§Ãû¡£
Host£¬ÔÊÐíÁ¬½Óµ½Êý¾Ý¿â·þÎñÆ÷µÄÖ÷»úÃû£¬¡°%¡±Í¨Åä·û´ú±íËùÓÐÖ÷»ú¡£
Password£¬Á¬½ÓÃÜÂ룬ÒѼÓÃÜ¡£
ÆäËüȨÏÞÁУ¬ÒÔ¡°Y¡±»ò¡°N¡±±êʶÊÇ·ñÓÐЧ¡£
ÔÚÕâÖÖ״̬ϵÄÊý¾Ý¿âÊǼ«²»°²È«µÄ£¬ÎÒÃÇ¿ÉÓÃÒÔÏÂÃüÁîÇáÒ׵طÃÎÊÊý¾Ý¿â£º
% mysql -h localhost -u root #ͨ¹ý±¾µØÖ÷»ú£¬rootÓû§·ÃÎÊ£¬²»ÐèÒªÃÜÂëÑéÖ¤ % mysql -h localhost #ͨ¹ý±¾µØÖ÷»ú£¬ÄäÃûÓû§·ÃÎÊ£¬²»ÐèÒªÃÜÂëÑéÖ¤
ÉèÖÃMySQLÓû§ÕʺÅÃÜÂëµÄ·½·¨ÓÐÈýÖÖ£º
ʹÓÃmysqladmin³ÌÐò£º
% mysqladmin -h localhost -u root password "password" #ÉèÖÃÔÚ±¾µØÒÔrootÉí·ÖµÇ¼µÄÃÜÂë % mysqladmin -h remote -u root password "password" #ÉèÖÃÔ¶³ÌÖ÷»úÒÔrootÉí·ÖµÇ¼µÄÃÜÂë
ÔÚ³õʼÉèÖÃʱ£¬ÕâÁ½ÌõÓï¾ä¶¼ÒªÔËÐУ¬ÒÔÈ·±£Êý¾Ý¿â±¾µØ·ÃÎʺÍÍøÂç·ÃÎʵݲȫ¡£
ͨ¹ýset passwordÕâÌõSQLÓï¾äÉèÖãº
mysql> set password for 'root'@'localhost' = password('password');
mysql> set password for 'root'@'remote' = password('password');
Ö±½ÓÐÞ¸ÄuserȨÏÞ±í£º
mysql> use mysql;
mysql> update user set password=password('password') where user='root';
mysql> flush privileges; #ÖØÔØÈ¨ÏÞ±í£¬Ê¹ÐÞ¸ÄÂíÉÏÉúЧ
MySQLʹÓÃפÁôÔÚÄÚ´æÖеÄȨÏÞ±í¿½±´À´½øÐзÃÎÊ¿ØÖÆ£¬µ±Ê¹ÓÃmysqladminºÍset passwordÉèÖÃÃÜÂ룬MySQL»á¼à²ìµ½È¨ÏÞ±íÒѱ»Ð޸ģ¬Ëü×Ô¶¯ÖØÔØ¸Ã±í¡£¶øÓÃupdateµÄ·½Ê½£¬MySQL¾Í¼à²ì²»µ½±ä»¯£¬ÐèÊÖ¶¯ÓÃflush privilegesÃüÁîË¢ÐÂÄÚ´æÖеÄȨÏÞ±í£¬ÒÔʹËüÂíÉÏÉúЧ¡£
ΪrootÓû§ÉèÖÃÃÜÂëºó£¬Èç¹ûÐèÒÔrootÉí·ÝÁ¬½ÓÊý¾Ý¿â£¬¾ÍÐèÑéÖ¤ÃÜÂë¡£ÎÒÃÇ¿ÉÓÃÒÔÏÂÓï¾äÁ¬½ÓÊý¾Ý¿â£º
% mysql -u root -p Enter password: #ÊäÈërootµÄÃÜÂë
ÔÚuser±íÖУ¬userÁÐΪ¿ÕµÄΪÄäÃûÓû§¡£ËüÒ²ÊÇûÓÐÃÜÂëµÄ£¬ÎÒÃÇÐèΪËüÃÇÉèÖÃÒ»¸öÃÜÂ룬»ò¸É´à°ÑËüÃÇɾ³ý¡£ÔÚwindowsϵͳÉϵı¾µØÄäÃûÓû§ÕʺźÍrootÓû§ÓÐ×ÅͬÑùµÄȨÏÞ£¬ÕâÊÇÒ»¸öºÜ´óµÄ°²È«Â©¶´¡£Ó¦¸Ã°ÑËüɾ³ý»ò°ÑȨÏÞÏ÷Èõ¡£
ÔÚLinuxºÍwindowsƽ̨ÏÂMySQL·þÎñÆ÷µÄÆô¶¯·½Ê½Óкܴó²»Í¬£¬ÕâÀォ·Ö¿ª½éÉÜ£º
Linuxƽ̨£º
Linuxƽ̨Ï£¬Ã¿Ò»¸ö½ø³Ì¶¼ÐèÓÉÒ»¸öÓû§À´ÔËÐУ¬MySQL×îºÃ²»ÒªÒÔrootÓû§À´ÔËÐС£ÎÒÃǿɴ´½¨Ò»¸ömysqlÓû§ºÍmysql×飬MySQL·þÎñÆ÷³ÌÐòĿ¼ºÍÊý¾ÝĿ¼ÓÉÕâ¸öÓû§ºÍ×éËùÓµÓУ¬ÆäËüÓû§Ã»ÓÐÈκÎȨÏÞ¡£ÒÔmysqlÓû§À´ÔËÐÐMySQL·þÎñÆ÷¡£
% mysqld --user=mysql #¼´Ê¹ÒÔrootÓû§Ö´ÐиÃÃüÁMySQLÊý¾Ý¿â»¹ÊÇ»áÓëmysqlÓû§ID¹ØÁª¡£
ΪÁËʹ·þÎñÆ÷ÔÚϵͳÆô¶¯Ê±×Ô¶¯ÒÔmysqlÓû§ÔËÐУ¬ÐèÅäÖÃmy.cnfÅäÖÃÎļþ £¬°Ñuser=mysql°üº¬ÔÚ[mysqld]¶ÎÖС£
¹Ø±Õ·þÎñÆ÷¿ÉÓÃ% mysql.server stop»ò% mysqladmin -u root -p shutdown
windowsƽ̨£º
ÊÖ¶¯·½Ê½£ºÖ±½ÓÔËÐÐc:\mysqldÃüÁî¡£
×÷Ϊ·þÎñ·½Ê½£ºÔËÐÐc:\mysqld-nt --installÃüÁ°Ñmysqld-nt°²×°ÎªwindowsµÄ·þÎñ£¬´Ëºó£¬Ã¿µ±windowsÆô¶¯Ê±£¬Ëü¾Í»á×Ô¶¯ÔËÐС£mysqld-ntÊÇÒ»¸öÖ§³ÖÃüÃû¹ÜµÀµÄMySQL·þÎñÆ÷¡£ÔËÐÐc:\mysqld-nt --remove¿É°Ñ·þÎñɾ³ý¡£ÊÖ¶¯Æô¶¯¹Ø±Õ·þÎñµÄ·½·¨ÊÇÔËÐÐc:\net start mysqlºÍc:\net stop mysqlÃüÁî¡£
µ±ÓÉÓÚÎóɾmysqlÌ×½Ó×Öʱ(/tmp/mysql.sock)£¬ÎÒÃǾͲ»ÄÜͨ¹ýÌ×½Ó×ÖÁ¬½Ó·þÎñÆ÷¡£ÕâʱÎÒÃÇ¿Éͨ¹ýtcp/ipÀ´Á¬½Ó·þÎñÆ÷£¬Òª½¨Á¢Ò»¸ötcp/ipÁ¬½Ó£¬ÐèÓÃ127.0.0.1´úÌælocahost×÷Ϊ-h²ÎÊýµÄÖµÀ´Á¬½Ó·þÎñÆ÷¡£È磺
% mysqladmin -h 127.0.0.1 -u root -p shutdown #¹Ø±Õ·þÎñÆ÷ÔÙÖØÆô»áÖØ½¨Ì×½Ó×Ö
µ±ÎÒÃÇÒòΪÍü¼ÇrootÓû§ÃÜÂë¶ø²»ÄÜÁ¬½Ó·þÎñÆ÷ʱ£¬ÖØÉèÖÃÃÜÂëµÄ²½ÖèÈ磺
Óà % kill -TERM PID¹Ø±Õ·þÎñÆ÷£¬ÓÃ-TERMÐÅÏ¢¿Éʹ·þÎñÆ÷ÔڹرÕǰ°ÑÄÚ´æÖеÄÊý¾ÝдÈë´ÅÅÌ¡£Èç¹û·þÎñÆ÷ûÓÐÏìÓ¦£¬ÎÒÃÇ¿ÉÓÃ% kill -9 PIDÀ´Ç¿ÖÆÉ¾³ý½ø³Ì£¬µ«²»½¨ÒéÕâÑù×ö¡£ÕâʱÄÚ´æÖеÄÊý¾Ý²»»áдÈë´ÅÅÌ£¬Ôì³ÉÊý¾Ý²»ÍêÕû¡£Èç¹ûÄãÊÇÓÃmysql_safe½Å±¾Æô¶¯MySQL·þÎñÆ÷µÄ£¬Õâ¸ö½Å±¾»á¼à¿Ø·þÎñÆ÷µÄÔËÐÐÇé¿ö²¢ÔÚËü±»ÖÕÖ¹Ê±ÖØÆô·þÎñÆ÷£¬ËùÒÔÈçÐè¹Ø±Õ·þÎñÆ÷£¬ÒªÏÈÖÕÖ¹¸Ã½ø³Ì£¬È»ºóÔÙÕæÕýÖÕÖ¹mysqld½ø³Ì¡£
½Ó×ÅÓÃ--skip_grant-tablesÆô¶¯·þÎñÆ÷¡£ÕâʱMySQL·þÎñÆ÷½«²»Ê¹ÓÃȨÏÞ±í¶ÔÁ¬½Ó²Ù×÷½øÐÐÑéÖ¤¡£Äã¾Í¿ÉÔÚ²»ÌṩrootÃÜÂëµÄÇé¿öÏÂÁ¬½ÓÉÏ·þÎñÆ÷£¬²¢»ñµÃrootµÄȨÏÞ¡£ÕâÑùÄã¾Í¿ÉÓÃÉÏÃæ½éÉܵÄÐÞ¸ÄÃÜÂëµÄ·½·¨ÖØÉèrootÓû§µÄÃÜÂë¡£×¢Ò⣺Á¬½ÓÉÏ·þÎñÆ÷ºó£¬ÒªÂíÉÏÖ´ÐÐflush privilegesÃüÁʹȨÏÞ±í¶ÁÈëÄÚ´æ²¢ÉúЧ£¬ÒÔ×èÖ¹ÆäËûµÄÁ¬½Ó¡£¸ÃÓï¾ä»¹ÖØÐ¼¤»îgrantÓï¾ä£¬ÔÚMySQL·þÎñÆ÷²»Ê¹ÓÃȨÏÞ±íʱ£¬grantÓï¾ä±»½ûÓá£
ÐÞ¸ÄÍêrootÓû§ÃÜÂëºó£¬ÎÒÃǾͿɹرշþÎñÆ÷²¢ÖØÆôʹËùÓÐÅäÖÃÕý³£ÔË×÷¡£
MySQLÓû§ÕʺŹÜÀíÖ÷ÒªÓÃgrant(ÊÚȨ)ºÍrevoke(³·È¨)Á½¸öSQLÖ¸ÁîÀ´¹ÜÀí¡£ÕâÁ½¸öÖ¸ÁîʵÖÊÊÇͨ¹ý²Ù×÷user(Á¬½ÓȨÏÞºÍÈ«¾ÖȨÏÞ)¡¢db(Êý¾Ý¿â¼¶È¨ÏÞ)¡¢tables_priv(Êý¾Ý±í¼¶È¨ÏÞ)¡¢columns_priv(Êý¾ÝÁм¶È¨ÏÞ)ËĸöȨÏÞ±íÀ´·ÖÅäȨÏ޵ġ£hostȨÏÞ±í²»ÊÜÕâÁ½¸öÖ¸ÁîÓ°Ïì¡£ÏÂÃæ½«»áÏêϸ½éÉÜÓû§È¨ÏÞ¹ÜÀíµÄÄÚÈÝ¡£
GRANTÓ﷨˵Ã÷£º
GRANT privileges (columns) #privileges±íʾÊÚÓèµÄȨÏÞ£¬columns±íʾ×÷ÓõÄÁÐ(¿ÉÑ¡)
ON what #ÉèÖÃȨÏÞ¼¶±ð£¬È«¾Ö¼¶¡¢Êý¾Ý¿â¼¶¡¢Êý¾Ý±í¼¶ºÍÊý¾ÝÁм¶
TO account #ȨÏÞÊÚÓèµÄÓû§£¬ÓÃ"user_name"@"host_name"ÕâÖÖÓû§Ãû¡¢Ö÷»úÃû¸ñʽ
IDENTIFIED BY 'password' #ÉèÖÃÓû§ÕʺÅÃÜÂë
REQUIRE encryption requirements #ÉèÖþÓÉSSLÁ¬½ÓÕʺÅ
WITH grant or resource management options; #ÉèÖÃÕʺŵĹÜÀíºÍ×ÊÔ´(Á¬½Ó·þÎñÆ÷´ÎÊý»ò²éѯ´ÎÊýµÈ)Ñ¡Ïî
ʾÀý£º
mysql>grant all on db.* to 'test'@'localhost' identified by 'test'; ÉÏÀýÔËÐкóµÄЧ¹ûÊÇ£¬testÓû§Ö»ÄÜͨ¹ý¡®test¡¯ÃÜÂë´Ó±¾»ú·ÃÎÊdbÊý¾Ý¿â mysql>grant all on db.* to 'test'@'%' identified by 'test'; ÉÏÀýÔËÐкóµÄЧ¹ûÊÇ£¬testÓû§¿Éͨ¹ý¡®test¡¯ÃÜÂë´ÓÈÎÒâ¼ÆËã»úÉÏ·ÃÎÊdbÊý¾Ý¿â¡£¡®%¡¯´ú±íÈÎÒâ×Ö·û£¬¡®_¡¯´ú±íÒ»¸öÈÎÒâ×Ö·û¡£Ö÷»úÃû²¿·Ý»¹¿ÉÒÔÊÇIPµØÖ·¡£
![]() | |
| Èç¹ûûÓиø¶¨Ö÷»ú²¿·Ý£¬ÔòĬÈÏΪÈÎÒâÖ÷»ú£¬Ò²¾ÍÊÇ'test'ºÍ'test'@'%'Êǵȼ۵ġ£ | |
Table 4.1. ·ÃÎÊȨÏÞ±í
| ȨÏÞ | ȨÏÞ˵Ã÷ |
|---|---|
| CREATE TEMPORARY TABLES | ´´½¨ÁÙʱÊý¾Ý±í |
| EXECUTE | Ö´Ðд洢¹ý³Ì(Ôݲ»Ö§³Ö) |
| FILE | ²Ù×÷ϵͳÎļþ |
| GRANT OPTION | ¿É°Ñ±¾ÕʺŵÄȨÏÞÊÚÓèÆäËüÓû§ |
| LOCK TABLES | Ëø¶¨Ö¸¶¨Êý¾Ý±í |
| PROCESS | ²é¿´ÔËÐÐ×ŵÄÏß³ÌÐÅÏ¢ |
| RELOAD | ÖØÐ¼ÓÔØÈ¨ÏÞ±í»òË¢ÐÂÈÕÖ¾¼°»º³åÇø |
| REPLICATION CLIENT | ¿É²éѯÖ÷/´Ó·þÎñÆ÷Ö÷»úÃû |
| REPLICATION SLAVE | ÔËÐÐÒ»¸ö¾µÏñ´Ó·þÎñÆ÷ |
| SHOW DATABASES | ¿ÉÔËÐÐSHOW DATABASESÖ¸Áî |
| SHUTDOWN | ¹Ø±ÕÊý¾Ý¿â·þÎñÆ÷ |
| SUPER | ¿ÉÓÃkillÖÕÖ¹Ïß³ÌÒÔ¼°½øÐг¬¼¶Óû§²Ù×÷ |
| ALTER | ¿ÉÐ޸ıíºÍË÷ÒýµÄ½á¹¹ |
| CREATE | ´´½¨Êý¾Ý¿âºÍÊý¾Ý±í |
| DELETE | ɾ³ýÊý¾Ý±íÖеÄÊý¾ÝÐÐ |
| DROP | ɾ³ýÊý¾Ý±íºÍÊý¾ÝÐÐ |
| INDEX | ½¨Á¢»òɾ³ýË÷Òý |
| INSERT | ²åÈëÊý¾ÝÐÐ |
| REFERENCES | (ÔÝʱ²»Ö§³Ö) |
| SELECT | ²éѯÊý¾ÝÐÐ |
| UPDATE | ¸üÐÂÊý¾ÝÐÐ |
| ALL | ËùÓÐȨÏÞ£¬µ«²»°üÀ¨GRANT¡£ |
| USAGE | ÎÞȨÏÞȨÏÞ |
Table 4.2. ȨÏÞ×÷Ó÷¶Î§(ÓÉON×Ó¾äÉèÖÃ)
| ȨÏÞÏÞ¶¨·û | ×÷Ó÷¶Î§ |
|---|---|
| ON *.* | È«¾Ö¼¶È¨ÏÞ£¬×÷ÓÃÓÚËùÓÐÊý¾Ý¿â |
| ON * | È«¾Ö¼¶È¨ÏÞ£¬Èôδָ¶¨Ä¬ÈÏÊý¾Ý¿â£¬Æä×÷Ó÷¶Î§ÊÇËùÓÐÊý¾Ý¿â£¬·ñÔò£¬Æä×÷Ó÷¶Î§Êǵ±Ç°Êý¾Ý¿â |
| ON db_name.* | Êý¾Ý¿â¼¶È¨ÏÞ£¬×÷ÓÃÓÚÖ¸¶¨Êý¾Ý¿âÀïµÄËùÓÐÊý¾Ý±í |
| ON db_name.tbl_name | Êý¾Ý±í¼¶È¨ÏÞ£¬×÷ÓÃÓÚÊý¾Ý±íÀïµÄËùÓÐÊý¾ÝÁÐ |
| ON tbl_name | Êý¾Ý±í¼¶È¨ÏÞ£¬×÷ÓÃÓÚĬÈÏÊý¾Ý¿âÖÐÖ¸¶¨µÄÊý¾Ý±íÀïµÄËùÓÐÊý¾ÝÁÐ |
USAGEȨÏÞµÄÓ÷¨£ºÐÞ¸ÄÓëȨÏÞÎ޹صÄÕÊ»§ÏÈ磺
mysql>GRANT USAGE ON *.* TO account IDENTIFIED BY 'new_password'; #ÐÞ¸ÄÃÜÂë mysql>GRANT USAGE ON *.* TO account REQUIRE SSL; #ÆôÓÃSSLÁ¬½Ó mysql>GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 10; #ÉèÖÃ×ÊÔ´
ÓµÓÐWITH GRANT OPTIONȨÏÞµÄÓû§¿É°Ñ×ÔÒÑËùÓµÓõÄȨÏÞתÊÚ¸øÆäËûÓû§£¬È磺
mysql>GRANT ALL ON db.* TO 'test'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; ÕâÑùtestÓû§¾ÍÓÐȨ°Ñ¸ÃȨÏÞÊÚÓèÆäËûÓû§¡£
ÏÞÖÆ×ÊԴʹÓã¬È磺
mysql>GRANT ALL ON db.* TO account IDENTIFIED BY 'password' WITH MAX_CONNECTIONS_PER_HOUR 10 MAX_QUERIES_PER_HOUR 200 MAX_UPDATES_PER_HOUR 50; ÔÊÐíaccountÓû§Ã¿Ð¡Ê±×î¶àÁ¬½Ó20´Î·þÎñÆ÷£¬Ã¿Ð¡Ê±×î¶à·¢³ö200Ìõ²éѯÃüÁî(ÆäÖиüÐÂÃüÁî×î¶àΪ50Ìõ)
ĬÈ϶¼ÊÇÁãÖµ£¬¼´Ã»ÓÐÏÞÖÆ¡£FLUSH USER_RESOURCESºÍFLUSH PRIVILEGES¿É¶Ô×ÊÔ´ÏÞÖÆ¼ÆÊýÆ÷ÇåÁã¡£
REVOKEÓ﷨˵Ã÷£º
mysql>REVOKE privileges (columns) ON what FROM account;
ʾÀý£º
mysql>REVOKE SELECT ON db.* FROM 'test'@'localhost'; ɾ³ýtestÕʺŴӱ¾»ú²éѯdbÊý¾Ý¿âµÄȨÏÞ
REVOKE¿Éɾ³ýȨÏÞ£¬µ«²»ÄÜɾ³ýÕʺţ¬¼´Ê¹ÕʺÅÒÑûÓÐÈκÎȨÏÞ¡£ËùÒÔuserÊý¾Ý±íÀﻹ»áÓиÃÕʺŵļǼ£¬Òª³¹µ×ɾ³ýÕʺţ¬ÐèÓÃDELETEÃüÁîɾ³ýuserÊý¾Ý±íµÄ¼Ç¼£¬È磺
% mysql -u root -p mysql>use mysql mysql>DELETE FROM user where User='test' and Host='localhost'; mysql fulsh privileges;
REVOKE²»ÄÜɾ³ýREQUIREºÍ×ÊÔ´Õ¼ÓõÄÅäÖá£ËûÃÇÊÇÒªÓÃGRANTÀ´É¾³ýµÄ£¬È磺
GRANT USAGE ON *.* TO account REQUIRE NONE; #ɾ³ýaccountÕʺŵÄSSLÁ¬½ÓÑ¡Ïî GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 0 MAX_QUERIES_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0; #ɾ³ýaccountÕʺŵÄ×ÊÔ´ÏÞÖÆ
ÓйØMySQLµÄÈÕÖ¾ÎļþÇ°ÃæÕ½ÚÒѼòÒªÌÖÂÛ¹ýÁË£¬Ö÷ÒªÓÐËÄÖÖÈÕÖ¾Îļþ£¬·Ö±ðÊdz£¹æ²éѯÈÕÖ¾¡¢Âý²éѯÈÕÖ¾¡¢±ä¸ü²éѯÈÕÖ¾ºÍ¶þ½øÖƱä¸üÈÕÖ¾¡£ÕâЩÈÕÖ¾ÎļþµÄ´´½¨ÐèÔÚÆô¶¯·þÎñÆ÷ʱÓÃÑ¡ÏîÖ¸¶¨¡£
Table 4.3. ÈÕÖ¾Æô¶¯Ñ¡Ïî
| Æô¶¯Ñ¡Ïî | ¼¤»îÈÕÖ¾ |
|---|---|
| --log[=file_name] | ³£¹æÈÕÖ¾Îļþ |
| --log-bin[=file_name] | ¶þ½øÖƱä¸üÈÕÖ¾Îļþ |
| --log-bin-index=file_name | ¶þ½øÖƱä¸üÈÕÖ¾ÎļþË÷ÒýÎļþ |
| --log-update[=file_name] | ±ä¸üÈÕÖ¾Îļþ |
| --log-slow-queries[=file_name] | Âý²éѯÈÕÖ¾Îļþ |
| --log-isam[=file_name] | ISAM/MyISAMÈÕÖ¾Îļþ |
| --log-long-format | ÉèÖÃÂý²éѯÈÕÖ¾ºÍ±ä¸üÈÕÖ¾µÄ¸ñʽ |
BDBºÍInnoDBÊý¾Ý±íµÄÈÕÖ¾Îļþ»á×Ô¶¯´´½¨²»ÓÃÖ¸¶¨Ñ¡Ïî¡£µ«¿ÉÓÃÒÔÏÂÑ¡ÏîָʱÈÕÖ¾ÎļþµÄ´æ·Å·¾¶¡£
Table 4.4. BDBºÍInnoDBÊý¾Ý±íÈÕ־ѡÏî
| Æô¶¯Ñ¡Ïî | ÓÃ; |
|---|---|
| --bdb-logdir=dir_name | ´æ·ÅBDBÈÕÖ¾ÎļþµÄλÖà |
| --innodb-log_arch_dir=dir_name | ´æ·ÅInnoDBÈÕÖ¾ÎļþµÄ¹éµµÄ¿Â¼ |
| --innodb_log_group_home_dir=dir_name | ´æ·ÅInnoDBÈÕÖ¾ÎļþµÄλÖà |
MySQLÈÕÖ¾ÎļþÑ¡Ïî¿ÉÔÚmysqldºÍmysqld_safe½Å±¾ÖÐʹÓã¬Ò²¿ÉÔÚÑ¡ÏîÎļþmy.cnfµÄ[mysqld]ÖÐʹÓá£ÍƼöÔÚÑ¡ÏîÎļþÖÐʹÓã¬ÒòΪÿ´ÎÆô¶¯·þÎñÆ÷µÄÈÕ־ѡÏî»ù±¾É϶¼ÊÇÒ»Öµġ£
ÈÕÖ¾µÄˢпÉÓÃmysqladmin flush-logsÃüÁî»òflush logsÓï¾äʵÏÖ¡£ÁíÍ⣬¶ÔMySQL·þÎñÆ÷·¢ËÍÒ»ÌõSIGHUPÐźÅÒ²»áË¢ÐÂÈÕÖ¾¡£´íÎóÈÕÖ¾ºÍDBD/InnoDBÈÕÖ¾²»ÄÜÓÃÒÔÉÏ·½·¨Ë¢Ð¡£
´íÎóÈÕÖ¾¼Ç¼MySQLÊý¾Ý¿âϵͳµÄÂ۶Ϻͳö´íÐÅÏ¢£¬ÓÉmysqld_safe½Å±¾´´½¨£¬ÎļþÃûĬÈÏΪhostname.err£¬Ò²¿Éͨ¹ý--err-log»òÑ¡ÏîÎļþµÄerr-logÓï¾äÖ¸¶¨ÁíÍâµÄÃû×Ö¡£Èç¹ûÖ±½ÓÓÃmysqld³ÌÐòÆô¶¯·þÎñÆ÷£¬´íÎóÐÅÏ¢»áÖ±½ÓÊä³öµ½Êä³öÉ豸£¬Ò²¾ÍÊÇÆÁÄ»¡£µ«ÎÒÃÇ¿ÉÓÃÖØ¶¨Ïò·½·¨°Ñ´íÎóÐÅÏ¢Êä³öµ½ÆäËüµØ·½£¬Èç°Ñ´íÎóÐÅÏ¢Êä³öµ½/var/log/mysql.errÎļþÖУ¬¿ÉÒÔÖ´ÐÐÒÔÏÂÓï¾ä£º
% mysqld > /var/log/mysql.err 2>&1 &
ÔÚwindowsƽ̨Ï£¬MySQL·þÎñÆ÷ĬÈϰÑÕï¶ÏÐÅϢдµ½Êý¾ÝĿ¼µÄmysql.errÎļþÖУ¬²¢ÇÒ²»ÔÊÐíÁíÍâÖ¸¶¨´íÎóÈÕÖ¾ÎļþÃû¡£ÈçÔÚÆô¶¯MySQL·þÎñÆ÷ʱ¸ø³öÁË--consoleÑ¡ÏÔòMySQL»á°ÑÕï¶ÏÐÅÏ¢Êä³öµ½¿ØÖÆÌ¨´°¿Ú¶ø²»´´½¨´íÎóÈÕÖ¾¡£µ«ÈçMySQLÊÇ×÷Ϊһ¸ö·þÎñÔËÐУ¬Ôò--consoleÑ¡Ïî²»Æð×÷Óá£
ÔÚ·þÎñÆ÷Õý³£ÔËÐÐÖУ¬»á²úÉú´óÁ¿µÄÈÕÖ¾Îļþ¡£ÎÒÃÇÒª¶ÔÕâЩÈÕÖ¾Îļþ½øÐÐʧЧ¹ÜÀí£¬ÒÔ½ÚÊ¡´ÅÅ̿ռäºÍ·½±ã²éѯ¡£½øÐÐÈÕ־ʧЧ´¦ÀíµÄ·½Ê½Ö÷ÒªÓÐÒÔϼ¸ÖÖ£º
ÈÕÖ¾ÂÖת¡£¸Ã·½·¨ÊÊÓÃÓÚ³£¹æ²éѯÈÕÖ¾ºÍÂý²éѯÈÕÖ¾ÕâЩÎļþÃû¹Ì¶¨µÄÈÕÖ¾Îļþ£¬ÔÚÈÕÖ¾ÂÖתʱ£¬Ó¦½øÐÐÈÕ־ˢвÙ×÷(mysqladmin flush-logsÃüÁî»òflush logsÓï¾ä)£¬ÒÔÈ·±£»º´æÔÚÄÚ´æÖеÄÈÕÖ¾ÐÅϢдÈë´ÅÅÌ£»
ÈÕÖ¾ÂÖתµÄ²Ù×÷¹ý³ÌÊÇÕâÑùµÄ£ºµÚÒ»´ÎÂÖתʱ£¬°Ñlog¸üÃûΪlog.1£¬È»ºó·þÎñÆ÷ÔÙ´´½¨Ò»¸öеÄlogÎļþ£¬ÔÚµÚ¶þÂÖתʱ£¬ÔÙ°Ñlog.1¸üÃûΪlog.2£¬°Ñlog¸üÃûΪlog.1£¬È»ºó·þÎñÆ÷ÔÙ´´½¨Ò»¸öеÄlogÎļþ¡£Èç´ËÑ»·£¬´´½¨Ò»ÏµÁеÄÈÕÖ¾Îļþ¡£µ±µ½´ïÈÕÖ¾ÂÖתʧЧλÖÃʱ£¬Ï´ÎÂÖת¾Í²»ÔÙ¶ÔËü½øÐиüÃû£¬Ö±½Ó°Ñ×îºóÒ»¸öÈÕÖ¾Îļþ¸²¸Çµô¡£ÀýÈ磺Èç¹ûÿÌì½øÐÐÒ»´ÎÈÕÖ¾ÂÖת²¢Ïë±£Áô×îºó7ÌìµÄÈÕÖ¾Îļþ£¬¾ÍÐèÒª±£Áôlog.1--log.7¹²Æß¸öÈÕÖ¾Îļþ£¬µÈÏ´ÎÂÖתʱ£¬ÓÃlog.6¸²¸ÇÔÀ´µÄlog.7³ÉеÄlog.7£¬ÔÀ´µÄlog.7¾Í×ÔȻʧЧ¡£ÏÂÃæÊÇÒ»¸öʧЧ´¦ÀíµÄshell½Å±¾£¬ÒÔ¹©²Î¿¼£º
#!/bin/sh # shell script --- rotate_log.sh if [ $# -ne 1 ]; then echo "Usage: $0 logname" 1>&2 exit 1 if logfile=$1 mv $logfile.6 $logfile.7 mv $logfile.5 $logfile.6 mv $logfile.4 $logfile.5 mv $logfile.3 $logfile.4 mv $logfile.2 $logfile.3 mv $logfile.1 $logfile.2 mv $logfile $logfile.1 mysqladmin -u flush -pflushpass flush-logs #Ö´ÐÐmysqladmin flush-logs»á´ò¿ªÒ»¸öÈÕÖ¾Îļþ----ÖØÐÂÉú³ÉÒ»¸öеÄÈÕÖ¾Îļþ
¸Ã½Å±¾ÒÔÈÕÖ¾ÎļþÃûΪ²ÎÊý£¬Ö´Ðз½·¨ÈçÏ£º
% rotate_log.sh /usr/local/mysql/data/log
×¢Ò⣬½Å±¾ÖеÄmysqladminÃüÁîÊÇ´øÓÐ-uºÍ-p²ÎÊýµÄ£¬ÒòΪÎÒÃǽøÐÐÈÕ־ˢÐÂʱÐèÁ¬½Ó·þÎñÆ÷¡£ÎªÈ·±£°²È«£¬ÎÒÃǽ¨Á¢Ò»¸öflushÓû§£¬ÃÜÂëΪflushpass¡£¸ÃÓû§Ö»ÓÐÈÕ־ˢеÄȨÏÞ(reloadȨÏÞ)¡£´´½¨¸ÃÓû§µÄÓï¾äÈçÏ£º
GRANT RELOAD ON *.* TO 'flush'@'localhost' IDENTIFIED BY 'fulshpass';
ÉèÖúúó£¬ÎÒÃǾͿÉÀûÓÃϵͳµÄ×Ô¶¯´¦Àí»úÖÆ¶¨ÆÚÔËÐиýű¾ÒÔÉú³ÉÂÖתÈÕÖ¾¡£ÔÚLinuxϵͳÉϵÄMySQL·¢ÐаæÖдøÓÐÒ»¸öÓÃÀ´°²×°mysql-log-rotateÈÕÖ¾ÂÖת½Å±¾µÄlogrotate¹¤¾ß£¬ÈçÓÃRPM°²×°,ÔòÔÚ/usr/share/mysqlĿ¼£¬ÈçÓöþ½øÖÆ·½Ê½°²×°,ÔòÔÚMySQL°²×°Ä¿Â¼µÄsupport-filesĿ¼£¬ÈçÓÃÔ´Âë°²×°£¬ÔòÔÚ°²×°Ä¿Â¼µÄshare/mysqlĿ¼ÖС£
ÔÚwindowsƽ̨Ï£¬²»ÄÜÔÚÏ߸üÃû£¬ÐèÍ£µô·þÎñÆ÷£¬ÔÙ½øÐС£ÏÂÃæÊÇÒ»¸ö½øÐÐÈÕÖ¾¸üÃûµÄÅú´¦ÀíÎļþ£º
@echo off REM script name : rotate_log.bat if not "%1" == "" goto ROTATE @echo Usage: rotate_log logname goto DONE :ROTATE set logfile=%1 erase %logfile%.7 rename %logfile%.6 %logfile%.7 rename %logfile%.5 %logfile%.6 rename %logfile%.4 %logfile%.5 rename %logfile%.3 %logfile%.4 rename %logfile%.2 %logfile%.3 rename %logfile%.1 %logfile%.2 rename %logfile% %logfile%.1 :DONE
¸Ã½Å±¾µÄÖ´Ðз½·¨ÈçÏ£º
c:\rotate_log c:\mysql\data\log
ÒÔʱ¼äΪÒÀ¾Ý¶ÔÈÕÖ¾½øÐÐʧЧ´¦Àí¡£¸Ã·½·¨½«¶¨ÆÚɾ³ý³¬¹ý¸ø¶¨Ê±¼äµÄÈÕÖ¾Îļþ£¬ÊÊÓÃÓÚ±ä¸üÈÕÖ¾ºÍ¶þ½øÖÆÈÕÖ¾µÈÎļþÃûÓÃÊý×Ö±àºÅ±êʶµÄÈÕÖ¾Îļþ¡£ÏÂÃæÊÇÒ»¸öÓÃPerlд³ÉµÄ´¦Àí½Å±¾£º
#!/usr/bin/perl -w
# script name: expire_log.pl
# Usage: expire_log.pl logfile ...
use strict
die "Usage: $0 logfile ...\n" if @ARGV == 0;
my $max_allowed_age = 7; #max allowed age in days
foreach my $file (@ARGV) #chack each argument
{
unlink ($file) if -e $file && -M $file >= $max_allowed_age;
}
exit(0);
¸Ã½Å±¾ÐèÌṩһ¸ö½«±»ÂÖתµÄÈÕÖ¾ÎļþÃû×÷Ϊ²ÎÊý£¬È磺
% expire_log.pl /usr/local/mysql/data/log.[0-9]*
![]() | |
| ÔÚ¸ø½Å±¾²ÎÊýʱÇëСÐÄ£¬Èç¸ø³ö*Ϊ²ÎÊý£¬Ôò»áɾ³ýĿ¼ÖÐËùÓиüÐÂʱ¼ä´óÓÚ7ÌìµÄÎļþ¡£ | |
¾µÏñ»úÖÆ¡£°ÑÈÕÖ¾Îļþ¾µÏñµ½ËùÓеĴӷþÎñÆ÷ÉÏ¡£ÒªÊ¹ÓþµÏñ»úÖÆ£¬Äã±ØÐëÖªµÀÖ÷·þÎñÆ÷ÓжàÉÙ¸ö´Ó·þÎñÆ÷£¬ÄÄЩÕýÔÚÔËÐУ¬²¢ÐèÒÀ´ÎÁ¬½Óÿһ¸ö´Ó·þÎñÆ÷²¢·¢³öshow slave statusÓï¾äÒÔÈ·¶¨ËüÕý´¦ÀíÖ÷·þÎñÆ÷µÄÄĸö¶þ½øÖÆÈÕÖ¾Îļþ(Óï¾äÊä³öÁбíµÄMaster_Log_FileÏî)£¬Ö»ÓÐËùÓеĴӷþÎñÆ÷¶¼²»»áÓõ½µÄÈÕÖ¾Îļþ²ÅÄÜɾ³ý¡£É¾³ý·½·¨ÊÇÔÚÖ÷·þÎñÆ÷ÉÏ·¢³öÒÔÏÂÓï¾ä£º
mysql> PURGE MASTER LOGS TO 'last_log.xx';
ÉÏÃæÓï¾äÖеÄlast_log.xxÊÇËùÓдӷþÎñÆ÷ÒÑ´¦ÀíµÄ×îС±àºÅÈÕÖ¾Îļþ¡£
·þÎñÆ÷µÄ¼àÌý¶Ë¿ÚÉèÖÃ
TCP/IP¶Ë¿Ú3306ÊÇMySQL·þÎñÆ÷ĬÈϵÄÍøÂç¼àÌý¶Ë¿Ú£¬ÈçÓÃ--skip-networkingÑ¡ÏîÆô¶¯·þÎñÆ÷£¬Ôò²»¼àÌýTCP/IP¶Ë¿Ú¡£¿ÉÓÃ--port¶Ë¿ÚÁíÐÐÖ¸¶¨Ò»¸ö¼àÌý¶Ë¿Ú¡£Èç·þÎñÆ÷Ö÷»úÓжà¸öIP£¬»¹¿ÉÓÃ--bind-addressÑ¡Ïî¶Ô·þÎñÆ÷ÔÚ¼àÌý¿Í»§Á¬½ÓʱʹÓõÄIPµØÖ·½øÐÐÉ趨¡£
ÔÚUNIXϵͳÉÏ£¬MySQL¿ÉÔÚÒ»¸öUNIXÓòÌ×½Ó×ÖÎļþÉϼàÌýÓÐÎÞ±¾µØ¿Í»§ÔÚÊÔͼÒÔlocalhostΪÖ÷»úÃû½øÐÐÁ¬½Ó¡£Ä¬ÈϵÄÌ×½Ó×ÖÎļþÊÇ/tmp/mysql.sock£¬¿ÉÓÃ--socketÑ¡ÏîÖ¸¶¨ÁíÍâÒ»¸öÌ×½Ó×ÖÎļþ¡£
ÔÚ»ùÓÚNTµÄWindowsƽ̨ÉÏ£¬ÓÐ-ntµÄMySQL·þÎñÆ÷¶¼Ö§³ÖÃüÃû¹ÜµÀ¡£Ä¬ÈϵÄÃüÃû¹ÜµÀÊÇMySql£¬¿ÉÓÃ--socketÑ¡ÏîÁíÐÐÖ¸¶¨¡£
ÆôÓûò½ûÓÃLOAD DATAÓï¾äµÄLOCALÄÜÁ¦
¿ÉÔÚMySQL·þÎñÆ÷±àÒëʱ£¬ÓÃconfigure½Å±¾µÄ--enable-local-infile»ò--disable-local-infileÑ¡Ïî°ÑLOAD DATAÓï¾äµÄLOCALÄÜÁ¦ÉèÖÃΪÆôÓûò½ûÓã»
ÔÚMySQL·þÎñÆ÷Æô¶¯ÊÇ£¬¿ÉÒÔÓÃ--local-infile»ò--disable-local-infileÑ¡ÏîÀ´ÆôÓûò½ûÓ÷þÎñÆ÷µÄLOCALÄÜÁ¦(ÔÚMySQL 4.0.2֮ǰµÄ°æ±¾ÀҪÓÃ--local-infile=0À´½ûÓÃËü)¡£
Èç¹ûÔÚ·þÎñÆ÷¶Ë½ûÓÃÁËLOCALµÄÄÜÁ¦£¬Ôò¿Í»§¶Ë¾Í²»ÄÜʹÓøù¦ÄÜ£»Èç·þÎñÆ÷ÆôÓÃÁËLOCALµÄÄÜÁ¦£¬¿Í»§¶ËĬÈÏÒ²ÊǽûֹʹÓõ쬵«¿ÉÓÃmysql³ÌÐòµÄ--local-infileÑ¡ÏîÆôÓÃËü¡£
¹ú¼Ê»¯ºÍ±¾µØ»¯£¬¹ú¼Ê»¯ÊÇÖ¸Èí¼þÄܹ»ÔÚÊÀ½ç¶à¸ö¹ú¼ÒµØÇøÊ¹Ó㬶ø±¾µØ»¯ÔòÊÇÖ¸¿É´Ó¹ú¼Ê»¯Èí¼þÖÐÑ¡ÔñÒ»Ì×Êʺϱ¾µØÇøµÄÓïÑÔºÍϰ¹ßµÄÉèÖÃÀ´Ê¹Óá£ÔÚMySQLÖеĹú¼Ê»¯ºÍ±¾µØ»¯ÉèÖÃÓÐÒÔϼ¸·½ÃæÄÚÈÝ£º
Ê±Çø£¬Èç¹ûÊ±ÇøÉèÖò»¶Ô£¬Ôò·þÎñÆ÷ÏÔʾµÄʱ¼ä½«»áºÍµ±µØÊ±¼äÓгåÍ»¡£ÉèÖ÷½·¨¿Éͨ¹ýmysqld_safe½Å±¾µÄ--timezoneÑ¡ÏîÀ´ÉèÖ㬵«×îºÃ»¹ÊÇÔÚÑ¡ÏîÎļþÀïÉèÖã¬Èç:
[mysqld_safe] timezone=US/Central
ÅäÖÃÏÔʾÐÅÏ¢µÄÓïÑÔ£¬MySQLÄÜÓöàÖÖÓïÑÔÀ´ÏÔʾÕï¶ÏÐÅÏ¢Óë³ö´íÐÅÏ¢£¬Ä¬ÈÏÊÇÓ¢Óï¡£²é¿´share/mysqlĿ¼ÏÂÓм¸¸öÒÔÓïÑÔÃû³Æ×÷ΪĿ¼ÃûµÄĿ¼¾Í¿ÉÖªµÀÓÐÄÄЩÓïÑԿɹ©Ñ¡Ôñ¡£¿ÉÓÃ--languageÆô¶¯Ñ¡ÏîÀ´Ö¸¶¨ÓïÑÔ£¬Èç--language=/usr/local/mysql/share/mysql/french¡£
ÅäÖ÷þÎñÆ÷µÄ×Ö·û¼¯£¬MySQLÖ§³Ö¶àÖÖ×Ö·û¼¯£¬¿ÉÔÚshare/mysql/charsetsĿ¼Ï²éѯ֧³ÖµÄ×Ö·û¼¯£¬Ò²¿ÉÓÃshow variables like 'character_sets'À´ÏÔʾ֧³ÖµÄ×Ö·û¼¯Çåµ¥¡£MySQL°Ñlatin1×÷ΪĬÈϵÄ×Ö·û¼¯¡£¿ÉÔÚ±àÒëʱÓÃ--with-charsetÖ¸¶¨ÁíÍâÒ»¸ö×Ö·û¼¯ÎªÄ¬ÈÏ×Ö·û¼¯¡£ÈçÒªÔö¼ÓÁíÍâµÄ×Ö·û¼¯Ö§³Ö£¬¿ÉÓÃ--with-extra-charasetsÑ¡Ïî½øÐÐÌí¼Ó¡£È磺
% ./configure --with-extra-charsets=latin1,gb2312,big5
--with-extra-charsetsÓÐÁ½¸öÌØÊâµÄÑ¡Ïһ¸öÊÇall£¬´ú±íËùÓпÉÓÃ×Ö·û¼¯£»Ò»¸öÊÇcomplex£¬´ú±íËùÓеĸ´ÔÓ×Ö·û¼¯(°üÀ¨¶à×Ö½Ú×Ö·û¼¯ºÍÓÐÌØÊâÅÅÐò¹æÔòµÄ×Ö·û¼¯)¡£
·þÎñÆ÷Æô¶¯Ê±£¬Ê¹ÓÃĬÈÏ×Ö·û¼¯£¬ÈçÐèÖ¸¶¨ÁíÍâµÄ×Ö·û¼¯£¬ÐèÓÃ--default-character-setÑ¡ÏîÖ¸Ã÷¡£
ÔÚMySQL 4.1ÒÔǰ£¬Èç¹ûÔÚ´´½¨ºÃÊý¾Ý±íºó¸Ä±ä·þÎñÆ÷µÄĬÈÏ×Ö·û¼¯£¬¾ÍÐè¶ÔË÷ÒýÖØÐÂÅÅÐò²ÅÄܱ£Ö¤Ë÷Òý¼üÖµÄܹ»ÕýÈ··´Ó³³öÊý¾Ý±í¼Ç¼ÔÚÐÂ×Ö·û¼¯ÏµÄÅÅÁÐ˳Ðò¡£ÖØÐÂÅÅÐòµÄ²Ù×÷ÃüÁîÈçÏ£º
% myisamchk --recover --quick --set-character-set=gb2312 #ÔÚÖ´ÐиÃÓï¾äÐè¹Ø±Õ·þÎñÆ÷£¬ÊÊÓÃÓÚMyISAMÊý¾Ý±í Ò²¿ÉÓ㺠% mysqlcheck --repair --quick #²»Ðè¹Ø±Õ·þÎñÆ÷£¬ÊÊÓÃÓÚ¸÷ÖÖÊý¾Ý±í »òÕßÓ㺠mysql> REPLACE TABLE ... QUICK£»
ÔÚ¿Í»§¶Ë£¬¿ÉÓÃ--default-character-setÑ¡ÏîÖ¸¶¨¿Í»§³ÌÐòʹÓõÄ×Ö·û¼¯¡£--character-sets-dirÑ¡Ïî¿ÉÖ¸³ö×Ö·û¼¯ÎļþµÄ°²×°Ä¿Â¼¡£
Éý¼¶Êý¾Ý±íµ½4.1£¬Ö§³Ö¶à×Ö·û¼¯Êý¾Ý±í¡£²½ÖèÈçÏ£º
ÓÃmysqldump³ÌÐò±¸·ÝÊý¾Ý¿â£º
% mysqldump -p -u root --all-databases --opt > dumpfile.sql --all-databasesÑ¡ÏîµÄ×÷ÓÃÊÇת´¢ËùÓÐÊý¾Ý¿â£» --optÑ¡ÏîµÄ×÷ÓÃÊǶÔת´¢Îļþ½øÐÐÓÅ»¯¡£
¹Ø±Õ·þÎñÆ÷£¬Éý¼¶MySQL·þÎñÆ÷Èí¼þµ½4.1°æ¡£
Óñ¸·ÝÎļþÖØÐ¼ÓÔØÊý¾Ý±í£º
% mysql -p -u root < dumpfile.sql
ÕâÑù£¬×Ö·û¼¯ÐÅÏ¢¾Í±»·ÖÅ䵽ÿһ¸öÊý¾ÝÁÐÖУ¬´Ëºó£¬¼´Ê¹·þÎñÆ÷¸Ä±äÁËĬÈϵÄ×Ö·û¼¯£¬¸÷Êý¾ÝÁеÄ×Ö·û¼¯Ò²²»»á¸Ä±ä¡£µ±ÒÔºóÐÞ¸Äij¸öÊý¾ÝÁеÄ×Ö·û¼¯Ê±£¬·þÎñÆ÷»á×Ô¶¯ÖØË÷Òý£¬ÒÔ·´Ó³×îб仯¡£
ÅäÖÃInnoDB±í¿Õ¼ä¡£InnoDB±í¿Õ¼äÔÚÂß¼ÉÏÊÇÒ»¸öÁ¬½ÓµÄ´æ´¢ÇøÓò£¬µ«Êµ¼ÊÉÏÊÇÓÉÒ»¸ö»ò¶à¸ö´ÅÅÌÎļþ×é³É¡£ÕâЩÎļþ¿ÉÒÔÊÇÆÕͨµÄÎļþ£¬Ò²¿ÉÒÔÊÇÒ»¸öδ¸ñʽ»¯µÄÔʼӲÅÌ·ÖÇø¡£InnoDB±í¿Õ¼äͨ¹ýһϵÁеÄÅäÖÃÑ¡ÏîÀ´ÉèÖã¬ÆäÖÐ×îÖØÒªµÄÓÐÒÔÏÂÁ½¸ö£º
Ϊȷ±£·þÎñÆ÷ÿ´ÎÆô¶¯Ê±¶¼Äܵ÷ÓÃͬÑùµÄÑ¡ÏInnoDBµÄÑ¡Ïî×îºÃ´æ·Åµ½Ñ¡ÎļþÖС£ÏÂÃæÊÇÒ»¸öÀý×Ó£º
innodb_data_home_dir = innodb_data_file_path=/usr/loca/mysql/data/idbdata1:10M:autoextend:max:100M ˵Ã÷£º InnoDB±í¿Õ¼äÎļþĬÈÏ´æ·Åµ½ÁËMySQLµÄÊý¾ÝĿ¼ÖУ¬Ãû×Ö½Ðidbdata1£» Îļþ³¤¶ÈΪ10M£» ¿É×Ô¶¯À©Õ¹£¬ÒÔ8MΪ²½³¤À©Õ¹£¬ÈçÓжà¸öÊý¾ÝÎļþ£¬Ö»ÔÊÐí×îºóÒ»¸öÎļþ¿É×Ô¶¯À©Õ¹£» ¹æ¶¨ÁË×î´óµÄ¿ÉÀ©Õ¹³ß´çΪ100M¡£
innodb_data_home_dir£¬ÉèÖÃInnoDB±í¿Õ¼ä¸÷×é³ÉÎļþµÄ¸¸Ä¿Â¼£¬Èç¹ûûÓÐÖ¸³ö£¬ÔòĬÈÏÊÇMySQLµÄÊý¾ÝĿ¼¡£
innodb_data_file_path£¬ÃèÊöInnoDBÖ÷Ŀ¼Öи÷ÓйØÎļþ£¬°üÀ¨ÎļþÃû£¬Îļþ³¤¶ÈºÍһЩѡÏî¡£¸÷ÎļþÒԷֺŷָô£¬¸÷×é³ÉÎļþ³¤¶ÈÖÁÉÙΪ10M¡£
°ÑÑ¡ÏîдÈëÑ¡ÏîÎļþºó£¬Æô¶¯·þÎñÆ÷¾Í¿É×Ô¶¯´´½¨ºÍ³õʼ»¯InnoDB±í¿Õ¼ä¡£
ÀûÓÃÔʼ´ÅÅÌ·ÖÇø×÷ΪInnoDB±í¿Õ¼ä¿É´´½¨Ò»¸ö·Ç³£´óµÄ±í¿Õ¼ä£¬²»ÊܲÙ×÷ϵͳµ¥Îļþ×î´óÈÝÁ¿µÄÏÞÖÆ¡£²¢ÇÒÄÜÓÐЧ¼õÉÙ´ÅÅÌË鯬µÄ²úÉú¡£ÒªÊ¹ÓÃÔʼ´ÅÅÌ·ÖÇø£¬Ðè×÷ÈçÏÂÅäÖãº
Ê×ÏÈ£¬Òª½øÐгõʼ»¯£¬ÔÚÑ¡ÏîÎļþµÄ[mysqld]ÖÐÅäÖãº
innodb_data_home_dir= innodb_data_file_path=/dev/hda1:10Gnewraw #³õʼ»¯/dev/hda1Õâ¸ö10GÈÝÁ¿µÄ·ÖÇø
Æô¶¯·þÎñÆ÷£¬·þÎñÆ÷»á¶ÔÕâ¸ö10GµÄ·ÖÇø½øÐгõʼ»¯¡£
½Ó×Å£¬¹Ø±Õ·þÎñÆ÷£¬ÐÞ¸ÄÅäÖÃÎļþ£¬°Ñnewraw¸ÄΪraw£¬È磺
innodb_data_home_dir= innodb_data_file_path=/dev/hda1:10Graw
ÖØÐÂÆô¶¯·þÎñÆ÷£¬MySQL¾Í»áÒÔ¶Á/д·½Ê½Ê¹Óøñí¿Õ¼äÁË¡£ÔÚwindowsƽ̨ÉÏÅäÖÃInnoDB±í¿Õ¼äʱ£¬windows·¾¶ÃûÖеķ´Ð±¸Ü¿ÉÒÔд³Éµ¥¸öµÄбÏß×Ö·û(/)¡£Ò²¿Éд³ÉÁ½¸ö·´Ð±¸Ü(\\)¡£È磺
innodb_data_home_dir= innodb_data_file_path=c:/mysql/data/ibdata1:10M;d:/ibdata2:20M
ĬÈÏÇé¿öÏ£¬InnoDBµÄÈÕÖ¾Îļþ»á´æ´¢ÔÚMySQLµÄÊý¾ÝĿ¼£¬ÎļþÃûÒÔib¿ªÍ·¡£Ò»µ©Íê³ÉInnoDB±í¿Õ¼äµÄ³õʼ»¯£¬¾Í²»Äܸıä×é³ÉÎļþµÄ´óС£¬µ«¿Éͨ¹ýÌí¼ÓÊý¾ÝÎļþ»òÉèÖÃ×Ô¶¯À©Õ¹À´Ôö¼Ó±í¿Õ¼äÈÝÁ¿¡£ÈçÐèͨ¹ýÔö¼ÓÎļþµÄ·½·¨À©´ó±í¿Õ¼äµÄÈÝÁ¿£¬¿É°´ÒÔϲ½Öè½øÐУº
¹Ø±ÕÕýÔÚÔËÐеÄMySQL·þÎñÆ÷
Èç¹ûInnoDB±í¿Õ¼äµÄ×îºóÒ»¸ö×é³ÉÎļþÊÇ¿É×ÔÀ©Õ¹µÄ£¬¾ÍÒªÏȰÑËü¸Ä±ä³ÉÒ»¸ö¹Ì¶¨³¤¶ÈÎļþ²ÅÄܰÑÁíÒ»¸öÎļþÌí¼Óµ½ËüºóÃæ¡£·½·¨ÊÇÏȼÆËã³ö¸ÃÎļþµÄ½üËÆ´óС£¬ÖØÐÂÉèÖã¬È磺
innodb_data_file_path=ibdata1:100M:autoextend ¸Ä³É£º innodb_data_file_path=ibdata1:150M
°ÑеÄ×é³ÉÎļþÌí¼Óµ½ÎļþÇåµ¥µÄĩ⣬¸ÃÎļþ¿ÉÒÔÊÇÆÕͨÎļþ£¬Ò²¿ÉÒÔÊÇÒ»¸öÔʼӲÅÌ·ÖÇø¡£
ÖØÆô·þÎñÆ÷¡£
»¹ÓÐÒ»ÖÖ·½·¨ÖØÐÂÅäÖÃInnoDB±í¿Õ¼ä£¬¾ÍÊÇÏȱ¸·Ý£¬ÔÙÖØÐÂÅäÖã¬×îºóÖØÐ¼ÓÔØ±¸·Ý¡£¾ßÌå²½ÖèÈçÏ£º
ʹÓÃmysqldump±¸·ÝÕû¸öInnoDBÊý¾Ý¿â£»
¹Ø±Õ·þÎñÆ÷£¬É¾³ýËùÓÐInnoDB±í¿Õ¼ä¡¢InnoDBÈÕÖ¾Îļþ ¼°InnoDBÊý¾Ý±íµÄ.frmÎļþ£»
ÖØÐÂÅäÖÃInnoDB±í¿Õ¼ä£»
ÅäÖÃÍê³Éºó£¬Óñ¸·ÝÎļþÖØÔØÊý¾Ý£¬Éú³ÉеÄInnoDBÊý¾Ý±í¡£
MySQL·þÎñÆ÷ΪÎÒÃÇÌṩÁ˷ḻµÄ²ÎÊý£¬ÒÔµ÷Õû·þÎñÆ÷Âú×㲻ͬ»·¾³µÄÒªÇó¡£ÏÂÃæ·Ö±ðÌÖÂÛÒ»ÏÂÕâЩ²ÎÊý£º
·þÎñÆ÷²ÎÊý±äÁ¿µÄÉèÖá£MySQL·þÎñÆ÷²ÎÊý¿ÉÔÚ·þÎñÆ÷Æô¶¯Ê±ÉèÖã¬ÔÚMySQL4.0.3¼°ÒÔºóµÄ°æ±¾ÖУ¬ÓÐЩ²ÎÊýÒ²ÔÊÐíÔÚÏßÉèÖá£ÔÚMySQL4.0.2¼°ÒÔºóµÄ°æ±¾À¿ÉÒÔ°ÑÒ»¸ö±äÁ¿ÃûÊÓΪһ¸öÑ¡ÏîÃûÀ´ÉèÖá£ÈçÊý¾Ý±í»º³åÇøµÄ³ß´çÓÉ·þÎñÆ÷²ÎÊýtalbe_cacheÀ´ÉèÖá£Èç¹ûÐè°ÑËüÉèÖÃΪ128,Ôò¿ÉÒÔÔÚÃüÁîÐÐÀïÔö¼Ó
--table_cache=128
Ò²¿ÉÔÚÑ¡ÏîÎļþÖÐÉèÖãº
[mysqld] table_cache=128
ÔÚÃüÁîÐÐÑ¡ÏîÖÐ'_'¿Éд'-'£¬±ä³É£º
--table-cache=128 #ÕâÖÖд·¨¸üÏñÒ»¸ö±ê׼ѡÏî
»¹ÓÐÒ»ÖÖÊÇʹÓÃ--set-variable»ò-OÑ¡ÏÈ磺
--set-variable=table_cache=128 or -O table_cache=128 ÔÚÑ¡ÏîÎļþÖпÉд³É£º [mysqld] set-variable=table_cache=128
·þÎñÆ÷²ÎÊý·ÖΪȫ¾Ö¼¶ºÍ»á»°¼¶Á½¸ö¼¶±ð¡£È«¾Ö¼¶²ÎÊý½«Ó°ÏìÕû¸ö·þÎñÆ÷£¬»á»°¼¶²ÎÊýÔòÖ»Ó°Ïìij¸ø¶¨¿Í»§Á¬½ÓÉϵŤ×÷¡£Èç¹ûij¸ö±äÁ¿Í¬Ê±´æÔÚÓÚÁ½¸ö¼¶±ð£¬Ôò·þÎñÆ÷ÔÚ¿Í»§½¨Á¢Á¬½ÓʱÓÃÈ«¾Ö±äÁ¿µÄֵȥ³õʼ»¯ÏàÓ¦µÄ»á»°¼¶²ÎÊý£¬Ò»µ©¿Í»§Á¬½Ó½¨Á¢ÆðÀ´ºó£¬¶ÔÈ«¾Ö²ÎÊýËù×÷µÄÐ޸IJ»»áÓ°Ïìµ½ÏàÓ¦µÄ»á»°¼¶²ÎÊýµ±Ç°Öµ¡£ÉèÖÃÈ«¾Ö²ÎÊýºÍ»á»°¼¶²ÎÊýµÄÓï¾ä£º
È«¾Ö¼¶£º mysql> SET GLOBAL variable = value; mysql> SET @@GLOBAL.variable = value; »á»°¼¶£º mysql> SET SESSION variable = value; mysql> SET @@SESSION.variable = value; ĬÈϲ»´ø¼¶±ðÏÞ¶¨·ûµÄSETÓï¾äÐ޸ĵIJÎÊýÊô»á»°¼¶£¬È磺 mysql> SET variable = value; mysql> SET @@variable = value; ¿ÉÓÃÒ»ÌõSETÓï¾äÉèÖöà¸ö²ÎÊý£¬²ÎÊý¼äÓöººÅ·Ö¸ô£¬È磺 SET SESSION variable = value1,value2,value3;
SESSIONºÍLOCALÊÇͬÒåÓ¿ÉÓÃLOCAL´úÌæSESSION£¬È磺@@LOCAL
¾ß±¸SUPERȨÏÞ²ÅÄÜÉèÖÃÈ«¾Ö²ÎÊý£¬ÐÂÉèÖÃÖµµÄЧÁ¦½«³ÖÐøµ½¸Ã²ÎÊý±»ÔÙ´ÎÐ޸Ļò·þÎñÆ÷Í˳ö¡£ÉèÖûỰ¼¶²ÎÊý²»ÓÃÌØÊâµÄȨÏÞ£¬ÐÂÉèÖÃÖµµÄЧÁ¦½«³ÖÐøµ½¸ÃÖµ±»ÔÙ´ÎÐ޸ĻòÁ¬½Ó¶Ï¿ª¡£ÏÔʾ²ÎÊýµÄÓï¾äÈçÏ£º
SHOW GLOBAL VARIABLES; SHOW GLOBAL VARIABLES LIKE 'TEST'; SHOW SESSION VARIABLES; SHOW SESSION VARIABLES LIKE 'TEST'; Èç²»´øÏÞ¶¨·û£¬Ôò·µ»Ø»á»°¼¶²ÎÊý£¬Èç»á»°¼¶²ÎÊý²»´æÔÚÔò·µ»ØÈ«¾Ö¼¶²ÎÊý¡£ Ò²¿ÉÓÃÃüÁîÐз½Ê½ÏÔʾ·þÎñÆ÷²ÎÊý±äÁ¿£¬È磺 % mysqladmin variables
ÏÂÃæ½éÉÜһЩMySQL·þÎñÆ÷ͨÓõIJÎÊý±äÁ¿£º
back_log£¬µ±¶à¸ö¿Í»§Í¬Ê±Á¬½Ó·þÎñÆ÷ʱ£¬¿Í»§´¦Àí¹ý³ÌÐè½øÈëÒ»¸ö¶ÓÁÐÅŶӵȴý·þÎñÆ÷´¦Àí¡£¸ÃÖµ¶¨Òå·þÎñÆ÷µÈ´ý´¦Àí¶ÓÁг¤¶ÈµÄ×î´óÖµ£¬Èç¹ûÕ¾µã·ÃÎÊÁ¿´ó£¬Ðè¼Ó´ó¸ÃÖµ¡£
delayed_queue_size£¬ÔÚʵ¼Ê²åÈëÊý¾Ý±íǰ£¬À´×Ôinsert delayedÓï¾äµÄÊý¾ÝÐÐ»á½øÈëÒ»¸ö¶ÓÁеȴý·þÎñÆ÷´¦Àí¡£¸ÃÖµ¶¨Òå¸Ã¶ÓÁÐÄÜÈÝÄɵÄÊý¾ÝÐеÄ×î´ó¸öÊý¡£µ±¶ÓÁÐÂúʱ£¬»á×èÈûºóÐøµÄÓï¾ä¡£¼Ó´ó¸ÃÖµÄÜÌá¸ßinsert delayedÓï¾äµÄÖ´ÐÐËÙ¶È¡£
flush_time£¬×Ô¶¯´æÅ̼ä¸ô¡£Èç¹ûϵͳ¾³£ËÀ»ú»òÖØÆô£¬°ÑÕâ¸ö±äÁ¿ÉèÖÃΪһ¸öÊʵ±µÄ·ÇÁãÖµ£¬Ê¹MySQL·þÎñÆ÷ÿ¸ôflush_time³ÆÈ¥Ë¢ÐÂÒ»´ÎÊý¾Ý±í»º³åÇø£¬½«ÆäÖеÄÐÅϢдÈë´ÅÅÌ¡£Õ⽫µ¼ÖÂϵͳÐÔÄÜϽµ£¬µ«¿É¼õÉÙÊý¾Ý±í±»ÆÆ»µ»ò¶ªÊ§Êý¾ÝµÄ¸ÅÂÊ¡£ÔÚÃüÁîÐÐÉÏÓÃ--flushÑ¡ÏîÆô¶¯·þÎñÆ÷¿ÉʹÊý¾Ý±íÔÚÿ´ÎÐ޸ĺó±»×Ô¶¯´æÅÌ¡£
key_buffer_size£¬ÓÃÀ´ÈÝÄÉË÷Òý¿éµÄ»º³åÇøµÄ³¤¶È¡£¼Ó´ó¸ÃÖµ¿É¼Ó¿ìË÷Òý´´½¨ºÍÐ޸IJÙ×÷µÄËÙ¶È£¬¸ÃË÷Òý»º³åÇøÔ½´ó£¬ÔÚÄÚ´æÖÐÕÒµ½¼üÖµµÄ¿ÉÄÜÐÔ¾ÍÔ½´ó£¬¶ÁÅÌ´ÎÊý¾ÍÔ½ÉÙ¡£MySQL3.23ǰµÄ°æ±¾À¸Ã²ÎÊý½Ðkey_buffer¡£3.23°æ±¾Ö®ºó£¬Á½Öֽз¨¶¼¿ÉÒÔ¡£
max_allowed_packet£¬·þÎñÆ÷Óë¿Í»§³ÌÐòÖ®¼äͨÐÅʱʹÓõĻº³åÇøÔÚ×î´óÖµ¡£MySQL 4°æ±¾Ö®Ç°£¬¸Ã×î´óÖµ¿ÉÈ¡16MB£¬MySQL 4°æ±¾ÒԺ󣬸ÃÖµµÄ×î´óÖµÊÇ1GB¡£Èç¹û¿Í»§¶ËÓë·þÎñÆ÷Ðè´«ËÍ´óÈÝÁ¿µÄÊý¾Ý£¬ÈçBLOB»òTEXTÖµ£¬¾ÍÒª¼Ó´ó¸ÃÖµ¡£¿Í»§¶ËÒ²ÓÐÒ»¸öͬÃûµÄ±äÁ¿£¬Ä¬ÈÏÊÇ16MB£¬¸ÃÖµÒ²Òª¼Ó´ó¡£¿Í»§¶ËµÄÆô¶¯ÃüÁîΪ£º
% mysql --set-variable=max_allowed_packet=64M
max_connections£¬ÔÊÐíͬʱ´ò¿ªµÄÁ¬½ÓÊý£¬Èç¹ûÕ¾µã·±Ã¦£¬Ðè¼Ó´ó¸ÃÖµ¡£
table_cache£¬Êý¾Ý±í»º´æÇøµÄ³ß´ç¡£¼Ó´ó¸ÃÖµ¿Éʹ·þÎñÆ÷Äܹ»Í¬Ê±´ò¿ª¸ü¶àµÄÊý¾Ý±í£¬´Ó¶ø¼õÉÙÎļþ´ò¿ª/¹Ø±Õ²Ù×÷µÄ´ÎÊý¡£
×¢Ò⣺¼Ó´ómax_connectionsºÍtable_cache²ÎÊýµÄÖµ£¬»áʹ·þÎñÆ÷Õ¼Óøü¶àµÄÎļþÃèÊö·û¡£ÔËÐжà¸ö·þÎñÆ÷¿ÉÈÆ¹ý¸ÃÏÞÖÆ¡£¶ÔһЩ·ÖÅä¸øÃ¿¸ö¿Í»§µÄ×ÊÔ´±äÁ¿£¬ÉèÖÃʱ²»Äܹý´ó£¬ÒòΪµ±Á¬½ÓÊý¿ìËÙÔö³¤Ê±»áºÜ¿ìºÄ¾¡·þÎñÆ÷µÄ×ÊÔ´£¬Ôì³É·þÎñÆ÷ÐÔÄÜϽµ¡£
InnoDB´¦Àí³ÌÐò±äÁ¿£º
innodb_buffer_pool_size£¬InnoDBÊý¾Ý¿â»º³å³ØµÄ´óС£¬Èç¹ûÓÐ×ã¹»µÄÄڴ棬¿É°Ñ¸ÃÖµÉèÖõôóЩÒÔ¼õÉÙ¶ÁÅ̲Ù×÷¡£
innodb_log_file_sizeºÍinnodb_log_files_in_group£¬Ç°ÕßÉèÖÃÈÕÖ¾ÎļþµÄ³¤¶È£¬ºóÕßÉèÖÃÈÕÖ¾ÎļþµÄ¸öÊý¡£InnoDBÈÕÖ¾ÎļþµÄ×ܳ¤¶ÈÊÇÁ½Õߵij˻ý£¬ËüµÄ×ܳ¤¶È²»µÃ³¬¹ý4GB¡£
ÐèÔËÐжà¸ö·þÎñÆ÷µÄÔÒòÓкܶ࣬±ÈÈçÉÏÃæÌáµ½µÄ¿ÉÈÆ¹ý×î´óÎļþÃèÊö·ûµÄÏÞÖÆ£¬»¹ÓÐÊǽøÐа汾²âÊÔºÍÌṩרÓ÷þÎñµÈ¡£ÔËÐжà¸ö·þÎñÆ÷±ÈÔËÐе¥¸ö·þÎñÆ÷¸´ÔӺܶ࣬Ðè×¢ÒâÒÔÏÂÎÊÌ⣺
ÔÚ°²×°²»Í¬°æ±¾µÄ³ÌÐòʱ£¬Ðè·Ö¿ªÄ¿Â¼´æ·Å³ÌÐòºÍÊý¾ÝĿ¼¡£Èç¹ûͬһ°æ±¾µÄ·þÎñÆ÷Èí¼þ£¬Ôò³ÌÐòĿ¼¿ÉÒ»Ñù£¬µ«Êý¾ÝĿ¼ÔòÒª²»Í¬¡£¿ÉÓÃ--basedir=dir_nameºÍ--datadir=dir_nameÁ½¸öÆô¶¯Ñ¡ÏîָʱÕâÁ½¸öĿ¼¡£
ҪΪ²»Í¬µÄ·þÎñÆ÷Ö¸¶¨²»Ê±µÄ--port=port_name(TCP/IP¼àÌý¶Ë¿Ú)£¬--socket=file_name(Ì×½Ó×ÖÎļþÃû)ºÍ--pid-file=file_name(½ø³ÌIDÎļþ)Öµ¡£
Èç¹û¼¤»îÁËÈÕÖ¾¹¦ÄÜ£¬¾ÍҪΪ²»Í¬µÄ·þÎñÆ÷Ö¸¶¨²»Í¬µÄÈÕÖ¾ÎļþÃû¡£
ÔÚWindowsƽ̨ÉÏ£¬±»°²×°Îª·þÎñµÄ¶à¸öMySQL·þÎñÆ÷±ØÐëÓв»Í¬µÄ·þÎñÃû¡£
¶à·þÎñÆ÷»·¾³ÏÂÑ¡ÏîÎļþµÄÅäÖ÷½·¨£º
ʹÓÃ--defaults-fileÑ¡ÏîÖ¸¶¨Ã¿¸öÑ¡ÏîÎļþ£¬ÕâÑù£¬Ã¿¸ö·þÎñÆ÷¾Í²»»áÈ¥¶Á/etc/my.cnfÕâЩÅäÖÃÎļþ£¬¶ø»áʹÓÃÄãËùÖ¸¶¨µÄÅäÖÃÎļþ¡£
¿É°ÑһЩ¹«¹²µÄÑ¡Ïî·Åµ½/etc/my.cnfÎļþÀÔÙÓÃ--defaults-extra-fileÑ¡ÏîÖ¸³öÌØ¶¨·þÎñÆ÷µÄÌØ¶¨Ñ¡ÏîÎļþ¡£ÕâÑù¾Í²»ÓÃÔÚËùÓеÄÅäÖÃÎļþÊ±ÖØ¸´¹«¹²µÄÑ¡Ïî¡£
ÓÃmysql_multi½Å±¾Æô¶¯·þÎñÆ÷£¬ËüÔÊÐíÎÒÃǰÑËùÓеÄÑ¡Ïî·Åµ½Í¬Ò»¸öÑ¡ÏîÎļþÀÿһ¸ö·þÎñÆ÷¶ÔÓ¦¸ÃÎļþÖеÄÒ»¸öÑ¡Ïî×é¡£
ÏÂÃæ½éÉÜÓÃmysql_multi½Å±¾Æô¶¯¶à·þÎñÆ÷µÄ·½·¨¡£
Ϊÿ¸ö·þÎñÆ÷±àÒ»¸ö±àºÅxxx£¬¶ÔӦѡÏîÎļþµÄ[mysqldxxx]Ñ¡Ïî×é¡£mysql_multi±¾ÉíÒªÓõ½µÄÑ¡Ïî¿É·Åµ½[mysqld_multi]Àï¡£ÕâÑù/etc/my.cnfÑ¡ÏîÅäÖÃÎļþ¿´ÆðÀ´¾ÍÏóÏÂÃæÕâÑù£º
[mysqld001] basedir=/usr/local/mysql/001 datadir=/usr/local/mysql/001/data mysqld=/usr/local/mysql/001/bin/mysqld_safe socket=/usr/local/mysql/001/mysql.sock port=3306 local-infile=1 user=mysqladm log=log log-update=update-log innodb_data_file_path=ibdata1:10M [mysqld002] basedir=/usr/local/mysql/002 datadir=/usr/local/mysql/002/data mysqld=/usr/local/mysql/002/bin/mysqld_safe socket=/usr/local/mysql/002/mysql.sock port=3307 local-infile=1 user=mysqladm log=log log-update=update-log innodb_data_file_path=ibdata1:10M ...
ÅäÖúÃÑ¡ÏîÎļþºó£¬¾Í¿ÉÓÃÒÔÏÂÃüÁîÆô¶¯·þÎñÆ÷£º
% mysqld_multi --no-log start 001,002 #Æô¶¯001ºÍ002Á½¸ö·þÎñÆ÷£¬²¢°ÑÆô¶¯ÐÅÏ¢·¢Ë͵½¿ØÖÆÌ¨£¬Ò²¿ÉÓÃÇø¼äµÄÐÎʽ¸ø³ö·þÎñÆ÷±àºÅ
ÓÃÒÔÏÂÃüÁî¿É²é¿´·þÎñÆ÷״̬£º
% mysqld_multi --no-log --user=root --password=password report 001
¿ÉÓÃÒÔÏÂÃüÁîÍ£Ö¹MySQL·þÎñÆ÷£º
% mysqld_multi --no-log --user=root --password=password stop 001
ÔÚwindowsƽ̨ÏÂÔËÐжà¸öMySQL·þÎñÆ÷µÄ·½Ê½ÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÔËÐÐͬһ¸öMySQL³ÌÐòµÄÁ½¸öʵÀý£¬Ò»ÖÖÊÇÔËÐжà¸öwindows·þÎñ£¬ÏÂÃæ·Ö±ð½éÉÜ£º
µÚÒ»ÖÖÇé¿öÐèÉèÖÃÁ½¸öÑ¡ÏîÎļþ£¬Ö¸¶¨²»Í¬µÄÊý¾ÝĿ¼£¬È磺
c:\mysql\my.cnf1 [mysqld] basedir=c:/mysql datedir=c:/mysql/data1 port=3306 c:\mysql\my.cnf2 [mysqld] basedir=c:/mysql datadir=c:/mysql/data2 port=3307
ÔÚÆô¶¯·þÎñÆ÷ʱ£¬ÓÃ--defaults-fileÑ¡ÏîÖ¸³öÑ¡ÏîÎļþ¼´¿É¡£È磺
c:\> mysqld --defaults-file=c:\mysql\my.cnf1 c:\> mysqld --defaults-file=c:\mysql\my.cnf2
ÔÚMySQL 4.0.2°æ±¾¿ªÊ¼£¬¿ÉÒÔ°ÑMySQL°²×°ÎªÒ»¸ö·þÎñ£¬²¢¿ÉÖ¸¶¨Ò»¸ö·þÎñÃû£¬È磺
c:\> mysql-nt --install service_name ÔÚMySQL 4.0.3¿ªÊ¼£¬°²×°·þÎñ»¹Ö§³Ö--defaults-file=file_nameÑ¡Ïî
ÕâÑù£¬ÎÒÃǾͿɰÑMySQL°²×°ÎªÒ»ÏµÁв»Í¬µÄ·þÎñ£¬Èç¹û²»Ö¸¶¨service_name£¬Ôò°²×°µÄ·þÎñÃûĬÈÏΪMySql£¬Èç¹ûÖ¸¶¨service_name£¬Ôò°²×°µÄ·þÎñÃûΪָ¶¨µÄservice_name£¬²¢¶ÔӦѡÏîÎļþÖеÄ[service_name]Ñ¡Ïî×é¡£ÒÔĬÈÏ·þÎñÃûÔËÐеķþÎñÆ÷»¹Ö§³ÖÒ»¸öÃûΪMySqlµÄÃüÃû¹ÜµÀ£¬¶øÃ÷È·¸ø³ö·þÎñÃûµÄ·þÎñÆ÷½«Ö»¼àÌýTCP/IPÁ¬½Ó¶ø²»Ö§³ÖÃüÃû¹ÜµÀ--³ý·Ç»¹ÓÃsocketÑ¡ÏîÃ÷È·Ö¸¶¨Ò»¸öÌ×½Ó×ÖÎļþ¡£
ÒÆ³ý·þÎñÐèÏÈÓÃmysqladmin shutdownÃüÁîÍ£µô·þÎñÆ÷£¬ÔÙÖ´ÐÐÒÔÏÂÃüÁ
c:\> mysql-nt --remove #ÒÆ³ýĬÈϵķþÎñ c:\> mysql-nt --remove service_name #ÒÆ³ýÖ¸¶¨·þÎñ
ͨ¹ý¾µÏñ»úÖÆ¿É°ÑÊý¾Ý´ÓÒ»¸öµØ·½¸´ÖƵ½ÁíÒ»¸öµØ·½£¬²¢ÄÜʵÏÖͬ²½Á½¸ö»ò¶à¸öµØ·½µÄÊý¾Ý¡£MySQL·þÎñÆ÷Ò²Ö§³Ö¾µÏñ£¬´óÌá¸ßÊý¾ÝµÄ°²È«ÐÔºÍÎȶ¨ÐÔ¡£ÏÂÃæ½éÉÜÒ»ÏÂMySQLÊý¾ÝÖеľµÏñ»úÖÆ£º
ÔÚ¾µÏñ¹ØÏµÖУ¬Ò»¸öMySQL·þÎñÆ÷°çÑÝÖ÷·þÎñÆ÷½ÇÉ«£¬ÁíÍâÒ»¸ö»ò¶à¸ö·þÎñÆ÷°çÑÝ´Ó·þÎñÆ÷½ÇÉ«£¬´Ó·þÎñÆ÷ÖеÄÊý¾ÝºÍÖ÷·þÎñÆ÷ÖеÄÊý¾ÝÍêȫһÑù¡£
ÔÚ¾µÏñ½¨Á¢Ö®Ç°£¬Ö÷·þÎñÆ÷ºÍ´Ó·þÎñÆ÷±ØÐë½øÐÐÒ»´ÎÍêȫͬ²½¡£Í¬²½Ö®ºó£¬ÔÚÖ÷·þÎñÆ÷ÉÏËù×öµÄ²Ù×÷½«»áÔÚ´Ó·þÎñÆ÷ÉÏÔÙʵÏÖ£¬Ö÷·þÎñÆ÷ÉϵIJÙ×÷²»ÊÇÖ±½Ó×÷ÓÃÓÚ´Ó·þÎñÆ÷Éϵġ£
¸ºÔðÔÚÖ÷¡¢´Ó·þÎñÆ÷ÉÏ´«Êä¸÷ÖÖÐ޸͝×÷µÄý½éÊÇÖ÷·þÎñÆ÷ÉϵĶþ½øÖƱä¸üÈÕÖ¾£¬¸ÃÈÕÖ¾¼Ç¼×ÅÖ÷·þÎñÆ÷ÉÏËùÓеIJÙ×÷¶¯×÷¡£Òò´Ë£¬Ö÷·þÎñÆ÷±ØÐ뼤»î¶þ½øÖÆÈÕÖ¾¹¦ÄÜ¡£
´Ó·þÎñÆ÷±ØÐëÓÐ×ã¹»µÄȨÏÞ´ÓÖ÷·þÎñÆ÷ÉϽÓÊÕ¶þ½øÖÆÈÕÖ¾Îļþ¡£¾µÏñе÷ÐÅÏ¢¼Ç¼´Ó·þÎñÆ÷µÄ½øÕ¹Çé¿ö£¬°üÀ¨£¬´Ó·þÎñÆ÷ÕýÔÚ¶ÁÈ¡µÄ¶þ½øÖƱä¸üÈÕÖ¾ÎļþÃûºÍËüÔÚ¸ÃÎļþÀïµÄµ±Ç°¶ÁдλÖá£
ÿ¸öÖ÷·þÎñÆ÷¿ÉÒÔÓжà¸ö´Ó·þÎñÆ÷£¬µ«Ã¿¸ö´Ó·þÎñÆ÷Ö»ÄÜÓÐÒ»¸öÖ÷·þÎñÆ÷¡£µ«MySQL·þÎñÆ÷ÔÊÐí°ÑÒ»¸ö´Ó·þÎñÆ÷×÷ΪÁíÒ»¸ö´Ó·þÎñÆ÷µÄÖ÷·þÎñÆ÷£¬ÕâÑù¾Í¿É´´½¨Ò»¸ö¾µÏñ·þÎñÆ÷Á´¡£
¾µÏñ»úÖÆÔÚMySQLÖл¹ÊÇÒ»¸öÐÂÉúÊÂÎ×îÔçʵÏÖÓÚ3.23.15°æ¡£¸÷°æ±¾¼äµÄ¾µÏñÄÜÁ¦ÓвîÒ죬һ°ãÀ´Ëµ£¬½¨Òé´ó¼Ò¾¡Á¿Ê¹ÓÃ×îеİ汾£¬ÏÂÃæÁоÙÁ˲»Í¬°æ±¾µÄMySQL·þÎñÆ÷ÔÚ¾µÏñ»úÖÆ·½ÃæµÄ¼æÈݹæÔò£º
3.23.xϵͳ°æ±¾µÄ´Ó·þÎñÆ÷²»ÄÜÓë4.xϵͳ°æ±¾µÄÖ÷·þÎñÆ÷ͨÐÅ¡£
4.0.0°æ±¾µÄ´Ó·þÎñÆ÷Ö»ÄÜÓë4.0.0°æ±¾µÄÖ÷·þÎñÆ÷ͨÐÅ¡£
4.0.1»ò¸ü¸ß°æ±¾µÄ´Ó·þÎñÆ÷¼ÈÄÜÓë3.23.xϵͳ°æ±¾µÄÖ÷·þÎñÆ÷ͨÐÅ£¬Ò²ÄÜÓë4.xϵͳ°æ±¾µÄÖ÷·þÎñÆ÷ͨÐÅ¡£µ«ºóÒ»ÖÖÇé¿öÒªÇóÖ÷·þÎñÆ÷µÄ°æ±¾ºÅµÈÓÚ»ò´óÓÚ´Ó·þÎñÆ÷µÄ°æ±¾ºÅ¡£
Ò»°ãÀ´Ëµ£¬½¨Òé×ñÑÒÔÏÂÔÔò£º
Òª¾¡¿ÉÄܵØÈÃÖ÷·þÎñÆ÷ºÍ´Ó·þÎñÆ÷¶¼Ê¹ÓÃͬһ°æ±¾ÏµÍ³¡£
ÔÚÑ¡¶¨ÏµÍ³ºó£¬¾¡Á¿Ê¹ÓøÃϵͳµÄ×îа汾¡£
½¨Á¢Ö÷´Ó¾µÏñ·þÎñÆ÷µÄ²½Ö裺
È·¶¨Ö÷´Ó·þÎñÆ÷µÄ¾µÏñIDºÅ£¬Ö÷´Ó·þÎñÆ÷µÄIDºÅ²»ÄÜÏàͬ¡£ÔÚÆô¶¯Ö÷´Ó·þÎñÆ÷ʱ£¬ÓÃ--server_idÆô¶¯Ñ¡Ïî¸ø³öÆäID¡£
´Ó·þÎñÆ÷±ØÐëÔÚÖ÷·þÎñÆ÷ÉÏÓÐÒ»¸ö¾ß±¸×ã¹»µÄȨÏÞµÄÕÊ»§£¬´Ó·þÎñÆ÷½«Ê¹ÓøÃÕÊ»§È¥Á¬½ÓÖ÷·þÎñÆ÷²¢ÇëÇóÖ÷·þÎñÆ÷°Ñ¶þ½øÖƱä¸üÈÕÖ¾·¢Ë͸øËü¡£¿ÉÓÃÒÔÏÂÃüÁî´´½¨Õâ¸öÕÊ»§£º
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_host' IDENTIFIED BY 'slave_pass'; #REPLICATIONȨÏÞÖ»MySQL4.0.2ºó°æ±¾£¬Ö®Ç°µÄ°æ±¾ÇëÓÃFILEȨÏÞ¡£
°ÑÖ÷·þÎñÆ÷ÉϵÄÊý¾Ý¿âÎļþ¿½±´µ½´Ó·þÎñÆ÷ÉÏÍê³É×î³õͬ²½¹¤×÷¡£Ò²¿ÉÓñ¸·ÝºóÔÙ¼ÓÔØµÄ·½·¨¡£ÔÚMySQL 4.0.0¼°ÒÔºó°æ±¾À»¹¿ÉÓÃÔÚÖ÷·þÎñÆ÷ÉÏÔËÐÐLOAD DATA FROM MASTERÓï¾äÀ´½¨Á¢´Ó·þÎñÆ÷¡£µ«ÓÐÔ¼ÊøÌõ¼þ£º
Êý¾Ý±íҪȫ²¿ÊÇMyISAM±í
Ϊ·¢³öÕâÌõÖ¸Áî¶øÔÚÁ¬½Ó´Ó·þÎñÆ÷ʱʹÓõÄÕÊ»§±ØÐëÓÐSUPERȨÏÞ¡£
´Ó·þÎñÆ÷ÓÃÀ´Á¬½ÓÖ÷·þÎñÆ÷µÄÕÊ»§±ØÐë¾ß±¸RELOADºÍSUPERȨÏÞ¡£×¢Ò⣬ÕâÊÇÒ»¸öÖ÷·þÎñÆ÷ÉϵÄÕÊ»§£¬¶øÓÃÀ´·¢³öLOAD DATA FROM MASTERÓï¾äµÄÕÊ»§ÊÇÒ»¸ö´Ó·þÎñÆ÷ÉϵÄÕÊ»§¡£
LOAD DATA FROM MASTERÓï¾äÔÚÖ´ÐÐʱÐèÉêÇëÒ»¸öÈ«¾ÖÐԵĶÁ²Ù×÷Ëø£¬Õâ¸öËøÔÚÓï¾äÖ´ÐÐÆÚ¼ä×èÈûÖ÷·þÎñÆ÷ÉÏÒ»ÇеÄд²Ù×÷¡£
ÎÞÂÛÓÃÄÄÖÖ·½·¨Í¬²½Êý¾Ý£¬¶¼ÒªÈ·±£ÔÚ¿ªÊ¼ÖÆ×÷±¸·Ýµ½¸øÖ÷·þÎñÆ÷ÖØÐÂÅäÖúöþ½øÖÆÈÕÖ¾¹¦ÄÜÕâ¶Îʱ¼ä£¬²»ÄÜÔÚÖ÷·þÎñÆ÷ÉÏ·¢ÉúÐ޸IJÙ×÷¡£
¹Ø±Õ·þÎñÆ÷¡£
¶ÔÖ÷·þÎñÆ÷µÄÅäÖýøÐÐÐÞ¸Ä--°ÑËüµÄ¾µÏñID¸æËßËü²¢¼¤»îÆä¶þ½øÖÆÈÕÖ¾¹¦ÄÜ¡£ÔÚÖ÷·þÎñÆ÷Òª¶ÁÈ¡µÄÑ¡ÏîÎļþÄÚÔö¼ÓÒÔÏÂÄÚÈÝ£º
[mysqld] server-id=master_server_id log-bin=binlog_name
ÖØÐÂÆô¶¯Ö÷·þÎñÆ÷£¬´ÓÏÖÔÚ¿ªÊ¼£¬Ëü½«°Ñ¿Í»§¶ÔÊý¾Ý¿âµÄÐ޸IJÙ×÷¼Ç¼µ½¶þ½øÖƱä¸üÈÕÖ¾Àï¡£Èç¹ûÔÚ´Ë֮ǰÒѾ¼¤»îÁ˶þ½øÖÆÈÕÖ¾¹¦ÄÜ£¬ÔòÒªÔÚÖØÆôǰ°Ñ¶þ½øÖƱä¸üÈÕÖ¾±¸·ÝÏÂÀ´£¬ÔÚÖØÆôºóÔÙ·¢Ò»ÌõRESET MASTERÓï¾äÈ¥Çå³ýÏÖÓеĶþ½øÖƱä¸üÈÕÖ¾¡£
¹Ø±Õ´Ó·þÎñÆ÷¡£
¶Ô´Ó·þÎñÆ÷½øÐÐÅäÖã¬Ê¹ËüÖªµÀ×ÔÒѵľµÏñID£¬µ½ÄÄÀïÈ¥ÕÒÖ÷·þÎñÆ÷ÒÔ¼°ÈçºÎÈ¥Á¬½ÓÖ÷·þÎñÆ÷¡£ÅäÖÃÄÚÈÝÈçÏ£º
[mysqld] server-id=slave_server_id master-host=master_host master-user=slave_user #ÔÚÖ÷·þÎñÆ÷ÉÏΪ´Ó·þÎñÆ÷½¨Á¢µÄÕÊ»§ msater-password=slave_pass #ÔÚÖ÷·þÎñÆ÷ÉÏΪ´Ó·þÎñÆ÷½¨Á¢µÄÕÊ»§µÄÃÜÂë master-connet-retry=30 #ÉèÖÃÁ¬½ÓÖØÊÔ¼ä¸ô£¬Ä¬ÈÏΪ60Ãë master-retry-count=100000 #ÉèÖÃÖØÊÔ´ÎÊý£¬Ä¬ÈÏΪ86400´Î ×¢£º×îºóÁ½¸öÑ¡ÏîÔÚÍøÂçÁ¬½Ó²»¿É¿¿Ê±ÉèÖÃ
ÖØÐÂÆô¶¯´Ó·þÎñÆ÷¡£´Ó·þÎñÆ÷ÓÃÁ½¸öÐÅÏ¢Ô´À´È·¶¨Ëü×ÔÒÑÔÚ¾µÏñ¹¤×÷ÖеĽø¶ÈλÖãºÒ»¸öÊÇÊý¾ÝĿ¼ÖеÄmaster.infoÎļþ£¬ÁíÒ»¸öÊÇÆô¶¯Ñ¡ÏîËù¸ø¶¨µÄÅäÖÃÐÅÏ¢¡£µÚÒ»´ÎÆô¶¯´Ó·þÎñÆ÷ʱ£¬master.infoÎļþ²»´æÔÚ£¬´Ó·þÎñÆ÷»á¸ù¾ÝÑ¡ÏîÎļþÖиø³öµÄ¸÷ÖÖmaster-xxxÑ¡ÏîֵȥÁ¬½ÓÖ÷·þÎñÆ÷¡£Ò»µ©Á¬½Ó³É¹¦£¬´Ó·þÎñÆ÷»á´´½¨Ò»¸ömaster.infoÎļþÒÔ±£´æ¸÷ÖÖÁ¬½Ó²ÎÊýºÍËü×ÔÒѵľµÏñ¹¤×÷״̬¡£Èç¹ûÒÔºóÔÙÖØÆô´Ó·þÎñÆ÷£¬´Ó·þÎñÆ÷»áÓÅÏȶÁÈ¡¸ÃÎļþ£¬¶ø²»ÊÇÑ¡ÏîÎļþ¡£ËùÒÔÈç¹ûÄãÐÞ¸ÄÁËÑ¡ÏîÎļþµÄÄÚÈÝ£¬Ïë¸ÃÑ¡ÏîÉúЧ¾ÍҪɾ³ýmaster.infoÎļþ²¢ÖØÆô´Ó·þÎñÆ÷¡£
ÒÔÉϲ½ÖèÊǾµÏñËùÓÐÊý¾Ý¿âµÄ²Ù×÷¹ý³Ì£¬Èç¹ûÎÒÃÇÏë°ÑmysqlȨÏÞÊý¾Ý±£ÁôÔÚÖ÷·þÎñÆ÷ÉÏ£¬ÅųýÔÚ¾µÏñ»úÖÆÍâµÄ»°£¬¿ÉÓÃÔÚÑ¡ÏîÎļþµÄ[mysqld]ÖмÓÈë--binlog-ignore-db=mysqlÑ¡ÏÕâÑù£¬mysqlÊý¾Ý¿âÉϵIJÙ×÷¾Í²»»á¼Ç¼ÔÚ¶þ½øÖƱä¸üÈÕÖ¾Àï¡£ÈçÒªÅųýÆäËüÊý¾Ý¿â£¬Ö»ÒªÔö¼Ó¶à¼¸¸ö¸ÃÑ¡Ïî¼´¿É¡£
ͨ¹ýÒÔϼ¸¸öÃüÁî¿É¼à¿ØºÍ¹ÜÀíÖ÷´Ó·þÎñÆ÷£º
SLAVE STOP£¬SLAVE STARTÓÃÓÚ¹ÒÆðÀ´»Ö¸´´Ó·þÎñÆ÷ÉϾµÏñ£¬Èçµ±±¸·Ýʱ£¬¿ÉÓøÃÓï¾äÈôӷþÎñÆ÷ÔÝʱֹͣ¾µÏñ»î¶¯¡£
SHOW SLAVE STATUS£¬ÔÚ´Ó·þÎñÆ÷Éϲ鿴Æä¾µÏñе÷ÐÅÏ¢£¬ÕâЩÐÅÏ¢¿ÉÒÔÓÃÀ´ÅжÏÄÄЩ¶þ½øÖƱä¸üÈÕÖ¾ÒѾ²»ÔÙʹÓá£
PURGE MASTER£¬ÔÚÖ÷·þÎñÆ÷É϶Զþ½øÖƱä¸üÈÕÖ¾½øÐÐʧЧ´¦Àí¡£É¾³ýËùÓдӷþÎñÆ÷¶¼²»ÔÙʹÓõĶþ½øÖƱä¸üÈÕÖ¾¡£
CHANGE MASTER£¬ÔÚ´Ó·þÎñÆ÷ÉÏÐ޸ľµÏñ²ÎÊý¡£ÈçÕýÔÚ¶ÁÈ¡Ö÷·þÎñÆ÷ÉÏÄĸö¶þ½øÖƱä¸üÈÕÖ¾£¬ÕýÔÚдÄĸöÖмÌÈÕÖ¾ÎļþµÈ¡£
ÔÚMySQL4.0.2Ö®ºó°æ±¾ÖУ¬¾µÏñ»úÖÆÖеĴӷþÎñÆ÷ÓÉÁ½¸öÄÚ²¿Ïß³Ì×é³É£º
Ò»¸ö½Ð¡°I/OÏ̡߳±£¬¸ºÔðÓëÖ÷·þÎñÆ÷ͨÐÅ£¬ÇëÇóÖ÷·þÎñÆ÷·¢ËͶþ½øÖƱä¸üÈÕÖ¾£¬²¢°Ñ½ÓÊÕµ½µÄÊý¾ÝÐÞ¸ÄÃüÁîдÈëij¸öÖмÌÈÕÖ¾Îļþ£»ÓÃSLAVE STOP IO_THREAD»òSLAVE START IO_THREAD¿É¹ÒÆð»ò»Ö¸´¸ÃÏ̡߳£
ÁíÒ»¸ö½Ð¡°SQLÏ̡߳±£¬¸ºÔð´ÓÖмÌÈÕÖ¾ÖжÁÈ¡Êý¾ÝÐÞ¸ÄÃüÁî²¢Ö´ÐС£Í¬Àí£¬ÓÃSLAVE STOP SQL_THREAD»òSLAVE START SQL_THREAD¿É¹ÒÆð»ò»Ö¸´¸ÃÏ̡߳£
ÖмÌÈÕÖ¾ÎļþĬÈϵÄÎļþΪhostname-relay-bin.nnnºÍhostname-relay-bin.index¡£¿ÉÓôӷþÎñÆ÷µÄ--relay-logºÍ--relay-log-indexÑ¡ÏîÐ޸ġ£ÔÚ´Ó·þÎñÆ÷Öл¹ÓÐÒ»¸örelay-log.infoÖмÌÐÅÏ¢Îļþ£¬¿ÉÓÃ--relay-log-info-fileÆô¶¯Ñ¡ÏîÐÞ¸ÄÎļþÃû¡£
Table of Contents
°²È«ÊÇÒ»¸ö¹ý³Ì£¬¶ø²»ÊÇÒ»¸ö·½·¨£¬Ëü¹á´©ÔÚÎÒÃÇʹÓúÍά»¤MySQLÊý¾Ý¿âµÄ¹ý³ÌÖС£Õâ²»µ¥ÊÇϵͳ¹ÜÀíÔ±¹¤×÷£¬Óû§Ò²ÒªÓа²È«µÄÒâʶ£¬Ê¹°²È«ÎÊÌâµÃµ½ÓÐЧ¿ØÖÆ¡£MySQL·þÎñÆ÷µÄ°²È«ÎÊÌâ¿É·ÖΪÄÚ²¿°²È«ºÍÍⲿ°²È«Á½²¿·Ý¡£ÄÚ²¿°²È«ÎÊÌâ´ó¶¼ÓëϵͳÎļþÓйأ¬ÎÒÃÇÐèÈ·±£MySQL³ÌÐòÎļþºÍÊý¾ÝÎļþµÄ°²È«¡£Íⲿ°²È«ÊÇָͨ¹ýÍøÂçÁ¬½Óµ½·þÎñÆ÷µÄ°²È«ÎÊÌ⣬Ӧ¸ÃÖ»ÔÊÐíºÏ·¨Óû§·ÃÎÊÊý¾Ý¿â£¬ÔÚһЩÇé¿öÏ»¹¿ÉÓÃSSL¼ÓÃÜÐÅÏ¢´«ÊäͨµÀ¡£Ï·ֱð½éÉÜÄÚ²¿°²È«ºÍÍⲿ°²È«µÄ·À·¶´ëÊ©¡£
ÔÚÖØÉèÖÃÎļþȨÏÞʱ£¬ÇëÏȹرÕÊý¾Ý¿â·þÎñÆ÷¡£
ÓÃÒÔÏÂÃüÁî°ÑMySQL°²×°³ÌÐòĿ¼µÄÊôÖ÷ºÍËùÊô×éÉèÖÃΪMySQL¹ÜÀíÔ±ÕʺŵÄÓû§ÃûºÍÓû§×éÃû¡£
% chown -R mysql.mysql /usr/local/mysql
ÁíÍâÒ»ÖÖ·½·¨ÊǰѳýÊý¾ÝĿ¼ÍâµÄËùÓÐĿ¼ÊôÖ÷ÉèÖÃΪrootËùÓУ¬È磺
% chown -R root.mysql /usr/local/mysql % chown -R mysql.mysql /usr/local/mysql/data
ÉèÖð²×°Ä¿Â¼¼°¸÷ÓйØ×ÓĿ¼µÄȨÏÞ£¬ÔÊÐí¹ÜÀíÔ±½øÐÐËùÓвÙ×÷£¬Ö»ÔÊÐíÆäËûÈ˽øÐжÁºÍÖ´ÐзÃÎÊ£¬ÉèÖÃÃüÁîÈçÏ£º
#ÉèÖÃmysqlĿ¼ % chmod 755 /usr/local/mysql or % chmod u=rwx,go=rx /usr/local/mysql #ÉèÖÃmysql/binĿ¼ % chmod 755 /usr/local/mysql/bin or % chmod u=rwx,go=rx /usr/local/mysql/bin #ÉèÖÃmysql/libexecĿ¼ % chmod 700 /usr/local/mysql/libexec or % chmod u=rwx,go-rwx /usr/local/mysql/libexec
°ÑÊý¾ÝĿ¼¼°Ä¿Â¼ÖеÄËùÓÐ×ÓĿ¼ºÍÎļþÉèÖÃΪֻÔÊÐíMySQL¹ÜÀíÔ±·ÃÎÊ¡£
% chmod -R go-rwx /usr/local/mysql/data
Èç¹ûÊý¾ÝĿ¼ÏÂÓÐÑ¡ÏîÎļþ»òÌ×½Ó×ÖÎļþ£¬²¢Ò»Ð©¿Í»§Ðè·ÃÎÊÕâЩÎļþ£¬Ôò¿ÉÓÃÒÔϵÄȨÏÞÉèÖã¬Ê¹¿Í»§ÔÚûÓжÁȨÏÞµÄǰÌáÏÂʹÓÃÕâЩÎļþ£º
% chmod go+x /usr/local/mysql/data
mysql.sockÌ×½Ó×ÖÎļþÒ»°ã·ÅÒÔ/tmpĿ¼Ï£¬ÒªÈ·±£¸ÃĿ¼ÉèÖÃÁËÕ³×Åλ£¬Ê¹×Ô»§Ö»ÄÜɾ³ý×ÔÒÑ´´½¨µÄÎļþ£¬²»ÄÜɾ³ýÆäËûÓû§´´½¨µÄÎļþ¡£/etc/my.cnfÖй«¹²Ñ¡ÏîÎļþ£¬ÊǶÔËùÓÐÓû§¿É¶ÁµÄ£¬ËùÒÔ²»Ó¦°ÑһЩÃô¸ÐÐÅÏ¢±£´æÔÚÀïÃæ¡£.my.cnfÊÇÓû§×¨ÓÃÑ¡ÏîÎļþ£¬ÒªÈ·±£Ö»ÓиÃÓû§ÓÐȨ·ÃÎÊ¡£
ÕâÑùÉèÖÃÒÔºó£¬Ö»ÓÐMySQL¹ÜÀíÔ±²ÅÄÜÆô¶¯·þÎñÆ÷¡£
MySQL·þÎñÆ÷ͨ¹ýȨÏÞ±íÀ´¿ØÖÆÓû§¶ÔÊý¾Ý¿âµÄ·ÃÎÊ£¬È¨ÏÞ±í´æ·ÅÔÚmysqlÊý¾Ý¿âÀÓÉmysql_install_db½Å±¾³õʼ»¯¡£ÕâЩȨÏÞ±í·Ö±ðuser£¬db£¬table_priv£¬columns_privºÍhost¡£ÏÂÃæ·Ö±ð½éÉÜÒ»ÏÂÕâЩ±íµÄ½á¹¹ºÍÄÚÈÝ£º
userȨÏÞ±í£º¼Ç¼ÔÊÐíÁ¬½Óµ½·þÎñÆ÷µÄÓû§ÕʺÅÐÅÏ¢£¬ÀïÃæµÄȨÏÞÊÇÈ«¾Ö¼¶µÄ¡£
dbȨÏÞ±í£º¼Ç¼¸÷¸öÕʺÅÔÚ¸÷¸öÊý¾Ý¿âÉϵIJÙ×÷ȨÏÞ¡£
table_privȨÏÞ±í£º¼Ç¼Êý¾Ý±í¼¶µÄ²Ù×÷ȨÏÞ¡£
columns_privȨÏÞ±í£º¼Ç¼Êý¾ÝÁм¶µÄ²Ù×÷ȨÏÞ¡£
hostȨÏÞ±í£ºÅäºÏdbȨÏÞ±í¶Ô¸ø¶¨Ö÷»úÉÏÊý¾Ý¿â¼¶²Ù×÷ȨÏÞ×÷¸üϸÖµĿØÖÆ¡£Õâ¸öȨÏÞ±í²»ÊÜGRANTºÍREVOKEÓï¾äµÄÓ°Ïì¡£
´ó¼Ò×¢Òâµ½£¬ÒÔÉÏȨÏÞûÓÐÏÞÖÆµ½Êý¾ÝÐм¶µÄÉèÖá£ÔÚMySQLֻҪʵÏÖÊý¾ÝÐм¶¿ØÖƾÍҪͨ¹ý±àд³ÌÐò(ʹÓÃGET-LOCK()º¯Êý)À´ÊµÏÖ¡£
MySQLµÄ°æ±¾ºÜ¶à£¬ËùÒÔȨÏÞ±íµÄ½á¹¹ÔÚ²»Í¬°æ±¾¼ä»áÓв»Í¬¡£Èç¹û³öÏÖÕâÖÖÇé¿ö£¬¿ÉÓÃmysql_fix_privilege_tables½Å±¾À´ÐÞÕý¡£ÔËÐз½Ê½ÈçÏ£º
% mysql_fix_privilege_tables rootpassword #ÕâÀïÒª¸ø³öMySQLµÄrootÓû§ÃÜÂë
×îºÃÒ»ÏÂ×ÓÉý¼¶µ½MySQL 4.0.4°æ±¾£¬ÒòΪ4.0.2ºÍ4.0.3µÄdb±íûÓÐCreate_tmp_table_privºÍLock_tables_privȨÏÞ¡£
MySQLµÄȨÏÞ±í¶¨ÒåÁËÁ½²¿·ÝÄÚÈÝ£¬Ò»¸ö²¿·Ý¶¨ÒåȨÏ޵ķ¶Î§£¬¼´Ë(ÕÊ»§)¿ÉÒÔ´ÓÄÄÀï(¿Í»§¶ËÖ÷»ú)·ÃÎÊʲô(Êý¾Ý¿â¡¢Êý¾Ý±í¡¢Êý¾ÝÁÐ)£»ÁíÒ»²¿·Ý¶¨ÒåȨÏÞ£¬¼´¿ØÖÆÓû§¿ÉÒÔ½øÐеIJÙ×÷¡£ÏÂÃæÊÇһЩ³£ÓõÄȨÏÞ½éÉÜ£¬¿ÉÖ±½ÓÔÚGRANTÓï¾äÖÐʹÓá£
CREATE TEMPORARY TABLES£¬ÔÊÐí´´½¨ÁÙʱ±íµÄȨÏÞ¡£
EXECUTE£¬ÔÊÐíÖ´Ðд洢¹ý³ÌµÄȨÏÞ£¬´æ´¢¹ý³ÌÔÚMySQLµÄµ±Ç°°æ±¾Öл¹Ã»ÊµÏÖ¡£
FILE£¬ÔÊÐíÄãͨ¹ýMySQL·þÎñÆ÷È¥¶Áд·þÎñÆ÷Ö÷»úÉϵÄÎļþ¡£µ«ÓÐÒ»¶¨ÏÞÖÆ£¬Ö»ÄÜ·ÃÎʶÔÈκÎÓû§¿É¶ÁµÄÎļþ£¬Í¨¹ý·þÎñÆ÷дµÄÎļþ±ØÐëÊÇÉÐδ´æÔڵģ¬ÒÔ·ÀÖ¹·þÎñÆ÷дµÄÎļþ¸²¸ÇÖØÒªµÄϵͳÎļþ¡£¾¡¹ÜÓÐÕâЩÏÞÖÆ£¬µ«ÎªÁ˰²È«£¬¾¡Á¿²»Òª°Ñ¸ÃȨÏÞÊÚÓèÆÕͨÓû§¡£²¢ÇÒ²»ÒªÒÔrootÓû§À´ÔËÐÐMySQL·þÎñÆ÷£¬ÒòΪrootÓû§¿ÉÔÚϵͳÈκεط½´´½¨Îļþ¡£
GRANT OPTION£¬ÔÊÐí°ÑÄã×ÔÒÑËùÓµÓеÄȨÏÞÔÙתÊÚ¸øÆäËûÓû§¡£
LOCK TABLES£¬¿ÉÒÔʹÓÃLOCK TABLESÓï¾äÀ´Ëø¶¨Êý¾Ý±í
PROCESS£¬ÔÊÐíÄã²é¿´ºÍÖÕÖ¹Èκοͻ§Ï̡߳£SHOW PROCESSLISTÓï¾ä»òmysqladmin processlistÃüÁî¿É²é¿´Ị̈߳¬KILLÓï¾ä»òmysqladmin killÃüÁî¿ÉÖÕÖ¹Ï̡߳£ÔÚ4.0.2°æ¼°ÒÔºóµÄ°æ±¾ÖУ¬PROCESSȨÏÞֻʣϲ鿴Ï̵߳ÄÄÜÁ¦£¬ÖÕÖ¹Ï̵߳ÄÄÜÁ¦ÓÉSUPERȨÏÞ¿ØÖÆ¡£
RELOAD£¬ÔÊÐíÄã½øÐÐһЩÊý¾Ý¿â¹ÜÀí²Ù×÷£¬ÈçFLUSH£¬RESETµÈ¡£Ëü»¹ÔÊÐíÄãÖ´ÐÐmysqladminÃüÁreload£¬refresh£¬flush-hosts£¬flush-logs£¬flush-privileges£¬flush-status£¬flush-tablesºÍflush-threads¡£
REPLICATION CLIENT£¬ÔÊÐí²éѯ¾µÏñ»úÖÆÖÐÖ÷·þÎñÆ÷ºÍ´Ó·þÎñÆ÷µÄλÖá£
REPLICATION SLAVE£¬ÔÊÐíij¸ö¿Í»§Á¬½Óµ½¾µÏñ»úÖÆÖеÄÖ÷·þÎñÆ÷²¢ÇëÇó·¢ËͶþ½øÖƱä¸üÈÕÖ¾¡£¸ÃȨÏÞÓ¦ÊÚÓè´Ó·þÎñÆ÷ÓÃÀ´Á¬½ÓÖ÷·þÎñÆ÷µÄÕʺš£ÔÚ4.0.2°æÕâǰ£¬´Ó·þÎñÆ÷ÊÇÓÃFILEȨÏÞÀ´Á¬½ÓµÄ¡£
SHOW DATABASES£¬¿ØÖÆÓû§Ö´ÐÐSHOW DATABASESÓï¾äµÄȨÏÞ¡£
SUPER£¬ÔÊÐíÖÕÖ¹Ị̈߳¬Ê¹ÓÃmysqladmin debugÃüÁʹÓÃCHANGE MASTER£¬PURGE MASTER LOGSÒÔ¼°ÐÞ¸ÄÈ«¾Ö¼¶±äÁ¿µÄSETÓï¾ä¡£SUPER»¹ÔÊÐíÄã¸ù¾Ý´æ·ÅÔÚDESÃÜÔ¿ÎļþÀïµÄÃÜÔ¿½øÐÐDES½âÃܵŤ×÷¡£
userȨÏÞ±íÖÐÓÐÒ»¸össl_typeÊý¾ÝÁУ¬ÓÃÀ´ËµÃ÷Á¬½ÓÊÇ·ñʹÓüÓÃÜÁ¬½ÓÒÔ¼°Ê¹ÓÃÄÄÖÖÀàÐ͵ÄÁ¬½Ó£¬ËüÊÇÒ»¸öENUMÀàÐ͵ÄÊý¾ÝÁУ¬¿ÉÄܵÄȡֵÓУº
NONE£¬Ä¬ÈÏÖµ£¬±íʾ²»Ðè¼ÓÃÜÁ¬½Ó¡£
ANY£¬±íʾÐèÒª¼ÓÃÜÁ¬½Ó£¬¿ÉÒÔÊÇÈκÎÒ»ÖÖ¼ÓÃÜÁ¬½Ó¡£ÓÉGRANTµÄREQUIRE SSL×Ó¾äÉèÖá£
X509£¬±íʾÐèÒª¼ÓÃÜÁ¬½Ó£¬²¢ÒªÇó¿Í»§Ìṩһ·ÝÓÐЧµÄX509Ö¤Êé¡£ÓÉGRANTµÄREQUIRE X509×Ó¾äÉèÖá£
SPECIFIED£¬±íʾ¼ÓÃÜÁ¬½ÓÐèÂú×ãÒ»¶¨ÒªÇó£¬ÓÉREQUIRE×Ó¾äµÄISSUER£¬SUBJECT»òCIPHERµÄÖµ½øÐÐÉèÖá£Ö»Òªssl_typeÁеÄֵΪSPECIFIED£¬ÔòMySQL»áÈ¥¼ì²éssl_cipher(¼ÓÃÜËã·¨)¡¢x509_issuer(Ö¤ÊéÇ©·¢Õß)ºÍx509_subject(Ö¤ÊéÖ÷Ìâ)ÁеÄÖµ¡£Õ⼸ÁеÄÁÐÀàÐÍÊÇBLOBÀàÐ͵ġ£
userȨÏÞ±íÀﻹÓм¸ÁÐÊÇÉèÖÃÕÊ»§×ÊԴʹÓÃÇé¿öµÄ£¬Èç¹ûÒÔÏÂÊý¾ÝÁÐÖеÄÊýȫΪÁ㣬Ôò±íʾûÓÐÏÞÖÆ£º
max_connections£¬Ã¿Ð¡Ê±¿ÉÁ¬½Ó·þÎñÆ÷µÄ´ÎÊý¡£
max_questions£¬Ã¿Ð¡Ê±¿É·¢³ö²éѯÃüÁîÊý¡£
max_updates£¬Ã¿Ð¡Ê±¿ÉÒÔ·¢³öµÄÊý¾ÝÐÞ¸ÄÀà²éѯÃüÁîÊý¡£
ÉèÖÃȨÏÞ±íӦעÒâµÄÊÂÏ
ɾ³ýËùÓÐÄäÃûÓû§¡£
²é³öËùÓÐûÓпÚÁîÓû§£¬ÖØÐÂÉèÖÿÚÁî¡£¿ÉÓÃÒÔÏÂÃüÁî²éѯ¿Õ¿ÚÁîÓû§£º
mysql> SELECT host,user FROM user WHERE password = '';
¾¡Á¿²»ÒªÔÚhostÖÐʹÓÃͨÅä·û¡£
×îºÃ²»ÒªÓÃuserȨÏÞ±í½øÐÐÊÚȨ£¬ÒòΪ¸Ã±íµÄȨÏÞ¶¼ÊÇÈ«¾Ö¼¶µÄ¡£
²»Òª°ÑmysqlÊý¾Ý¿âµÄȨÏÞÊÚÓèËûÈË£¬ÒòΪ¸ÃÊý¾Ý¿â°üº¬È¨ÏÞ±í¡£
ʹÓÃGRANT OPTIONȨÏÞʱ²»ÒªÀÄÓá£
FILEȨÏÞ¿É·ÃÎÊÎļþϵͳÖеÄÎļþ£¬ËùÒÔÊÚȨʱҲҪעÒâ¡£Ò»¸ö¾ßÓÐFILEȨÏÞµÄÓû§Ö´ÐÐÒÔÏÂÓï¾ä¾Í¿É²é¿´·þÎñÆ÷ÉÏÈ«Ìå¿É¶ÁµÄÎļþ£º
mysql> CREATE TABLE etc_passwd(pwd_entry TEXT); mysql> LOAD DATA INFILE '/etc/passwd' INTO TABLE etc_passwd; mysql> SELECT * FROM etc_passwd£»
Èç¹ûMySQL·þÎñÆ÷Êý¾ÝĿ¼ÉϵķÃÎÊȨÏÞÉèÖõò»ºÃ£¬¾Í»áÁôÏÂÈþßÓÐFILEȨÏÞµÄÓû§½øÈë±ðÈËÊý¾Ý¿âµÄ°²È«Â©¶´¡£ËùÒÔ½¨Òé°ÑÊý¾ÝĿ¼ÉèÖóÉÖ»ÄÜÓÉMySQL·þÎñÆ÷¶ÁÈ¡¡£ÏÂÃæÑÝʾһ¸öÀûÓþßÓÐFILEȨÏÞµÄÓû§¶ÁÈ¡Êý¾ÝĿ¼ÖÐÎļþȨÏÞÉèÖò»ÑÏÃܵÄÊý¾Ý¿âÊý¾ÝµÄ¹ý³Ì£º
mysql> use test; mysql> create table temp(b longblob); mysql> show databases #ÏÔʾÊý¾Ý¿âÃûÇåµ¥£¬--skip-show-database¿É½ûÖ¹¸Ã¹¦ÄÜ mysql> load data infile './db/xxx.frm' into table temp fields escaped by '' lines terminated by ''; mysql> select * from temp into outfile 'xxx.frm' fields escaped by '' lines terminated by ''; mysql> delete from temp; mysql> load data infile './db/xxx.MYD' into table temp fields escaped by '' lines terminated by ''; mysql> select * from temp into outfile 'xxx.MYD' fields escaped by '' lines terminated by ''; mysql> delete from temp; mysql> load data infile './db/xxx.MYI' into table temp fields escaped by '' lines terminated by ''; mysql> select * from temp into outfile 'xxx.MYI' fields escaped by '' lines terminated by ''; mysql> delete from temp;
ÕâÑù£¬ÄãµÄÊý¾Ý¿â¾Í¸øÈË¿½±´µ½±¾µØÁË¡£Èç¹û·þÎñÆ÷ÊÇÔËÐÐÔÚrootÓû§Ï£¬ÄÇΣº¦¾Í¸ü´óÁË£¬ÒòΪroot¿ÉÔÚ·þÎñÆ÷ÉÏ×öÈκεIJÙ×÷¡£ËùÒÔ¾¡Á¿²»ÒªÓÃrootÓû§À´ÔËÐзþÎñÆ÷¡£
Ö»°ÑPROCESSȨÏÞÊÚÓè¿ÉÐÅÓû§£¬¸ÃÓû§¿É²éѯÆäËûÓû§µÄÏß³ÌÐÅÏ¢¡£
²»Òª°ÑRELOADȨÏÞÊÚÓèÎÞ¹ØÓû§£¬ÒòΪ¸ÃȨÏÞ¿É·¢³öFLUSH»òRESETÓï¾ä£¬ÕâЩÊÇÊý¾Ý¿â¹ÜÀí¹¤¾ß£¬Èç¹ûÓû§²»µ±Ê¹ÓûáʹÊý¾Ý¿â¹ÜÀí³öÏÖÎÊÌâ¡£
ALTERȨÏÞÒ²²»ÒªÊÚÓèÒ»°ãÓû§£¬ÒòΪ¸ÃȨÏ޿ɸü¸ÄÊý¾Ý±í¡£
GRANTÓï¾ä¶ÔȨÏÞ±íµÄÐ޸Ĺý³Ì£º
µ±Äã·¢ËÍÒ»ÌõGRANTÓï¾äʱ£¬·þÎñÆ÷»áÔÚuserȨÏÞ±íÀï´´½¨Ò»¸ö¼Ç¼Ïî²¢°ÑÄãÓû§Ãû¡¢Ö÷»úÃûºÍ¿ÚÁî¼Ç¼ÔÚUser¡¢HostºÍPasswordÁÐÖС£Èç¹ûÉèÖÃÁËÈ«¾ÖȨÏÞ£¬ÓɰѸÃÉèÖüǼÔÚÏàÔÚµÄȨÏÞÁÐÖС£
Èç¹ûÔÚGRANTÀïÉèÖÃÁËÊý¾Ý¿â¼¶È¨ÏÞ£¬Äã¸ø³öµÄÓû§ÃûºÍÖ÷»úÃû¾Í»á¼Ç¼µ½dbȨÏÞ±íµÄUserºÍHostÁÐÖУ¬Êý¾Ý¿âÃû¼Ç¼ÔÚDbÁÐÖУ¬È¨Ï޼Ǽµ½Ïà¹ØµÄȨÏÞÁÐÖС£
½Ó×ÅÊǵ½Êý¾Ý±íºÍÊý¾ÝÁм¶µÄȨÏÞÉèÖã¬ÉèÖ÷½·¨ºÍÉÏÃæµÄÒ»Ñù¡£·þÎñÆ÷»á°ÑÓû§Ãû¡¢Ö÷»úÃû¡¢Êý¾Ý¿âÃûÒÔ¼°ÏàÓ¦µÄÊý¾Ý±íÃûºÍÊý¾ÝÁÐÃû¼Ç¼µ½Êý¾Ý±íÖС£
ɾ³ýÓû§È¨ÏÞÆäʵ¾ÍÊǰÑÕâЩȨÏÞ±íÖÐÏàÓ¦µÄÕʺżÇ¼ȫ²¿É¾³ý¼´¿É¡£
¼ÓÃÜÁ¬½Ó¿ÉÌá¸ßÊý¾ÝµÄ°²È«ÐÔ£¬µ«»á½µµÍÐÔÄÜ¡£Òª½øÐмÓÃÜÁ¬½Ó£¬±ØÐëÂú×ãÒÔÏÂÒªÇó£º
userȨÏÞ±íÀïÒªÓÐÏà¹ØµÄSSLÊý¾ÝÁС£Èç¹û°²×°µÄMySQL·þÎñÆ÷ÊÇ4.0.0°æµÄ£¬userȨÏÞ±íÒѰüº¬Ïà¹ØµÄSSLÊý¾ÝÁУ¬·ñÔò£¬ÎÒÃÇÒ²¿ÉÓÃmysql_fix_privilege_tables½Å±¾Éý¼¶È¨ÏÞ±í¡£
·þÎñÆ÷ºÍ¿Í»§³ÌÐò¶¼ÒѾ±àÒëÓÐOpenSSLÖ§³Ö¡£Ê×ÏÈÒª°²×°openssl£¬ÔÚ±àÒëʱMySQL·þÎñÆ÷ʱ¼Ó--with-vioºÍ--with-opensslÑ¡Ïî¼ÓÉÏopensslÖ§³Ö¡£¿ÉÓÃÒÔÏÂÓï¾ä²éѯ·þÎñÆ÷ÊÇ·ñÖ§³ÖSSL£º
mysql> show variables like 'have_openssl';
ÔÚÆô¶¯·þÎñÆ÷ʱÓÃÓйØÑ¡ÏîÖ¸Ã÷Ö¤ÊéÎļþºÍÃÜÔ¿ÎļþµÄλÖá£ÔÚ½¨Á¢¼ÓÃÜÁ¬½Óǰ£¬Òª×¼±¸Èý¸öÎļþ£¬Ò»¸öCAÖ¤Ê飬ÊÇÓÉ¿ÉÐÅÀµµÚÈý·½³ö¾ßµÄÖ¤Ê飬ÓÃÀ´ÑéÖ¤¿Í»§¶ËºÍ·þÎñÆ÷¶ËÌṩµÄÖ¤Êé¡£CAÖ¤Êé¿ÉÏòÉÌÒµ»ú¹¹¹ºÂò£¬Ò²¿É×ÔÐÐÉú³É¡£µÚ¶þ¸öÎļþÊÇÖ¤ÊéÎļþ£¬ÓÃÓÚÔÚÁ¬½ÓʱÏò¶Ô·½Ö¤Ã÷×ÔÒÑÉí·ÝµÄÎļþ¡£µÚÈý¸öÎļþÊÇÃÜÔ¿Îļþ£¬ÓÃÀ´¶ÔÔÚ¼ÓÃÜÁ¬½ÓÉÏ´«ÊäÊý¾ÝµÄ¼ÓÃܺͽâÃÜ¡£MySQL·þÎñÆ÷¶ËµÄÖ¤ÊéÎļþºÍÃÜÔ¿Îļþ±ØÐëÊ×ÏȰ²×°£¬ÔÚsampdb·¢Ðа汾µÄsslĿ¼ÀïÓм¸¸ö¹©²Î¿¼µÄÑù±¾Îļþ£ºca-cert.pem(CAÖ¤Êé)£¬server-cert.pem(·þÎñÆ÷Ö¤Êé)£¬server-key.pem(·þÎñÆ÷¹«¹²ÃÜÔ¿)¡£°ÑÕ⼸¸öÎļþ¿½±´µ½·þÎñÆ÷µÄÊý¾ÝĿ¼ÖУ¬ÔÙÔÚÑ¡ÏîÎļþÀï¼ÓÉÏÒÔÏÂÄÚÈÝ£º
[mysqld] ssl-ca=/usr/local/mysql/data/ca-cert.pem ssl-cert=/usr/local/mysql/data/server-cert.pem ssl-key=/usr/local/mysql/data/server-key.pem
ÖØÆô·þÎñÆ÷£¬Ê¹ÅäÖÃÉúЧ¡£
ÒªÏëÈÃij¸ö¿Í»§³ÌÐò½¨Á¢¼ÓÃÜÁ¬½Ó£¬±ØÐëÔÚµ÷ÓÃÕâ¸ö¿Í»§³ÌÐòʱÓÃÓйØÑ¡Ïî¸æËßËüÔÚÄÄÀïÄÜÕÒµ½ÆäÖ¤ÊéÎļþºÍÃÜÔ¿Îļþ¡£ÔÚsampdb·¢ÐаæµÄsslĿ¼ÖÐÌṩÁËclient-cert.pem(¿Í»§Ö¤ÊéÎļþ)£¬client-key.pem(¿Í»§ÃÜÔ¿Îļþ)£¬CAÖ¤ÊéÓë·þÎñÆ÷ʹÓÃͬÑùµÄca-cert.pem¡£°ÑËûÃÇ¿½±´µ½¸öÈËĿ¼Ï£¬²¢ÔÚ.my.cnfÑ¡ÏîÎļþÖÐÖ¸³öÎļþλÖã¬È磺
[mysql] ssl-ca=/home/mysql/ca-cert.pem ssl-cert=/home/mysql/client-cert.pem ssl-key=/home/mysql/client-key.pem
ÅäÖÃÍê³Éºó£¬µ÷ÓÃmysql³ÌÐòÔËÐÐ\s»òSHOW STATUS LIKE 'SSL%'ÃüÁÈç¹û¿´µ½SSL:µÄÐÅÏ¢ÐоÍ˵Ã÷ÊǼÓÃÜÁ¬½ÓÁË¡£Èç¹û°ÑSSLÏà¹ØµÄÅäÖÃд½øÑ¡ÏîÎļþ£¬ÔòĬÈÏÊǼÓÃÜÁ¬½ÓµÄ¡£Ò²¿ÉÓÃmysql³ÌÐòµÄ--skip-sslÑ¡ÏîÈ¡Ïû¼ÓÃÜÁ¬½Ó¡£Èç¹ûÓÃÃüÁîÐз½Ê½ÆôÓüÓÃÜÁ¬½Ó¿ÉÒÔÕâÑùд£º
% mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
¿ÉÓÃGRANTÓï¾äµÄREQUIRE SSLÑ¡ÏîÀ´Ç¿ÖÆÓû§Ê¹ÓüÓÃÜÁ¬½Ó¡£
ʹÓÃsampdb·¢ÐаæµÄÖ¤Êé¿ÉÒÔ½¨Á¢Ò»¸ö¼ÓÃÜÁ¬½Ó£¬µ«ÓÉÓÚ¸ÃÎļþÒѹ«¿ª£¬ËùÒÔ°²È«ÐÔ²»ºÃ£¬ÎÒÃÇ¿ÉÒÔÔÚ²âÊԳɹ¦ºó×ÔÐн¨Á¢Ö¤Êé»ò¹ºÂòÉÌÒµÖ¤Ê飬ÒÔÌá¸ß°²È«ÐÔ¡£ÈçºÎ×ÔÐн¨Á¢SSLÖ¤ÊéµÄÎĵµÔÚsampdb·¢ÐаæµÄssl/READMEÎļþÀïÓÐ˵Ã÷¡£
Table of Contents