亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: luren04
打印 上一主題 下一主題

【申請加精】MySQL 5.1參考手冊  關閉 [復制鏈接]

論壇徽章:
0
11 [報告]
發(fā)表于 2008-04-15 11:37 |只看該作者
1.8.5. MySQL與標準SQL的差別
1.8.5.1. 子查詢
1.8.5.2. SELECT INTO TABLE
1.8.5.3. 事務和原子操作
1.8.5.4. 存儲程序和觸發(fā)程序
1.8.5.5. 外鍵
1.8.5.6. 視圖
1.8.5.7. ‘--’作為注釋起始標記
我們試圖使MySQL服務器遵從ANSI SQL標準和ODBC SQL標準,但在某些情況下MySQL服務器執(zhí)行的操作有所不同:

·         對于VARCHAR列,存儲值時刪除了尾部空間。(在MySQL 5.0.3中更正)。請參見A.8節(jié),“MySQL中的已知事宜”。

·         在某些情況下,定義表或更改其結構時,將CHAR列轉(zhuǎn)換為VARCHAR列。(在MySQL 5.0.3中更正)。請參見13.1.5.1節(jié),“沉寂的列規(guī)格變更”。

·         刪除表時,不自動取消關于表的權限。必須明確發(fā)出REVOKE語句,以撤銷針對表的權限。請參見13.5.1.3節(jié),“GRANT和REVOKE語法”。

·         CAST()函數(shù)不支持對REAL或BIGINT的拋棄。請參見12.8節(jié),“Cast函數(shù)和操作符”。

·         標準SQL要求,SELECT語句中的HAVING子句能夠引用GROUP BY子句中的列。在MySQL 5.0.2之前,不能完成該功能。

1.8.5.1. 子查詢
MySQL 4.1支持子查詢和導出表!白硬樵儭敝傅氖乔短自诹硪徽Z句中的SELECT語句!皩С霰怼保ㄎ疵晥D)是另一語句的FROM子句中的子查詢。請參見13.2.8節(jié),“Subquery語法”。

從MySQL 4.1版起,可以使用聯(lián)合或其他方法重寫大多數(shù)子查詢。關于如何完成該任務的更多信息,請參見13.2.8.11節(jié),“對于較早的MySQL版本,采用聯(lián)合方法重寫子查詢”。

1.8.5.2. SELECT INTO TABLE
MySQL服務器不支持Sybase SQL擴展: SELECT ... INTO TABLE ....。但MySQL服務器支持標準的SQL語法INSERT INTO ... SELECT ...,它基本上相同。請參見13.2.4.1節(jié),“INSERT ... SELECT語法”。

INSERT INTO tbl_temp2 (fld_id)    SELECT tbl_temp1.fld_order_id    FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;作為備選方式,可以使用SELECT INTO OUTFILE ...或CREATE TABLE ... SELECT。

從5.0版開始,MySQL支持SELECT ... INTO,以及用戶變量。在使用光標和局部變量的存儲程序中也可以使用相同的語法。請參見20.2.9.3節(jié),“SELECT ... INTO語句”。

1.8.5.3. 事務和原子操作
MySQL服務器(3.23至該系列的最高版本,所有4.0版本,以及更高版本)支持采用InnoDB和BDB事務存儲引擎的事務。InnoDB提供了全面的ACID兼容性。請參見第15章:存儲引擎和表類型。

MySQL服務器中的其他非事務性存儲引擎(如MyISAM)遵從不同的數(shù)據(jù)完整性范例,稱之為“原子操作”。按照事務術語,MyISAM表總能高效地工作在AUTOCOMMIT=1模式下。原子操作通常能提供可比較的完整性以及更好的性能。

由于MySQL服務器支持兩種范例,因而你能決定是否利用原子操作的速度更好地服務于你的應用程序,或使用事務特性。該選擇可按表進行。

正如所闡述的那樣,事務性和非事務性表類型之間的權衡主要取決于性能。事務性表對內(nèi)存和磁盤空間的要求更高,CPU開銷也更大。另一方面,多種事務性表類型,如InnoDB,也能提供很多顯著特性。MySQL服務器的模塊化設計允許同時使用不同的存儲引擎,以滿足不同的要求,并在所有情形下,提供最佳性能。

但是,即便使用非事務性MyISAM表,你將如何使用MySQL服務器的特性來保持嚴格的完整性呢?這些特性與事務性表類型相比又如何呢?

1.    如果應用程序采用了特定的編寫方式,依賴于在關鍵情況下能夠調(diào)用ROLLBACK而不是COMMIT,那么事務性類型更方便。使用事務,還能確保未完成的更新或崩潰的活動不被提交到數(shù)據(jù)庫,能為服務器提供自動回滾的機會,并保存你的數(shù)據(jù)庫。

如果使用非事務性表,MySQL服務器幾乎在所有情況下均允許你解決潛在的問題,方式是在更新前進行簡單檢查,并運行檢查數(shù)據(jù)庫一致性的簡單腳本,如果出現(xiàn)不一致性,該腳本能自動修復它或給出告警。注意,僅使用MySQL日志或增加額外日志,通常能完美地更正表,同時不會造成數(shù)據(jù)完整性損失。

2.    在很多情況下,能夠?qū)﹃P鍵的事務更新進行重寫,使之成為“原子”類型。一般而言,所有由事務解決的完整性問題均能用LOCK TABLES或原子更新解決,從而確保了服務器不會自動中斷,后者是事務性數(shù)據(jù)庫系統(tǒng)的常見問題。

3.    為了安全使用MySQL服務器,無論是否使用事務性表,僅需啟用備份和二進制日志功能。這樣,你就能解決使用其他事務性數(shù)據(jù)庫系統(tǒng)時遇到的任何問題。無論使用的數(shù)據(jù)庫系統(tǒng)是什么,啟用備份總是個好主意。

事務范型有自己的優(yōu)點和不足之處。很多用戶和應用程序開發(fā)人員喜歡這類簡單性,在出現(xiàn)問題時或必要時,通過代碼解決問題。但是,即使你是原子操作范型的新手,或更熟悉事務,也請考慮非事務性表的速度益處,與經(jīng)過優(yōu)化調(diào)整的最快的事務性表相比,它的速度快3~5倍。

在完整性具有最高重要性的情況下,即使是對非事務性表,MySQL也能提供事務級別的可靠性和安全性。如果使用LOCK TABLES鎖定了表,所有更新均將被暫時中止直至完整性檢查完成。如果你獲得了對某一表的READ LOCAL鎖定(與寫鎖定相對),該表允許在表尾執(zhí)行并行插入,當其他客戶端執(zhí)行插入操作時,允許執(zhí)行讀操作。新插入的記錄不會被有讀鎖定屬性的客戶端看到,直至解除了該鎖定為止。使用INSERT DELAYED,能夠?qū)⒉迦腠椫糜诒镜仃犃兄,直至鎖定解除,不會讓客戶端等待插入完成。請參見13.2.4.2節(jié),“INSERT DELAYED語法”。

從我們賦與其名稱的意義上,“原子”絕非不可思議的。它僅意味著,你能確信在每個特性更新運行的同時,其他用戶不能干涉它,而且不會出現(xiàn)自動回滾(如果你不小心,對于事務性表,這種情況可能發(fā)生)。MySQL服務器還能保證不存在臟讀。

下面列出了使用非事務性表的一些技術:

·         對于需要事務的循環(huán),通常能使用LOCK TABLES進行編碼,不需要光標來更新正在處理的記錄。

·         要想避免使用ROLLBACK,可采取下述策略:

1.    使用LOCK TABLES鎖定所有希望訪問的表。

2.    執(zhí)行更新前,測試必須為真的條件。

3.    如果一切正常,執(zhí)行更新。

4.    使用UNLOCK TABLES解除鎖定。

與使用具有回滾可能性的事務性表相比,它通常具有更快的速度,雖然并非始終如此。該解決方案唯一不能處理的情形是,在更新中途殺死了線程。在這種情況下,將釋放所有鎖定,但某些更新可能尚未執(zhí)行。

·         也可以使用函數(shù)在單一操作中更新記錄。采用下述技術,能獲得效率很高的應用程序。

o        根據(jù)其當前值更改列。

o        僅更新出現(xiàn)實際變化的列。

例如,當我們更新某些客戶信息時,僅更新已更改的客戶數(shù)據(jù),與原始行相比,僅測試已更改的數(shù)據(jù)或依賴于已更改數(shù)據(jù)的數(shù)據(jù)是否未出現(xiàn)變化。對于已更改數(shù)據(jù)的測試,它是通過UPDATE語句的WHERE子句完成的。如果記錄未更新,將向客戶端發(fā)出消息: “一些你改變的數(shù)據(jù)已被其他用戶更改”。接下來,我們在窗口中給出了舊行和新行,以便用戶決定使用哪個版本。

這給出了與列鎖定類似的結果,但效果更好,使用相對于其當前值的值,僅更新了某些列。這意味著,典型的UPDATE語句與下面給出的類似:

UPDATE tablename SET pay_back=pay_back+125; UPDATE customer  SET    customer_date='current_date',    address='new address',    phone='new phone',    money_owed_to_us=money_owed_to_us-125  WHERE    customer_id=id AND address='old address' AND phone='old phone';它很有效,即使其他客戶端更改了pay_back或money_owed_to_us列中的值,也能使用。

·         在很多情況下,用戶希望將LOCK TABLES和/或ROLLBACK用于管理唯一ID。可以在不使用鎖定功能或回滾的情況下,使用AUTO_INCREMENT列以及LAST_INSERT_ID() SQL函數(shù)或mysql_insert_id() C API函數(shù),更有效地處理之。請參見12.9.3節(jié),“信息函數(shù)”。請參見25.2.3.36節(jié),“mysql_insert_id()”。

我們通常能使用代碼來處理行級鎖定方面的需求。在某些情況下,實際上不需要它,InnoDB表支持行級鎖定。通過MyISAM表,能夠在表中使用標志列,并完成類似下面的操作:

UPDATE tbl_name SET row_flag=1 WHERE id=ID;如果找到行,而且原始行中的row_flag不是1,對于受影響的行數(shù),MySQL返回1。

你可以認為MySQL將前述查詢更改為:

UPDATE tbl_name SET row_flag=1 WHERE id=ID AND row_flag <> 1;1.8.5.4. 存儲程序和觸發(fā)程序
對于MySQL,在5.0版本中實現(xiàn)了存儲程序。請參見第20章:存儲程序和函數(shù)。

從5.0.2版開始,在MySQL中實現(xiàn)了基本的觸發(fā)器功能,計劃在MySQL 5.1中進一步發(fā)展它。請參見第21章:觸發(fā)程序。

1.8.5.5. 外鍵
在MySQL服務器3.23.44和更高版本中,InnoDB存儲引擎支持對外鍵約束的檢查功能,這些約束包括CASCADE、ON DELETE和ON UPDATE。請參見15.2.6.4節(jié),“FOREIGN KEY約束”。

對于InnoDB之外的其他存儲引擎,MySQL服務器能夠解析CREATE TABLE語句中的FOREIGN KEY語法,但不能使用或保存它。未來將進行擴展,能夠?qū)⑦@類信息保存到表規(guī)范文件中,以便能被mysqldump和ODBC檢索。稍后,還將為MyISAM表實現(xiàn)外鍵約束。

外鍵增強為數(shù)據(jù)庫開發(fā)人員提供了多項益處:

·         假定關聯(lián)設計恰當,外鍵約束使得程序員更難將不一致性引入數(shù)據(jù)庫。

·         數(shù)據(jù)庫服務器具有集中式約束檢查功能,因而沒有必要在應用程序一側執(zhí)行這類檢查。這樣,就消除了不同應用程序使用不同方式檢查約束的可能性。

·         使用級聯(lián)更新和刪除,簡化了應用程序代碼。

·         設計恰當?shù)耐怄I有助于以文檔方式記錄表間的關系。

請記住,這些好處是以數(shù)據(jù)庫服務器為執(zhí)行必要檢查而需的額外開銷為代價的。服務器額外檢查會影響性能,對于某些應用程序,該特性不受歡迎,應盡量避免。(出于該原因,在一些主要的商業(yè)應用程序中,在應用程序級別上實施了外鍵邏輯)。

MySQL允許數(shù)據(jù)庫開發(fā)人員選擇要使用的方法。如果你不需要外鍵,并希望避免與強制引用完整性有關的開銷,可選擇另一種表類型取而代之,如MyISAM。(例如,MyISAM存儲引擎為僅執(zhí)行INSERT和SELECT操作的應用程序提供了極快的性能,這是因為插入能和檢索同時進行)。請參見7.3.2節(jié),“表鎖定事宜”。

如果你不打算利用引用完整性檢查具備的優(yōu)點,請記住下述要點:

·         不存在服務器端外鍵關聯(lián)檢查時,應用程序本身必須處理這類關聯(lián)事宜。例如,將行按恰當順序插入表時應謹慎,并應避免產(chǎn)生孤立的子記錄。必須能夠在多記錄插入操作期間更正出現(xiàn)的錯誤。

·         如果ON DELETE是應用程序所需的唯一引用完整性功能,請注意,從MySQL服務器4.0起,可以使用多表DELETE語句,用單一語句從多個表中刪除行。請參見13.2.1節(jié),“DELETE語法”。

·         從具有外鍵的表刪除記錄時,在缺少ON DELETE的情況下,一種解決方式是為應用程序增加恰當?shù)腄ELETE語句。實際上,它與使用外鍵同樣快,而且移植性更好。

注意,使用外鍵在某些情況下會導致問題。

·         外鍵支持能處理很多引用完整性事宜,但仍需要仔細設計鍵的關系,以避免循環(huán)規(guī)則或不正確的級聯(lián)刪除組合。

·         DBA需要創(chuàng)建關聯(lián)拓撲,這會使從備份中恢復單獨表變得困難,該類情形并不罕見。(加載依賴其他表的表時,MySQL允許你臨時禁止外鍵檢查,從而降低了該難度)。請參見15.2.6.4節(jié),“FOREIGN KEY約束”。在MySQL 4.1.1以前。重新加載時,mysqldump能夠生成自動利用該性能的轉(zhuǎn)儲文件。

注意,SQL中的外鍵用于檢查和強制引用完整性,而不是聯(lián)合表。如果打算用SELECT語句獲取多個表的結果,可在表之間執(zhí)行聯(lián)合操作:

SELECT * FROM t1, t2 WHERE t1.id = t2.id;請參見13.2.7.1節(jié),“JOIN語法”。請參見3.6.6節(jié),“使用外鍵”。

ODBC應用程序常使用不帶“ON DELETE ...”的FOREIGN KEY語法來生成自動WHERE子句。

1.8.5.6. 視圖
在MySQL服務器5.0版中實現(xiàn)了視圖功能(包括可更新視圖)。在5.0.1和更高版本中,提供了二進制版的視圖功能。請參見第22章:視圖。

View(視圖)十分有用,它允許用戶像單個表那樣訪問一組關系(表),而且僅允許對它們的這類訪問。視圖也能限制對行的訪問(特定表的子集)。對于列控制的訪問,可使用MySQL服務器中的高級權限系統(tǒng)。請參見5.7節(jié),“MySQL訪問權限系統(tǒng)”。

在設計視圖的過程中,我們的宏偉目標是,在SQL的范圍內(nèi)盡可能與關聯(lián)數(shù)據(jù)庫系統(tǒng)的“Codd's Rule #6”兼容。“所有理論上可更新的視圖,實際上也應是可更新的”。

1.8.5.7. ‘--’作為注釋起始標記
一些其他SQL數(shù)據(jù)庫采用“--”作為注釋開始標志。MySQL服務器采用“#”作為注釋起始字符。對于MySQL服務器,也能使用C風格的注釋:/*該處為注釋*/。請參見9.5節(jié),“注釋語法”。

MySQL服務器3.23.3和更高版本支持“--”注釋風格,但要求注釋后面跟1空格(或控制字符,如新行)。之所以要求使用空格,是為了防止與自動生成SQL查詢有關的問題,它采用了類似下面的代碼,其中,自動為“!payment!”插入“payment”的值:

UPDATE account SET credit=credit-!payment!考慮一下,如果“payment”的值為負數(shù)如“-1”時會出現(xiàn)什么情況:

UPDATE account SET credit=credit--1在SQL中“credit--1”是合法的表達式,但是,如果“--1”被解釋為注釋開始,部分表達式將被舍棄。其結果是,表達式的意義與預期的意義完全不同。

UPDATE account SET credit=credit該語句不會對值作任何更改!這表明,允許注釋以“--”開始會產(chǎn)生嚴重后果。

采用MySQL服務器3.23.3和更高版本中的這類注釋方法,“credit--1”實際上很安全。

另一個安全特性是,mysql命令行客戶端將刪除所有以“--”開頭的行。

僅當使用高于3.23.3的MySQL時,下述信息才有意義:

如果有1個文本文件形式的SQL程序,該文件包含“--”注釋,應按下述方式使用replace實用工具,將其轉(zhuǎn)換為使用“#”字符的注釋:

shell> replace " --" " #" < text-file-with-funny-comments.sql \         | mysql db_name而不是通常的:

shell> mysql db_name < text-file-with-funny-comments.sql你也可以編輯注釋文件,將“--”注釋更改為“#”注釋:

shell> replace " --" " #" -- text-file-with-funny-comments.sql使用下述命令將其改回去:

shell> replace " #" " --" -- text-file-with-funny-comments.sql1.8.6. MySQL處理約束的方式
1.8.6.1. PRIMARY KEY和UNIQUE索引約束
1.8.6.2. 對無效數(shù)據(jù)的約束
1.8.6.3. ENUM和SET約束
使用MySQL,你可以使用允許回滾的事務表,以及不允許回滾的非事務表。因此,在MySQL中的約束處理功能與其他DBMS中的略有不同。在非事務性表中插入或更新大量行時,當出現(xiàn)錯誤以至于不能回滾所作的變更時,必須處理該情況。

其基本原理在于,在解析將要執(zhí)行的語句的同時,MySQL服務器會盡量為檢測到的問題生成錯誤信息,并會在執(zhí)行語句的同時盡量恢復出現(xiàn)的錯誤。在大多數(shù)情況下我們均是這樣作的,但不包括所有情況。

出現(xiàn)錯誤時,MySQL可選擇中途中止語句,或盡可能恢復并繼續(xù)執(zhí)行語句。默認情況下,服務器將采取后一種路線。這意味著,服務器可能會強制將非法值變?yōu)樽罱咏暮戏ㄖ担ɡ纾?br />
從MySQL 5.0.2開始,提供了數(shù)種SQL模式,使用它們,能夠?qū)θ绾谓邮芸赡転椴涣紨?shù)據(jù)值的方式進行更好的控制,也能在出現(xiàn)錯誤時,對是否繼續(xù)執(zhí)行語句或放棄語句進行控制。使用這些選項,能夠?qū)ySQL服務器配置為更為傳統(tǒng)的風格,類似于拒絕不恰當輸入的其他DBMS?梢栽谶\行時設置SQL模式,這樣,各客戶端就能選擇與其需求最為貼切的行為。請參見5.3.2節(jié),“SQL服務器模式”。

在以下部分,介紹了使用不同約束類型的情況。

1.8.6.1. PRIMARY KEY和UNIQUE索引約束
通常情況下,當你試圖INSERT或UPDATE會導致主鍵、唯一鍵或外鍵沖突的行時,將出現(xiàn)錯誤。如果你正在使用事務性存儲引擎時,如InnoDB,MySQL會自動回滾語句。如果你正在使用非事務性存儲引擎,MySQL將在出錯的行上停止執(zhí)行語句,剩余的行也不再處理。

如果你希望忽略這類鍵沖突,可使用MySQL支持的、用于INSERT和UPDATE的IGNORE關鍵字。在這種情況下,MySQL將忽略任何鍵沖突,并繼續(xù)處理下一行。請參見13.2.4節(jié),“INSERT語法”。請參見3.2.10節(jié),“UPDATE語法”。

使用mysql_info() C API函數(shù),能夠獲取關于實際插入或更新行數(shù)的信息。請參見25.2.3.34節(jié),“mysql_info()”。在MySQL 4.1和更高版本中,也能使用SHOW WARNINGS語句。請參見13.5.4.22節(jié),“SHOW WARNINGS語法”。

目前,只有InnoDB表支持外鍵。請參見15.2.6.4節(jié),“FOREIGN KEY約束”。計劃在MySQL 5.1中實施對MyISAM表的外鍵支持。

1.8.6.2. 對無效數(shù)據(jù)的約束
在MySQL 5.0.2之前,MySQL對非法或不當值并不嚴厲,而且為了數(shù)據(jù)輸入還會強制將它們變?yōu)楹戏ㄖ怠T贛ySQL 5.0.2和更高版本中,保留了以前的默認行為,但你可以為不良值選擇更傳統(tǒng)的處理方法,從而使得服務器能夠拒絕并放棄出現(xiàn)不良值的語句。本節(jié)介紹了MySQL的默認行為(寬大行為),新的嚴格的SQL模式,以及它們的區(qū)別。

如果你未使用嚴格模式,下述情況是真實的。如果將“不正確”的值插入到列,如將NULL值插入非NULL列,或?qū)⑦^大的數(shù)值插入數(shù)值列,MySQL會將這些列設置為“最可能的值”,而不是生成錯誤信息。

·         如果試圖將超范圍的值保存到數(shù)值列,MySQL服務器將保存0(最小的可能值)取而代之,或最大的可能值。

·         對于字符串,MySQL或保存空字符串,或?qū)⒆址M可能多的部分保存到列中。

·         如果打算將不是以數(shù)值開頭的字符串保存到數(shù)值列,MySQL將保存0。

·         MySQL允許將特定的不正確日期值保存到DATE和DATETIME列(如“2000-02-31”或“2000-02-00”)。其觀點在于,驗證日期不是SQL服務器的任務。如果MySQL能保存日期值并準確檢索相同的值,MySQL就能按給定的值保存它。如果日期完全不正確(超出服務器能保存的范圍)將在列中保存特殊的日期值“0000-00-00”取而代之。

·         如果試圖將NULL值保存到不接受NULL值的列,對于單行INSERT語句,將出現(xiàn)錯誤。對于多行INSERT語句或INSERT INTO ... SELECT語句,MySQL服務器會保存針對列數(shù)據(jù)類型的隱含默認值。一般情況下,對于數(shù)值類型,它是0,對于字符串類型,它是空字符串(''),對于日期和時間類型是“zero”。在13.1.5節(jié),“CREATE TABLE語法”一節(jié)中,討論了隱含的默認值。

·         如果INSERT語句未為列指定值,如果列定義包含明確的DEFAULT子句,MySQL將插入默認值。如果在定義中沒有這類DEFAULT子句,MySQL會插入列數(shù)據(jù)類型的隱含默認值。

采用前述規(guī)則的原因在于,在語句開始執(zhí)行前,無法檢查這些狀況。如果在更新了數(shù)行后遇到這類問題,我們不能僅靠回滾解決,這是因為存儲引擎可能不支持回滾。中止語句并不是良好的選擇,在該情況下,更新完成了“一半”,這或許是最差的情況。對于本例,較好的方法是“僅可能做到最好”,然后就像什么都未發(fā)生那樣繼續(xù)。

在MySQL 5.0.2和更高版本中,可以使用STRICT_TRANS_TABLES或STRICT_ALL_TABLES SQL模式,選擇更嚴格的處理方式。請參見5.3.2節(jié),“SQL服務器模式”。

STRICT_TRANS_TABLES的工作方式:

·         對于事務性存儲引擎,在語句中任何地方出現(xiàn)的不良數(shù)據(jù)值均會導致放棄語句并執(zhí)行回滾。

·         對于非事務性存儲引擎,如果錯誤出現(xiàn)在要插入或更新的第1行,將放棄語句。(在這種情況下,可以認為語句未改變表,就像事務表一樣)。首行后出現(xiàn)的錯誤不會導致放棄語句。取而代之的是,將調(diào)整不良數(shù)據(jù)值,并給出告警,而不是錯誤。換句話講,使用STRICT_TRANS_TABLES后,錯誤值會導致MySQL執(zhí)行回滾操作,如果可以,所有更新到此為止。

要想執(zhí)行更嚴格的檢查,請啟用STRICT_ALL_TABLES。除了非事務性存儲引擎,它與STRICT_TRANS_TABLES等同,即使當不良數(shù)據(jù)出現(xiàn)在首行后的其他行,所產(chǎn)生的錯誤也會導致放棄語句。這意味著,如果錯誤出現(xiàn)在非事務性表多行插入或更新過程的中途,僅更新部分結果。前面的行將完成插入或更新,但錯誤出現(xiàn)點后面的行則不然。對于非事務性表,為了避免這種情況的發(fā)生,可使用單行語句,或者在能接受轉(zhuǎn)換警告而不是錯誤的情況下使用STRICT_TRANS_TABLES。要想在第1場合防止問題的出現(xiàn),不要使用MySQL來檢查列的內(nèi)容。最安全的方式(通常也較快)是,讓應用程序負責,僅將有效值傳遞給數(shù)據(jù)庫。

有了嚴格的模式選項后,可使用INSERT IGNORE或UPDATE IGNORE而不是不帶IGNORE的INSERT或UPDATE,將錯誤當作告警對待。

1.8.6.3. ENUM和SET約束
ENUM和SET列提供了定義僅能包含給定值集合的列的有效方式。但是,從MySQL 5.0.2起,ENUM和SET不是實際約束。其原因與不重視NOT NULL的原因一樣。請參見1.8.6.2節(jié),“對無效數(shù)據(jù)的約束”。

ENUM列總有1個默認值。如果未指定默認值,對于包含NULL的列,默認值為NULL;否則,第1個枚舉值將被當作默認值。

如果在ENUM列中插入了不正確的值,或者,如果使用IGNORE將值強制插入了ENUM列,會將其設置為保留的枚舉值0,對于字符串情形,將顯示為空字符串。請參見11.4.4節(jié),“ENUM類型”。

如果在SET列中插入了不正確值,該值將被忽略。例如,如果列能包含值“a”、“b”和“c”,并賦值“a,x,b,y”,結果為“a,b”。請參見11.4.5節(jié),“SET類型”。

從5.0.2開始,可以對服務器進行配置,以使用嚴格的SQL模式。請參見5.3.2節(jié),“SQL服務器模式”。啟用嚴格模式后,ENUM或SET列的定義可作為對輸入至列的值的約束。如果值不滿足下述條件,將出現(xiàn)錯誤:

·         ENUM值必須是在列定義中給出的值之一,或內(nèi)部的數(shù)字等同物。該值不能是錯誤值(即,0或空字符串)。對于定義為ENUM('a','b','c')的列,諸如''、'd'和'ax'等,均是非法的,并將被拒。

·         SET值必須是空字符串,或由1個或多個在列定義中給出的且用逗號隔開的值組成。 對于定義為SET('a','b','c')的列,諸如'd'和'a,b,c,d'等,均是非法的,并將被拒。

如果使用了INSERT IGNORE或UPDATE IGNORE,在嚴格模式下,可抑制無效值導致的錯誤。在這種情況下,將生成警告而不是錯誤。對于ENUM,值將作為錯誤成員(0)插入。對于SET,會將給定值插入,但無效的子字符串將被刪除。例如,'a,x,b,y'的結果是'a,b',就像前面介紹的那樣。

論壇徽章:
0
12 [報告]
發(fā)表于 2008-04-15 11:38 |只看該作者

第2章:安裝MySQL

目錄

2.1. 一般安裝問題
2.1.1. MySQL支持的操作系統(tǒng)
2.1.2. 選擇要安裝的MySQL分發(fā)版
2.1.3. 怎樣獲得MySQL
2.1.4. 通過MD5校驗和或GnuPG驗證軟件包的完整性
2.1.5. 安裝布局
2.2. 使用二進制分發(fā)版的標準MySQL安裝
2.3. 在Windows上安裝MySQL
2.3.1. Windows系統(tǒng)要求
2.3.2. 選擇安裝軟件包
2.3.3. 用自動安裝器安裝MySQL
2.3.4. 使用MySQL安裝向?qū)?br /> 2.3.5. 使用配置向?qū)?br /> 2.3.6. 通過非安裝Zip文件安裝MySQL
2.3.7. 提取安裝檔案文件
2.3.8. 創(chuàng)建選項文件
2.3.9. 選擇MySQL服務器類型
2.3.10. 首次啟動服務器
2.3.11. 從Windows命令行啟動MySQL
2.3.12. 以Windows服務方式啟動MySQL
2.3.13. 測試MySQL安裝
2.3.14. 在Windows環(huán)境下對MySQL安裝的故障診斷與排除
2.3.15. 在Windows下升級MySQL
2.3.16. Windows版MySQL同Unix版MySQL對比
2.4. 在Linux下安裝MySQL
2.5.在Mac OS X中安裝MySQL
2.6. 在NetWare中安裝MySQL
2.7. 在其它類Unix系統(tǒng)中安裝MySQL
2.8. 使用源碼分發(fā)版安裝MySQL
2.8.1. 源碼安裝概述
2.8.2. 典型配置選項
2.8.3. 從開發(fā)源碼樹安裝
2.8.4. 處理MySQL編譯問題
2.8.5. MIT-pthreads注意事項
2.8.6. 在Windows下從源碼安裝MySQL
2.8.7. 在Windows下編譯MySQL客戶端
2.9. 安裝后的設置和測試
2.9.1. Windows下安裝后的過程
2.9.2. Unix下安裝后的過程
2.9.3. 使初始MySQL賬戶安全
2.10. 升級MySQL
2.10.1. 從5.0版升級
2.10.2. 升級授權表
2.10.3. 將MySQL數(shù)據(jù)庫拷貝到另一臺機器
2.11. 降級MySQL
2.12. 具體操作系統(tǒng)相關的注意事項
2.12.1. Linux注意事項
2.12.2. Mac OS X注意事項
2.12.3. Solaris注意事項
2.12.4. BSD注意事項
2.12.5. 其它Unix注意事項
2.12.6. OS/2注意事項
2.13. Perl安裝注意事項
2.13.1. 在Unix中安裝Perl
2.13.2. 在Windows下安裝ActiveState Perl
2.13.3. 使用Perl DBI/DBD接口的問題


本章描述怎樣獲得并安裝MySQL:

1.    要了解支持哪些平臺。請注意并非所有支持的平臺同等適合運行MySQL。在部分平臺上會比其它平臺更有效、穩(wěn)定。詳情請參見2.1.1節(jié),“MySQL支持的操作系統(tǒng)” 。

2.    確定你應該使用的分發(fā)的版本?色@得MySQL的多個版本,大部分有多種分發(fā)版。你可以選擇包含二進制(預編譯)代碼或源碼形式的預打包分發(fā)。如果不能確定,則使用二進制分發(fā)版。對于想看我們的最新開發(fā)并幫助我們測試新代碼的用戶,我們提供了公共訪問接口,可以訪問我們最新的源碼樹。為了確定你應該使用的分發(fā)的版本和類型,請參見2.1.2節(jié),“選擇要安裝的MySQL分發(fā)版”。

3.    下載想安裝的分發(fā)版。對于能從其獲得MySQL的站點列表,請參見2.1.3節(jié),“怎樣獲得MySQL”。用來驗證分發(fā)版完整性的指令參見2.1.4節(jié),“通過MD5校驗和或GnuPG驗證軟件包的完整性”。

4.    安裝分發(fā)版。針對二進制代碼和源碼分發(fā)版的安裝說明在2.2節(jié),“使用二進制分發(fā)版的標準MySQL安裝”中講述。針對二進制代碼和源碼分發(fā)版的安裝說明在2.8節(jié),“使用源碼分發(fā)版安裝MySQL”中講述。

注釋:如果你想要將當前版本的MySQL升級到最新版本,而不是首次安裝MySQL,關于升級過程和升級前應考慮的問題請參見2.10節(jié),“升級MySQL”。

如果遇到安裝問題,2.12節(jié),“具體操作系統(tǒng)相關的注意事項”中提供了解決平臺相關問題的信息。

5.    進行安裝后的設置。安裝MySQL后,請閱讀2.9節(jié),“安裝后的設置和測試”。本節(jié)介紹了重要的信息,可以確保MySQL服務器正確工作。本節(jié)還描述了如何使尚未有密碼的初始MySQL用戶賬戶的安全。不管你是用二進制代碼還是源碼分發(fā)版來安裝MySQL,這些過程均適用。

如果要運行MySQL基準腳本,必須使用支持MySQL的Perl。請參見2.13節(jié),“Perl安裝注意事項”。

論壇徽章:
0
13 [報告]
發(fā)表于 2008-04-15 11:39 |只看該作者

2.1. 一般安裝問題

在安裝MySQL前,你應該:

1.    確定是否MySQL將運行在你的平臺上。

2.    選擇安裝的分發(fā)版。

3.    下載分發(fā)版并驗證其完整性。

本節(jié)包含執(zhí)行上述步驟必需的信息。之后,你可以按照本章中后面幾節(jié)的說明來安裝選擇的分發(fā)版。

2.1.1. MySQL支持的操作系統(tǒng)
本節(jié)列出了可以運行MySQL的操作系統(tǒng)。

我們使用GNU Autoconf,因此將MySQL移植到所有使用Posix線程和C++編譯器的現(xiàn)代系統(tǒng)是可能的。(要求服務器支持線程。如果只是編譯客戶端代碼,則只需要C++編譯器)。我們主要在Linux(SuSE和Red Hat)、FreeBSD和Sun Solaris(版本8和9)上使用并開發(fā)本軟件。

已經(jīng)報告MySQL可以在下列操作系統(tǒng)/線程包的組合上成功地進行編譯。注意,對于很多操作系統(tǒng),原生的線程僅支持最新的版本。

·         有原生線程的AIX 4.x和5.x。請參見2.12.5.3節(jié),“IBM-AIX注意事項”。

·         Amiga。

·         包括MIT-pthreads包的BSDI 2.x。請參見2.12.4.4節(jié),“BSD/OS 2.x版注意事項”。

·         有原生線程的BSDI3.0,3.1和4.x。請參見2.12.4.4節(jié),“BSD/OS 2.x版注意事項”。

·         有原生線程的Digital Unix 4.x。請參見2.12.5.5節(jié),“Alpha-DEC-UNIX(Tru64)版注意事項”.。

·         包括MIT-pthreads包的FreeBSD 2.x。請參見2.12.4.1節(jié),“FreeBSD注意事項”。

·         有原生線程的FreeBSD 3.x和4.x。請參見2.12.4.1節(jié),“FreeBSD注意事項”。

·         有LinuxThreads的FreeBSD 4.x。請參見2.12.4.1節(jié),“FreeBSD注意事項”。

·         有DCE線程或MIT-pthreads包的HP-UX 10.20。請參見2.12.5.1節(jié),“HP-UX 10.20版注意事項”。

·         有原生線程的HP-UX 11.x。請參見2.12.5.2節(jié),“HP-UX 11.x版注意事項”。

·         有LinuxThreads 0.7.1+或glibc 2.0.7+,適合各種CPU的Linux 2.0+。請參見2.12.1節(jié),“Linux注意事項”。

·         Mac OS X。請參見2.12.2節(jié),“Mac OS X注意事項”。

·         NetBSD 1.3/1.4 Intel和NetBSD 1.3 Alpha(需要GNU make)。請參見2.12.4.2節(jié),“NetBSD注意事項”。

·         Novell NetWare 6.0。請參見2.6節(jié),“在NetWare中安裝MySQL”。

·         有原生線程的OpenBSD > 2.5。包括MIT-pthreads包的OpenBSD < 2.5。請參見2.12.4.3節(jié),“OpenBSD 2.5版注意事項”。

·         OS/2 Warp 3, FixPack 29和OS/2 Warp 4, FixPack 4. 參見2.12.6節(jié),“OS/2注意事項”。

·         有最新FSU Pthreads移植包的SCO OpenServer 5.0.X。請參見2.12.5.8節(jié),“SCO UNIX和OpenServer 5.0.x版注意事項”。

·         SCO UnixWare 7.1.x。請參見2.12.5.9節(jié),“SCO UnixWare 7.1.x和OpenUNIX 8.0.0版注意事項”。

·         SCO Openserver 6.0.x。請參見2.12.5.10節(jié),“SCO OpenServer 6.0.x版注意事項”。

·         有原生線程的SGI Irix 6.x。請參見2.12.5.7節(jié),“SGI Irix注意事項”。

·         SPARC和x86上有原生線程的Solaris 2.5和以上版本。請參見2.12.3節(jié),“Solaris注意事項”。

·         包括MIT-pthreads包的SunOS 4.x。請參見2.12.3節(jié),“Solaris注意事項”。

·         Tru64 Unix。請參見2.12.5.5節(jié),“Alpha-DEC-UNIX(Tru64)版注意事項”。

·         Windows 9x、Me、NT、2000、XP和2003。請參見2.3節(jié),“在Windows上安裝MySQL”。

并非所有支持的平臺同等適合運行MySQL。根據(jù)以下因素確定某個平臺適合高負荷關鍵任務MySQL服務器的程度:

·         線程庫的穩(wěn)定性?赡苣硞平臺的反應不錯,但MySQL的穩(wěn)定性取決于它所調(diào)用的線程庫,不管其它部分是否完善。

·         內(nèi)核和線程庫利用均衡多處理器(SMP)系統(tǒng)的能力。換句話說,當進程創(chuàng)建一個線程時,應允許線程運行原進程所運行CPU之外的其它處理器。

·         內(nèi)核和線程庫運行在短范圍頻繁獲取和釋放互斥體而不需要過多地交換內(nèi)容的多個線程的能力。如果執(zhí)行pthread_mutex_lock()時產(chǎn)生的CPU時間太短,則會嚴重影響MySQL。如果不關注該問題,增加過多的CPU實際會降低MySQL的速度。

·         常規(guī)文件系統(tǒng)的穩(wěn)定性和性能。

·         如果數(shù)據(jù)庫表很大,文件系統(tǒng)處理大文件的能力和處理效率。

·         我們在該平臺上使用MySQL AB的經(jīng)驗水平。如果我們熟悉一個平臺,我們可以對具體平臺進行優(yōu)化并固定編譯時間。我們還可以提供建議如何更好地為MySQL配置系統(tǒng)。

·         我們在類似配置下所完成的內(nèi)部測試的數(shù)量。

·         在同一平臺類似配置下成功運行MySQL的用戶數(shù)。如果該數(shù)字很高,則說明遇到具體平臺問題的幾率要小得多。

根據(jù)前面的標準,允許MySQL的最好的平臺是x86,安裝SuSE Linux,使用2.4或2.6內(nèi)核,和ReiserFS(或類似Linux分發(fā)版)和安裝了 Solaris(2.7-9)的SPARC。FreeBSD排第三位,但我們真正希望一旦線程庫得到改進,它也可以提高排名。從某一觀點我們還希望提高其它MySQL目前正在上面編譯、允許的平臺的排名,但穩(wěn)定性和性能上可以要求不同等級。這需要我們與MySQL所依賴的操作系統(tǒng)和庫組件開發(fā)人員共同努力。如果你對改進某個組件感興趣,可能影響其開發(fā),需要更多的關于MySQL如何能運行得更好的說明,請向我們的MySQL internals發(fā)送郵件。請參見1.7.1.1節(jié),“The MySQL郵件列表”。

請注意前面的對比并不是說一個操作系統(tǒng)總體上比另一個操作系統(tǒng)要好。我們只是討論選擇一個OS來專門運行MySQL。記住了這一點,如果考慮更多的因素,對比結果可能會不同。在某些情況下,一個OS比另一個OS好的原因只是我們已經(jīng)為具體平臺做出了更多的努力來進行測試和優(yōu)化。我們只是陳述我們的觀點幫助你選擇運行MySQL的平臺。

2.1.2. 選擇要安裝的MySQL分發(fā)版
2.1.2.1. 選擇要安裝的MySQL版本
2.1.2.2. 選擇分發(fā)格式
2.1.2.3. 如何發(fā)布更新以及何時發(fā)布更新
2.1.2.4. 發(fā)布原則:發(fā)行版本中沒有已知的缺陷
2.1.2.5. MySQL AB編譯的MySQL二進制版本
準備安裝MySQL時,你應確定使用哪個版本。MySQL的開發(fā)有幾個發(fā)布系列,可以選擇最適合你要求的一個版本。確定了安裝的版本后,便可以選擇分發(fā)版。有二進制或源碼發(fā)布格式。
2.1.2.1. 選擇要安裝的MySQL版本
首先要作出決策,你是否想要使用最新的開發(fā)版本或最終的穩(wěn)定版本。在MySQL開發(fā)過程中,同時存在多個發(fā)布系列,每個發(fā)布處在成熟度的不同階段:

·         MySQL 5.2是最新開發(fā)的發(fā)布系列,是將執(zhí)行新功能的系列。不久的將來可以使用Alpha發(fā)行,以便感興趣的用戶進行廣泛的測試。

·         MySQL 5.1是當前穩(wěn)定(產(chǎn)品質(zhì)量)發(fā)布系列。只針對漏洞修復重新發(fā)布;沒有增加會影響穩(wěn)定性的新功能。

·         MySQL 5.0是前一穩(wěn)定(產(chǎn)品質(zhì)量)發(fā)布系列。只針對嚴重漏洞修復和安全修復重新發(fā)布;沒有增加會影響該系列的重要功能。

·         MySQL 4.0和3.23是舊的穩(wěn)定(產(chǎn)品質(zhì)量)發(fā)布系列。該版本不再使用,新的發(fā)布只用來修復特別嚴重的漏洞(以前的安全問題)。

我們不認為有完全的凍結版,因為任何版本均需要對漏洞進行修復和其它修復。對于“某種程度的凍結”,我們是指我們可以在產(chǎn)品發(fā)布中增加一些不會影響當前工作的小東西。自然,前一系列的相關漏洞修復會移植到后面的系列。

通常, 如果你是第一次開始使用MySQL或想要將它移植到一些還沒有二進制分發(fā)版的系統(tǒng)上,我們推薦使用最終的穩(wěn)定版本。目前是MySQL 5.1。我們已經(jīng)使用MySQL基準對所有MySQL發(fā)布進行了檢查,包括來自開發(fā)系列的發(fā)布,在發(fā)布前還使用基準套件來測試它。

如果你正在運行一個老的系統(tǒng)并且想要升級,但是又不想冒險進行非無縫升級,應該升級到最新版本中你正使用的相同的發(fā)布系列(只有版本號的最后部分比你使用的新)。我們已經(jīng)試著僅修復致命缺陷,對那個版本進行了很小的相對安全的改動。

如果你想要使用產(chǎn)品發(fā)布系列中所沒有的新功能,你可以使用開發(fā)系列的版本。請注意開發(fā)發(fā)布不如產(chǎn)品發(fā)布穩(wěn)定。

如果你想要使用包含所有最新補丁和漏洞修復的最新源碼,可以使用我們的BitKeeper庫。這些庫還沒有發(fā)布,但可以預覽代碼,將來的發(fā)布基于這些代碼。

MySQL的命名機制使用由3個數(shù)字和一個后綴組成的版本號。例如,像mysql-5.0.9-beta的版本號這樣解釋:

·         第1個數(shù)字(5)是主版本號,描述了文件格式。所有版本5的發(fā)行都有相同的文件格式。

·         第2個數(shù)字(0)是發(fā)行級別。主版本號和發(fā)行級別組合到一起便構成了發(fā)行序列號。

·         第3個數(shù)字(9)是在此發(fā)行系列的版本號,隨每個新分發(fā)版遞增。通常你需要已經(jīng)選擇的發(fā)行(release)的最新版本(版本)。

每次更新后,版本字符串的最后一個數(shù)字遞增。如果相對于前一個版本增加了新功能或有微小的不兼容性,字符串的第二個數(shù)字遞增。如果文件格式改變,第一個數(shù)字遞增。

后綴顯示發(fā)行的穩(wěn)定性級別。通過一系列后綴顯示如何改進穩(wěn)定性?赡艿暮缶Y有:

·         alpha表明發(fā)行包含大量未被徹底測試的新代碼。已知的缺陷應該在新聞小節(jié)被記錄。請參見附錄D:MySQL變更史。在大多數(shù)alpha版本中也有新的命令和擴展。alpha版本也可能有主要代碼更改等開發(fā)。但我們在發(fā)布前一定對其進行測試。

·         beta意味著該版本功能是完整的,并且所有的新代碼被測試了,沒有增加重要的新特征,應該沒有已知的缺陷。當alpha版本至少一個月沒有出現(xiàn)報導的致命漏洞,并且沒有計劃增加導致已經(jīng)實施的功能不穩(wěn)定的新功能時,版本則從alpha版變?yōu)閎eta版。

在以后的beta版、發(fā)布版或產(chǎn)品發(fā)布中,所有API、外部可視結構和SQL命令列均不再更改。

·         rc是發(fā)布代表;是一個發(fā)行了一段時間的beta版本,看起來應該運行正常。只增加了很小的修復。(發(fā)布代表即以前所稱的gamma 版)

·         如果沒有后綴,這意味著該版本已經(jīng)在很多地方運行一段時間了,而且沒有非平臺特定的缺陷報告。只增加了關鍵漏洞修復修復。這就是我們稱為一個產(chǎn)品(穩(wěn)定)或“通用”版本的東西。

MySQL的命名機制于其它產(chǎn)品稍有不同。一般情況,我們可以很放心地使用已經(jīng)投放市場兩周而沒有被相同發(fā)布系列的新版本所代替的版本。

MySQL所有版本都經(jīng)過我們的標準測試和基準測試運行,以保證它們可相當安全地使用。因為標準測試不斷擴充以檢測以前發(fā)現(xiàn)的缺陷,測試套件一直在改進之中。

所有版本都至少已經(jīng)用下列套件進行了測試:

·         一個內(nèi)部測試套件

mysql-test目錄包含一整套測試案例。我們針對每個二進制服務器進行這些測試。關于該測試套件的詳細信息參見27.1.2節(jié),“MySQL測試套件”。

·         MySQL基準套件

它運行一定范圍的普通查詢。它也是一個測試,檢測最新的優(yōu)化處理是否真的使代碼更快。請參見7.1.4節(jié),“MySQL基準套件”。

·         crash-me測試

這嘗試決定數(shù)據(jù)庫支持什么功能和它的能力與限制是什么。請參見7.1.4節(jié),“MySQL基準套件”。

另一個測試是在內(nèi)部生產(chǎn)環(huán)境中使用最新MySQL版本,至少在一臺機器上。我們有超過100GB的數(shù)據(jù)可供使用。

2.1.2.2. 選擇分發(fā)格式
選擇了MySQL的安裝版本后,要做的第二項決策是你是使用源碼分發(fā)版還是二進制分發(fā)版。大多數(shù)情況,如果你的平臺上已經(jīng)有了一個二進制分發(fā)版,你可能使用二進制分發(fā)版。大多數(shù)平臺可以使用原格式二進制分發(fā)版,例如Linux使用RPM文件,Mac OS X使用DMG安裝軟件包。也可以使用Zip文件或壓縮tar文件。

選擇二進制分發(fā)版的理由:

·         二進制分發(fā)版比源碼分發(fā)版更容易安裝。

·         為了滿足不同用戶的需求,我們提供了兩種不同的二進制版本:一個是編譯過的帶非事務儲存引擎(小的快速庫),另一個配置了最重要的擴展選項,例如事務安全表。兩個版本均從相同的源碼分發(fā)版編譯而來。所有本地MySQL客戶端均可以連接任一版本的MySQL服務器。

擴展MySQL庫分發(fā)版標有-max后綴,配置了與mysqld-max相同的選項。請參見5.1.2節(jié),“mysqld-max擴展MySQL服務器”。

如果想要使用MySQL-Max RPM,必須首先安裝標準MySQL-server RPM。

在某些環(huán)境下,最好安裝源碼分發(fā)版MySQL:

·         你想要在某個明顯的位置安裝MySQL。標準二進制分發(fā)版可以安裝到任何地方,但你想更加靈活地將MySQL組件放到某個地方。

·         你想要將mysqld配置一些標準二進制分發(fā)版中未包括的一些特殊特征。下面是一些你想要使用的最常用的選項:

o        --with-innodb(在所有MySQL 5.1庫版本中默認使用)

o        --with-berkeley-db(只適合部分平臺)

o        --with-libwrap

o        --with-名d-z-libs(適合部分二進制)

o        --with-debug[=full]

·         你想要將mysqld配置一些標準二進制分發(fā)版中已經(jīng)包括的一些特殊特征。例如,一般編譯過的分發(fā)版支持所有字符集。如果你想要一個更小的MySQL服務器,可以重新編譯只支持你需要的字符集。

·         你有一個專用編譯器(例如pgcc)或想要使用更好地優(yōu)化適用你的處理器的編譯器選項。二進制分發(fā)版編譯的選項適合同一處理器族的各種處理器。

·         你想要使用BitKeeper庫中的最新源碼,以訪問所有最新漏洞修復。例如,如果你發(fā)現(xiàn)了漏洞并將它報告給MySQL開發(fā)小組,漏洞修復傳遞給源碼庫,你便可以訪問它。發(fā)布實際發(fā)行后才會出現(xiàn)漏洞修復。

·         如果你想要閱讀(或修改)構成MySQL的C和C++代碼,你應該拿到源碼分發(fā)版。源碼總是最終的手冊。

·         源碼分發(fā)版也比二進制的分發(fā)版包含更多的測試和實例。

論壇徽章:
0
14 [報告]
發(fā)表于 2008-04-15 11:40 |只看該作者
2.1.2.3. 如何發(fā)布更新以及何時發(fā)布更新
MySQL進展的相當快,我們想要與其它MySQL用戶分享它。當我們有一個看來其它人似乎需要的非常有用的功能時,我們就試著制作一個發(fā)行版本。

我們也嘗試幫助那些需要很容易實現(xiàn)的功能的用戶,我們也關注我們授權的用戶想要什么,我們更特別關注我們支持的客戶想要什么,并且盡力幫助他們。

沒有人一定要下載一個新版本,新聞小節(jié)中將告訴你新版本是否有一些你確實想要的東西。請參見附錄D:MySQL變更史。

當更新MySQL時,我們使用下列策略:

·         將發(fā)布每個系列。每次發(fā)布時,版本的最后一個數(shù)字為同一系列前一版本的基礎上加1。

·         穩(wěn)定的測試過的產(chǎn)品版本每年準備出現(xiàn)1-2次,但是如果發(fā)現(xiàn)小缺陷,只有缺陷修復的一個版本將被發(fā)行。

·         工作版本/對舊版本的漏洞修復文件每4-8周出現(xiàn)一次。

·         對一些平臺的二進制分發(fā)版,主要版本由我們制作。其它人可以為其它系統(tǒng)制作二進制分發(fā)版,但是可能不多見。

·         我們一旦識別并修正了非緊急但煩人的缺陷,則立即將其發(fā)布,可以從公共BitKeeper庫中立即得到修復代碼,并將包含到下一發(fā)布版中。

在任何情況下,如果在一個發(fā)行中有一個致命缺陷,我們將盡快制作一個新版本來修復。(我們希望其它公司也這樣做!)
2.1.2.4. 發(fā)布原則:發(fā)行版本中沒有已知的缺陷
我們投入了大量的時間和工作來使我們的發(fā)布沒有缺陷。我們從來沒有發(fā)布過含有已知致命重復性缺陷的單一MySQL版本。(“致命”缺陷指能在正常應用中導致MySQL癱瘓的缺陷,對于正常查詢產(chǎn)生錯誤答案,或有安全問題)。

我們已經(jīng)將所有公開問題、缺陷和由設計決策決定的事宜記入文件。請參見A.8節(jié),“MySQL中的已知事宜”。

我們的目標是修復一切可以修復的東西,而不會使穩(wěn)定的MySQL版本變得不穩(wěn)定。在某些情況,這意味著我們可以在開發(fā)版本中修復問題,而不是在穩(wěn)定的 (產(chǎn)品) 版本。自然,我們會將這些問題記入文檔,以便用戶能知道。

下面描述了我們?nèi)绾尾僮鳎?br />
·         我們通過我們的客戶支持列表、在http://bugs.mysql.com/ 缺陷數(shù)據(jù)庫和MySQL外部郵件列表來監(jiān)控缺陷。

·         當前版本中所有被報導的缺陷被輸入缺陷數(shù)據(jù)庫。

·         當我們修復缺陷,我們總是為其設計一次測試案例,并將其包括進測試系統(tǒng)中,以確保不會漏檢使缺陷再現(xiàn)。(所有修復的缺陷中大約90%的具有測試案例)。

·         為添加到MySQL中的所有新功能創(chuàng)建測試案例。

·         我們開始構建新的MySQL發(fā)布前,我們確保修復了MySQL版本(3.23.x、4.0.x、4.1.x、5.0.x等等)中所有被報導的重復性缺陷。如果某些內(nèi)容不能修復(由于MySQL內(nèi)部的一些設計決策),我們在本手冊中記錄下來。請參見A.8節(jié),“MySQL中的已知事宜”。

·         我們在所有支持二進制的平臺(15+平臺)上構建并運行我們的測試套件和基準套件。

·         如果在某個平臺上測試或基準套件失敗,我們不會公布二進制。如果問題是由于源碼中的普通缺陷,我們將進行修復并在所有系統(tǒng)上構建并測試。

·         構建和測試過程需要2-3天。如果在該過程中我們收到致命缺陷相關報告(例如,會造成內(nèi)核轉(zhuǎn)儲),我們將修復該問題并重新啟動構建過程。

·         在http://dev.mysql.com/上公布二進制后,我們則向mysql發(fā)出公告消并announce郵件列表。請參見1.7.1.1節(jié),“The MySQL郵件列表”。公告消息包含所有發(fā)布的更改列表和已知問題。只有部分發(fā)版不需要已知的問題部分。

·         為了讓我們的用戶快速訪問最新MySQL功能,我們每4-8周產(chǎn)生一個新的MySQL發(fā)布。每天構建源碼快照,可以從http://downloads.mysql.com/snapshots.php獲得。

·         如果,盡管經(jīng)過我們最大的努力,我們在發(fā)布后仍收到缺陷報告,即在某個具體平臺上出現(xiàn)嚴重問題,我們將立即進行修復,并為該平臺構建一個新的 'a'版本。由于我們的大用戶群,可以很快地查出并解決此類問題。

·         我們?yōu)楸WC穩(wěn)定版本所做的跟蹤記錄不錯。在最近150個發(fā)布中,我們只需要對其中不到10個重新構建。其中有3個案例,缺陷為我們的構建機器上的glibc 庫,花了很長時間來跟蹤。

2.1.2.5. MySQL AB編譯的MySQL二進制版本
作為MySQL AB的服務,我們提供了一套二進制MySQL分發(fā)版,已經(jīng)在我們的站點上所列的系統(tǒng)或支持MySQL、友好地為我們提供訪問的機器上的系統(tǒng)上編譯過。

除了具體平臺安裝軟件包格式提供的二進制分發(fā)版,我們還以壓縮tar文件(.tar.gz文件)為多種平臺提供了二進制分發(fā)版。請參見2.2節(jié),“使用二進制分發(fā)版的標準MySQL安裝”。

對于Windows分發(fā)版,參見2.3節(jié),“在Windows上安裝MySQL”。

使用腳本 Build-tools/Do-compile生成這些分發(fā)版,可以編譯源碼并使用scripts/make_binary_distribution創(chuàng)建二進制tar.gz文件。

通過下面的編譯器和選項來配置并構建二進制分發(fā)版?梢圆榭锤鱾庫二進制tar文件分發(fā)版的腳本bin/mysqlbug內(nèi)的變量COMP_ENV_INFO和 CONFIGURE_LINE來查看這些信息。

在MySQL AB開發(fā)系統(tǒng)上構建下面的二進制:
·         Linux 2.4.xx x86中的gcc 2.95.3:

CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

·         Linux 2.4.x x86中的icc(Intel C++ Compiler 8.1或更高版本):

CC=icc CXX=icpc CFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" CXXFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-embedded-server --with-innodb

請注意Intel 編譯器8.1版和更高版有不同的“純”C(icc)驅(qū)動程序和C++(icpc)驅(qū)動程序;如果你使用icc 8.0版本或較早的版本來構建MySQL,需要設置CXX=icc。

·         Linux 2.4.xx Intel Itanium 2中的ecc (Intel C++ Itanium Compiler 7.0):

CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2 -tpp2 -ip -nolib_inline" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile

·         Linux 2.4.xx Intel Itanium中的ecc(Intel C++ Itanium Compiler 7.0):

CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile

·         Linux 2.4.xx alpha中的ccc(Compaq C V6.2-505 / Compaq C++ V6.3-006):

CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch generic -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared --disable-shared

·         Linux 2.x.xx ppc中的gcc 2.95.4:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-embedded-server --with-innodb

·         Linux 2.4.xx s390中的gcc 2.95.3:

CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

·         Linux 2.4.xx x86_64(AMD64)中的gcc 3.2.1:

CXX=gcc ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

·         Sun Solaris 8 x86中的gcc 3.2.3:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-inno

·         Sun Solaris 8 SPARC中的gcc 3.2:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared

·         Sun Solaris 8 SPARC 64-bit中的gcc 3.2:

CC=gcc CFLAGS="-O3 -m64 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -m64 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared

·         Sun Solaris 9 SPARC中的gcc 2.95.3:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-curses-libs=-lcurses --disable-shared

·         Sun Solaris 9 SPARC中的cc-5.0(Sun Forte 5.0):

CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt -D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --enable-thread-safe-client --disable-shared

·         IBM AIX 4.3.2 ppc中的gcc 3.2.3:

CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared

·         IBM AIX 4.3.3 ppc中的xlC_r(IBM Visual Age C/C++ 6.0):

CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" CXX=xlC_r CXXFLAGS ="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared --with-innodb

·         IBM AIX 5.1.0 ppc中的gcc 3.3:

CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared

·         IBM AIX 5.2.0 ppc中的xlC_r(IBM Visual Age C/C++ 6.0):

CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" CXX=xlC_r CXXFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared --with-embedded-server --with-innodb

·         HP-UX 10.20 pa-risc1.1中的gcc 3.1:

CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX -I/opt/dce /include -felide-constructors -fno-exceptions -fno-rtti -O3 -fPIC" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-pthread --with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC --disable-shared

·         HP-UX 11.00 pa-risc中的aCC(HP ANSI C++ B3910B A.03.50):

CC=cc CXX=aCC CFLAGS=+DAportable CXXFLAGS=+DAportable ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-embedded-server --with-innodb

·         HP-UX 11.11 pa-risc2.0 64bit中的aCC(HP ANSI C++ B3910B A.03.33):

CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

·         HP-UX 11.11 pa-risc2.0 32bit中的aCC(HP ANSI C++ B3910B A.03.33):

CC=cc CXX=aCC CFLAGS="+DAportable" CXXFLAGS="+DAportable" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb

·         HP-UX 11.22 ia64 64bit中的aCC(HP aC++/ANSI C B3910B A.05.50):

CC=cc CXX=aCC CFLAGS="+DD64 +DSitanium2" CXXFLAGS="+DD64 +DSitanium2" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-embedded-server --with-innodb

·         Apple Mac OS X 10.2 powerpc中的gcc 3.1:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

·         FreeBSD 4.7 i386中的gcc 2.95.4:

CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=not-used --disable-shared

·         使用LinuxThreads的FreeBSD 4.7 i386中的gcc 2.95.4:

CFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" CXXFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-thread-libs="-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R -D_THREAD_SAFE -I /usr/local/include/pthread/linuxthreads -L/usr/local/lib -llthread -llgcc_r" --disable-shared --with-embedded-server --with-innodb

·         QNX Neutrino 6.2.1 i386中的gcc 2.95.3qnx-nto 20010315:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

下面的二進制是在由其它用戶提供給MySQL AB的第三方系統(tǒng)上構建而成。這是免費贈送;MySQL AB沒有完全控制這些系統(tǒng),因此我們只能對在這些系統(tǒng)上構建的二進制提供有限的支持。

·           SCO Unix 3.2v5.0.7 i386中的gcc 2.95.3:

CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentium -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared

·         SCO UnixWare 7.1.4 i386中的CC 3.2:

CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared --with-readline

·         CO OpenServer 6.0.0 i386中的CC 3.2:

CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared --with-readline

·         Compaq Tru64 OSF/1 V5.1 732 alpha中的cc/cxx(Compaq C V6.3-029i / DIGITAL C++ V6.1-027):

CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias -fast -inline speed -speculate all -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-shared --with-mysqld-ldflags=-all-static

·            SGI Irix 6.5 IP32中的gcc 3.0.1:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

·         FreeBSD/sparc64 5.0中的gcc 3.2.1:

CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb

在MySQL AB過去提供的二進制軟件包中應用了下面的編譯選項。這些二進制不再進行更新,但是在這里列出了這些編譯選項供參考。

·          Linux 2.2.xx SPARC中的egcs 1.1.2:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared

·         Linux 2.2.x x686中的gcc 2.95.2:

CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charsets=complex

·         SunOS 4.1.4 2 sun4c中的gcc 2.7.2.1:

CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-assembler

·         SunOS 5.5.1(及以上版本)sun4u中的egcs 1.0.3a或2.90.27或gcc 2.95.2和更新版:

·         CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex --enable-assembler

·         SunOS 5.6 i86pc中的gcc 2.8.1:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex

·         BSDI BSD/OS 3.1 i386中的gcc 2.7.2.1:

CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

·         BSDI BSD/OS 2.1 i386中的gcc 2.7.2:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

·         AIX 4.2中的gcc 2.7.2.2:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

如果你有更好的上述配置選項,可以向MySQL internals郵件列表發(fā)送郵件。請參見1.7.1.1節(jié),“The MySQL郵件列表”。

在我們的站點中列出的MySQL 5.1發(fā)布的RPM分發(fā)版是由MySQL AB產(chǎn)生的。

如果你想要編譯MySQL調(diào)試版本,應當在前面的configure命令中加上--with-debug或--with-debug=full,并去掉-fomit-frame-pointer選項。

論壇徽章:
0
15 [報告]
發(fā)表于 2008-04-15 11:40 |只看該作者
2.1.3. 怎樣獲得MySQL
檢查MySQL下載頁(http://dev.mysql.com/downloads/ )獲取當前版本和下載指令信息。關于MySQL下載鏡像站點的完整的最新列表,參見 http://dev.mysql.com/downloads/mirrors.html。你可以在此發(fā)現(xiàn)MySQL鏡像站點和如何報告有問題的或過時的鏡像站點的信息。
我們的主鏡像站點位于http://mirrors.sunsite.dk/mysql/。

2.1.4. 通過MD5校驗和或GnuPG驗證軟件包的完整性
2.1.4.1. 驗證MD5校驗和
2.1.4.2. 通過GnuPG進行簽名檢查
2.1.4.3. 使用RPM進行簽名檢查
下載了適合你的需求的MySQL安裝軟件包并在安裝前,你應當確保它的完整性,沒有被篡改。MySQL AB提供了3種完整性檢查方法:
·         MD5校驗和

·         使用GnuPG、GNU Privacy Guard對簽名進行加密

·         對于RPM軟件包,使用內(nèi)嵌式RPM完整性驗證機制

下面的章節(jié)描述了如何使用這些方法。

如果你注意到MD5校驗和與GPG簽名不匹配,首先應嘗試多次下載相關安裝軟件包,可以從其它鏡像站點。如果你反復嘗試仍不能成功驗證安裝軟件包的完整性,請將此類問題通知給我們,包括完整的安裝軟件包名和你使用的下載站點,在<webmaster@mysql.com>或<build@mysql.com>。不要使用缺陷-報告機制來報告下載問題。

2.1.4.1. 驗證MD5校驗和
下載MySQL安裝軟件包后,你應當確保它的MD5校驗和與提供的MySQL下載頁上的相匹配。每個安裝軟件包有唯一的校驗和,可以用下面的命令來驗證,其中package_name是你下載的安裝軟件包的名稱:

shell> md5sum package_name示例:

  shell> md5sum mysql-st和ard-5.1.2-alpha-linux-i686.tar.gz  aaab65abbec64d5e907dcd41b8699945  mysql-st和ard-5.1.2-alpha-linux-i686.tar.gz你應當驗證結果校驗和(十六進制數(shù)字字符串)與下載頁上相關安裝軟件包下面顯示的校驗和相匹配。

注釋:一定要驗證歸檔文件(例如,.zip或.tar.gz文件)的校驗和,而不是其中包括的文件。

請注意并非所有操作系統(tǒng)支持md5sum命令。在一些操作系統(tǒng)上,只是稱為md5,另一些根本不裝載它。在Linux中,它是GNU Text Utilities安裝軟件包的一部分,適合各種平臺?梢詮膆ttp://www.gnu.org/software/textutils/下載源碼。如果你已經(jīng)安裝了OpenSSL,還可以使用命令openssl md5 package_name。http://www.fourmilab.ch/md5/提供了DOS/Windows使用的md5命令行實用工具。winMd5Sum是一個圖形MD5檢查工具,可以從http://www.nullriver.com/index/products/winmd5sum獲得。

2.1.4.2. 通過GnuPG進行簽名檢查
驗證安裝軟件包完整性和真實性的另一個方法是使用加密簽名。這比使用MD5校驗和更可靠,但是需要更多的工作。

MySQL AB用GnuPG(GNU Privacy Guard)對下載MySQ軟件包進行簽名。GnuPG是開放源碼,不同于Phil Zimmermann的聞名的Pretty Good Privacy (PGP)。關于GnuPG和如何獲得并安裝到你的系統(tǒng)的詳細信息,請參見http://www.gnupg.org/。大多數(shù)Linux分發(fā)版裝有默認安裝的GnuPG。關于GnuPG的詳細信息,參見 http://www.openpgp.org/。

要想驗證具體安裝軟件包的簽名,你首先需要獲得MySQL AB公共GPG構建密鑰的拷貝?梢詮膆ttp://www.keyserver.net/下載密鑰。你想要獲得的密鑰名為build@mysql.com。另外,可以從下面的文本直接剪切并粘貼密鑰:

Key ID:pub  1024D/5072E1F5 2003-02-03     MySQL Package signing key (www.mysql.com) <build@mysql.com>Fingerprint: A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5 Public Key (ASCII-armored): -----BEGIN PGP PUBLIC KEY BLOCK-----Version: GnuPG v1.0.6 (GNU/Linux)Comment: For info see http://www.gnupg.org mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZfw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNWhxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLVK2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnEkYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDIQJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefeprv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFja2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNvbT6IXQQTEQIAHQUCPj6jDAUJCWYBgAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQcuH1cY4AnilUwTXn8MatQOiG0a/bPxrvK/gCAJ4oinSNZRYTnblChwFaazt7PF3qzIhMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvucSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJYiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8JEg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/lxaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRiRjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fmLe11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqqa8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSafanFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOWI39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42LmuQT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt926s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZWhe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4An3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ===YJkx-----END PGP PUBLIC KEY BLOCK-----你可以使用gpg --import將構建密鑰導入你的個人公共GPG鑰匙圈(keyring)。例如,如果你把密鑰保存到mysql_pubkey.asc文件中,導入命令應為:

shell> gpg --import mysql_pubkey.asc關于公共密鑰如何工作的詳細信息,請參閱GPG文檔。

下載并導入公共構建密鑰后,下載期望的MySQL安裝軟件包和相應的簽名,也可以從下載頁上獲得。簽名文件名與分發(fā)版文件相同,有 an .asc擴展名。例如:

分發(fā)文件
mysql-st和ard-5.1.2-alpha-linux-i686.tar.gz

簽名文件
mysql-st和ard-5.1.2-alpha-linux-i686.tar.gz.asc


確保兩個文件保存在同一目錄下,運行下面的命令來驗證分發(fā)文件的簽名:

shell> gpg --verify package_name.asc示例:

  shell> gpg --verify mysql-standard-5.1.2-alpha-linux-i686.tar.gz.asc  gpg: Signature made Tue 12 Jul 2005 23:35:41 EST using DSA key ID 5072E1F5  gpg: Good signature from "MySQL Package signing key (www.mysql.com) <build@mysql.com>"Good signature消息表示所有內(nèi)容都很正確。你可以忽略任何insecure memory警告。

論壇徽章:
0
16 [報告]
發(fā)表于 2008-04-15 11:41 |只看該作者
2.1.4.3. 使用RPM進行簽名檢查
RPM軟件包沒有單獨的簽名。RPM軟件包內(nèi)置GPG簽名和MD5校驗和?梢赃\行下面的命令來驗證安裝軟件包:

shell> rpm --checksig package_name.rpm示例:

shell> rpm --checksig MySQL-server-5.1.2-alpha-0.i386.rpmMySQL-server-5.1.2-alpha-0.i386.rpm: md5 gpg OK注釋:如果你正使用RPM 4.1,并且出現(xiàn)關于(GPG) NOT OK (MISSING KEYS: GPG#5072e1f5)的抱怨,盡管你已經(jīng)將MySQL公共構建密鑰導入到你自己的GPG鑰匙圈,你必須首先將密鑰導入到RPM鑰匙圈中。RPM 4.1不再使用你的個人GPG鑰匙圈(或GPG本身)。RPM 4.1維護自己的鑰匙圈,因為它是系統(tǒng)范圍的應用程序,而用戶GPG公共鑰匙圈是具體的用戶文件。要想將MySQL公共密鑰導入RPM鑰匙圈,要首先獲得前面章節(jié)描述的密鑰。然后使用rpm --import導入密鑰。例如,如果你的公共密鑰保存在mysql_pubkey.asc文件中,應使用下述命令導入公共密鑰:

shell> rpm --import mysql_pubkey.asc如果你需要獲得MySQL公共密鑰,參見2.1.4.2節(jié),“通過GnuPG進行簽名檢查”。

2.1.5. 安裝布局
這節(jié)描述安裝MySQL AB提供的二進制代碼和源碼分發(fā)時創(chuàng)建的默認目錄布局。如果你安裝其它供應商提供的分發(fā),應使用其它布局。
在Windows中,MySQL 5.1的默認安裝目錄是C:\Program Files\MySQL\MySQL Server 5.1。(一些Windows用戶寧愿安裝到原來的默認安裝目錄 C:\mysql。然而,子目錄布局仍然相同)。安裝目錄包括以下子目錄:

目錄
目錄內(nèi)容

bin
客戶端程序和mysqld服務器

data
日志文件,數(shù)據(jù)庫

Docs
文檔

examples
示例程序和腳本

include
包含(頭)文件

lib


scripts
實用工具腳本

share
錯誤消息文件


使用MySQL AB's Linux RPM分發(fā)進行安裝后,將在以下系統(tǒng)目錄產(chǎn)生文件:

目錄
目錄內(nèi)容

/usr/bin
客戶端程序和腳本

/usr/sbin
mysqld服務器

/var/lib/mysql
日志文件,數(shù)據(jù)庫

/usr/share/doc/packages
文檔

/usr/include/mysql
包含(頭)文件

/usr/lib/mysql


/usr/share/mysql
錯誤消息和字符集文件

/usr/share/sql-bench
基準程序


在Unix中,可以在你選擇的安裝位置解壓并安裝tar文件二進制分發(fā)(typically /usr/local/mysql)并在該位置創(chuàng)建以下目錄:

目錄
目錄內(nèi)容

bin
客戶端程序和mysqld服務器

data
日志文件,數(shù)據(jù)庫

docs
文檔,ChangeLog

include
包含(頭)文件

lib


scripts
mysql_install_db

share/mysql
錯誤消息文件

sql-bench
基準程序


配置并編譯完源碼分發(fā)后,便開始安裝。默認情況下,可以將文件安裝到/usr/local,即在下面的子目錄中:

目錄
目錄內(nèi)容

bin
客戶端程序和腳本

include/mysql
包含(頭)文件

info
Info格式的文檔

lib/mysql


libexec
mysqld服務器

share/mysql
錯誤消息文件

sql-bench
基準程序和crash-me測試

var
數(shù)據(jù)庫和日志文件


在一個安裝目錄內(nèi),源碼安裝的布局在下列方面不同于二進制安裝:

·         mysqld服務器被安裝在“l(fā)ibexec”目錄而不是“bin”目錄內(nèi)。

·         數(shù)據(jù)目錄是“var”而非“data”。

·         mysql_install_db被安裝在“bin”目錄而非“scripts”內(nèi)。

·         頭文件和庫目錄是“include/mysql”和“l(fā)ib/mysql”而非“include”和“l(fā)ib”。

執(zhí)行源碼分發(fā)根目錄下的scripts/make_binary_distribution腳本,你可以用編譯過的源碼分發(fā)版創(chuàng)建你自己的二進制安裝。

論壇徽章:
0
17 [報告]
發(fā)表于 2008-04-15 11:41 |只看該作者

2.2. 使用二進制分發(fā)版的標準MySQL安裝

后面幾章包括如何在安裝軟件包格式適合的平臺上平臺安裝MySQL。(即執(zhí)行“二進制安裝”)。也可以在多種平臺上安裝MySQL二進制分發(fā)版。關于適合所有平臺的軟件包的通用安裝指令參見2.7節(jié),“在其它類Unix系統(tǒng)中安裝MySQL”。

關于二進制分發(fā)版的使用和如何獲得的詳細信息請參見2.1節(jié),“一般安裝問題”。

論壇徽章:
0
18 [報告]
發(fā)表于 2008-04-15 11:42 |只看該作者

2.3. 在Windows上安裝MySQL

MySQL AB已經(jīng)提供了Windows中安裝的MySQL 3.21以上版本,并提供了每天下載MySQL的比率。本節(jié)描述在Windows中安裝MySQL的過程。

使用Windows版本MySQL安裝器,結合GUI配置向?qū)В梢宰詣影惭bMySQL,創(chuàng)建選項文件,啟動服務器并使默認用戶賬戶安全。

如果你要升級已有的4.1.5版以前的MySQL,你必須執(zhí)行以下步驟:

1.    獲得并安裝分發(fā)版。

2.    根據(jù)需要設置選項文件。

3.    選擇想要使用的服務器。

4.    啟動服務器。

5.    為初始MySQL賬戶指定密碼。

該過程還適合安裝軟件包內(nèi)不包括安裝器的MySQL安裝。

Windows版MySQL 5.1有3種分發(fā)格式:

·          二進制分發(fā)版包含一個設置程序,可以安裝你需要的任何內(nèi)容,因此可以立即啟動服務器。

·          源碼分發(fā)版包含所有使用Visual Studio 2003編譯器來構建可執(zhí)行程序的代碼和支持文件。

一般來講,你應當使用二進制分發(fā)版。它比其它的分發(fā)版使用起來要簡單,不再需要其它工具來啟動并運行MySQL。

本節(jié)描述了如何使用二進制分發(fā)版在Windows中安裝MySQL。要想使用源碼分發(fā)版安裝,參見2.8.6節(jié),“在Windows下從源碼安裝MySQL”。

2.3.1. Windows系統(tǒng)要求
要想在Windows中運行MySQL,你需要:

·         32位Windows操作系統(tǒng),例如9x、Me、NT、2000、XP或Windows Server 2003。

基于Windows NT的操作系統(tǒng)(NT,2000,XP,2003),將MySQL服務器做為服務來運行。強烈建議使用基于Windows NT的操作系統(tǒng)。請參見2.3.12節(jié),“以Windows服務方式啟動MySQL”。

·         TCP/IP協(xié)議支持。

·         Windows版本MySQL二進制分發(fā)版,可以從http://dev.mysql.com/下載/下載。請參見2.1.3節(jié),“怎樣獲得MySQL”。

注釋:如果你從FTP下載分發(fā)版,我們建議使用充分的FTP客戶端以保證續(xù)傳,避免下載過程中文件被破壞。

·         可以讀取 .zip文件的工具,以解壓分發(fā)文件。

·         硬盤上有足夠的空間保證根據(jù)你的需求來解包、安裝和創(chuàng)建數(shù)據(jù)庫(一般建議至少有200兆字節(jié))。

你還可以有以下可選需求:

·         如果你計劃通過ODBC連接MySQL服務器,你還需要一個連接器/ODBC驅(qū)動程序。請參見26.1節(jié),“MySQL Connector/ODBC”。

·         如果表需要占用的空間大于4GB,則在NTFS或更新的文件系統(tǒng)上安裝MySQL。當創(chuàng)建表時不要忘記使用MAX_ROWS和 AVG_ROW_LENGTH。請參見13.1.5節(jié),“CREATE TABLE語法”。

2.3.2. 選擇安裝軟件包
在Windows中安裝MySQL時,有3種MySQL 5.1安裝軟件包可供選擇:

·         基本安裝:該安裝軟件包的文件名類似于mysql-essential-5.1.2-alpha-win32.msi,包含在Windows中安裝MySQL所需要的最少的文件,包括配置向?qū)。該安裝軟件包不包括可選組件,例如嵌入式服務器和基準套件。

·         完全安裝:該安裝軟件包的文件名類似于mysql-5.1.2-alpha-win32.zip,包含在Windows中安裝MySQL所需要的全部文件,包括配置向?qū)。該安裝軟件包包括可選組件,例如嵌入式服務器和基準套件。

·         非自動安裝文件:該安裝軟件包的文件名類似于mysql-noinstall-5.1.2-alpha-win32.zip,包含完整安裝包中的全部文件,只是不包括配置向?qū)。該安裝軟件包不包括自動安裝器,必須手動安裝和配置。

對于大多數(shù)用戶,建議選擇基本安裝。

你的選擇會影響你后面必須遵從的安裝過程。如果你選擇基本安裝或完全安裝,參見2.3.3節(jié),“用自動安裝器安裝MySQL”。如果你選擇非自動安裝MySQL,參見2.3.6節(jié),“通過非安裝Zip文件安裝MySQL”。

2.3.3. 用自動安裝器安裝MySQL
在Windows中安裝MySQL時,新用戶可以使用MySQL安裝幫助和MySQL Configuration Wizard(配置向?qū)ВySQL安裝和配置的方式是使新用戶可以立即開始使用MySQL。
基本安裝和完全安裝中均包括MySQL安裝幫助和配置向?qū)Вㄗh在大多數(shù)標準MySQL安裝中選擇。例外情況包括想在單個服務器上安裝多個實例的用戶和想完全控制服務器配置的高級用戶。

論壇徽章:
0
19 [報告]
發(fā)表于 2008-04-15 11:42 |只看該作者
2.3.4. 使用MySQL安裝向?qū)?br /> 2.3.4.1. 前言
2.3.4.2. 下載并啟動MySQL安裝向?qū)?
2.3.4.3. 選擇安裝類型
2.3.4.4. 定制安裝對話框
2.3.4.5. 配置對話框
2.3.4.6. MySQL安裝向?qū)鞯母?
2.3.4.7. 升級MySQL
2.3.4.1. 前言
MySQL安裝幫助是MySQL服務器的安裝器,使用最新的Microsoft Window安裝器技術。結合使用MySQL安裝幫助和配置向?qū),用戶安裝并 配置完MySQL服務器后便可以直接使用。

MySQL安裝幫助是MySQL 5.1服務器分發(fā)的標準安裝器。使用MySQL安裝幫助安裝MySQL之前,用戶需要手動關閉并卸載已經(jīng)安裝的以前版本的MySQL。關于對以前版本進行升級的詳細信息請參見 2.3.4.7節(jié),“升級MySQL”。

最近版本的Windows包含了改進版本的Microsoft Windows安裝器(MSI)。MSI已經(jīng)成為Windows 2000、Windows XP和Windows Server 2003應用程序安裝的事實標準。MySQL安裝幫助中使用了該技術,使安裝過程更加靈活、順利。

Microsoft Windows安裝器引擎隨著Windows XP的更新而更新;使用以前Windows版本的用戶可以參考Microsoft 知識庫文章查閱關于升級到最新版Windows安裝器引擎的資料。

此外,Microsoft最近已經(jīng)引入了WiX(Windows 安裝器 XML)工具包。這是Microsoft公認的開放源碼項目。我們轉(zhuǎn)換到WiX是因為它是一個開放源碼項目,可以使用腳本更加靈活地處理整個Windows安裝過程。

對MySQL裝幫助的改進依賴于各用戶的支持和反饋。如果你發(fā)現(xiàn)MySQL安裝幫助缺少對你很重要的某些功能,或如果你發(fā)現(xiàn)某個缺陷,請使用我們的MySQL缺陷系統(tǒng)來索取功能或報告問題。

2.3.4.2. 下載并啟動MySQL安裝向?qū)?br /> 可以從http://dev.mysql.com/downloads/下載MySQL服務器安裝軟件包。如果你下載的安裝軟件包在Zip文件中,你需要先提取文件。

啟動幫助的過程取決于下載的安裝軟件包的內(nèi)容。如果有setup.exe文件,雙擊啟動安裝過程。如果有.msi文件,雙擊啟動安裝過程。

2.3.4.3. 選擇安裝類型
有3種安裝類型:Typical(典型安裝)、Complete(完全安裝)和Custom(定制安裝)。

Typical(典型安裝)安裝只安裝MySQL服務器、mysql命令行客戶端和命令行實用程序。命令行客戶端和實用程序包括mysqldump、myisamchk和其它幾個工具來幫助你管理MySQL服務器。

Complete(完全安裝)安裝將安裝軟件包內(nèi)包含的所有組件。完全安裝軟件包包括的組件包括嵌入式服務器庫、基準套件、支持腳本和文檔。

Custom(定制安裝)安裝允許你完全控制你想要安裝的軟件包和安裝路徑。關于定制安裝的詳細信息請參見2.3.4.4節(jié),“定制安裝對話框”。

如果你選擇Typical(典型安裝)或Complete(完全安裝)安裝并點擊Next按鈕,你將進入確認窗口確認選擇并開始安裝。如果你選擇定制安裝并點擊Next按鈕,你將進入定制安裝對話框,參見2.3.4.4節(jié),“定制安裝對話框”。

2.3.4.4. 定制安裝對話框
如果你想要更改MySQL安裝幫助安裝的安裝路徑或具體組件,應當選擇Custom(定制安裝)安裝。
所有可用組件列入定制安裝對話框左側的樹狀視圖內(nèi)。未安裝的組件用紅色 X 圖標表示;已經(jīng)安裝的組件有灰色圖標。要想更改組件,點擊該組件的圖標并從下拉列表中選擇新的選項。

可以點擊安裝路徑右側的Change...按鈕來更改默認安裝路徑。

選擇了安裝組件和安裝路徑后,點擊Next按鈕進入確認對話框。

2.3.4.5. 配置對話框
選擇了安裝類型和可選安裝組件后,則進入確認對話框。該對話框中將顯示安裝類型和安裝路徑供檢查。

如果你滿意設定值要想安裝MySQL,點擊Install(安裝)按鈕。要想更改設定值,點擊Back按鈕。要想退出MySQL安裝幫助不再安裝 MySQL,點擊Cancel按鈕。

完成安裝后,將出現(xiàn)注冊選項和MySQL網(wǎng)址。注冊后便可以訪問forums.mysql.com處的MySQL論壇,可以在bugs.mysql.com報告缺陷,并可以注冊為時事新聞訂戶。在安裝器的最后一個窗口內(nèi),提供了安裝摘要,并提供選項以啟動MySQL Configuration Wizard(配置向?qū)В梢杂脕韯?chuàng)建配置文件,安裝MySQL服務并進行安全配置。

2.3.4.6. MySQL安裝向?qū)鞯母?br /> 點擊Install(安裝)按鈕后,MySQL安裝幫助開始安裝過程,并對系統(tǒng)進行下面章節(jié)描述的更改。
更改注冊表

在典型安裝中,MySQL安裝幫助在HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB創(chuàng)建Windows注冊鍵值。

MySQL安裝幫助根據(jù)正安裝的服務器的主要版本創(chuàng)建一個鍵值,例如 MySQL服務器5.1。它包含兩個字符串值,Location和Version。Location字符串包含安裝目錄。在默認安裝中,它包含C:\Program Files\MySQL\MySQL Server 5.1\。Version字符串包含發(fā)布號。例如,安裝MySQL Server 5.1.2-alpha,鍵值包含一個5.1.2-alpha值。

這些注冊鍵值用來幫助外部工具識別MySQL服務器的安裝位置,不需要掃描整個硬盤來確定MySQL服務器的安裝路徑。運行服務器時不需要注冊鍵值,使用noinstall Zip文件時不創(chuàng)建注冊鍵值。

更改啟動菜單

MySQL安裝幫助在Windows 啟動菜單中創(chuàng)建一條新的條目,使用MySQL菜單,根據(jù)安裝的MySQL的主版本來命名。例如,如果安裝了MySQL 5.1, MySQL安裝幫助在啟動菜單中創(chuàng)建MySQL Server 5.1部分。

將在新啟動菜單部分創(chuàng)建下面的條目:

·         MySQL命令行客戶端:這是mysql命令行客戶端的快捷方式,對其進行配置以連接為root用戶。當連接時快捷方式提示輸入root用戶密碼。

·         MySQL服務器實例配置向?qū)В哼@是MySQL Configuration Wizard(配置向?qū)В┑目旖莘绞健J褂迷摽旖莘绞絹砼渲眯掳惭b的服務器,或重新配置已有的服務器。

·         MySQL文檔:可以連接到保存在MySQL服務器安裝目錄下的文檔。采用基本安裝方式安裝MySQL服務器時,該選項不可用。

更改文件系統(tǒng)

默認情況下,MySQL安裝幫助將MySQL 5.1服務器安裝到C:\Program Files\MySQL\MySQL Server 5.1,其中Program Files是系統(tǒng)應用程序的默認位置,5.1是MySQL服務器的主要版本。這是建議的MySQL服務器的新安裝位置,替換了前面的默認位置c:\mysql。

默認情況下,所有MySQL應用程序保存到目錄C:\Program Files\MySQL下,其中Program Files是應用程序在Windows中的默認安裝位置。開發(fā)機器上的典型MySQL安裝應為:

C:\Program Files\MySQL\MySQL Server 5.1C:\Program Files\MySQL\MySQL Administrator 1.0C:\Program Files\MySQL\MySQL Query Browser 1.0該方法使管理和維護具體系統(tǒng)上安裝的MySQL應用程序更加容易。

2.3.4.7. 升級MySQL
使用MSI的升級功能,MySQL安裝幫助可以自動執(zhí)行服務器升級。這意味著安裝新版本前,不需要手動卸載前面安裝的程序。安裝新版本前,安裝器自動關閉并卸載前面安裝的MySQL服務。

只有在主版本號和次要版本號相同的安裝之間進行升級時,才能自動進行升級。例如,可以自動從MySQL 4.1.5升級到MySQL 4.1.6,但是不能從MySQL 5.0升級到MySQL 5.1。

參見2.3.15節(jié),“在Windows下升級MySQL”。

論壇徽章:
0
20 [報告]
發(fā)表于 2008-04-15 11:43 |只看該作者
2.3.5. 使用配置向?qū)?br /> 2.3.5.1. 前言
2.3.5.2. 啟動MySQL配置向?qū)?
2.3.5.3. 選擇維護選項
2.3.5.4. 選擇配置類型
2.3.5.5. 服務器類型對話框
2.3.5.6. 數(shù)據(jù)庫使用情況對話框
2.3.5.7. InnoDB表空間對話框
2.3.5.8. 并發(fā)連接對話框
2.3.5.9. 聯(lián)網(wǎng)選項對話框
2.3.5.10. 字符集對話框
2.3.5.11. 服務選項對話框
2.3.5.12. 安全選項對話框
2.3.5.13. 配置對話框
2.3.5.14. my.ini文件的位置
2.3.5.15. 編輯my.ini文件
2.3.5.1. 前言
MySQL Configuration Wizard(配置向?qū)В┛梢詭椭詣优渲肳indows中的服務器。MySQL Configuration Wizard(配置向?qū)В﹩柲阋幌盗袉栴},然后將回答放到模板中生成一個my.ini文件,該文件與你的安裝一致。
MySQL Configuration Wizard(配置向?qū)В┌贛ySQL 5.1服務器中,目前只適用于Windows用戶。

MySQL Configuration Wizard(配置向?qū)В┰诤艽蟪潭壬鲜荕ySQL AB經(jīng)過多年從許多用戶收到的反饋的結果。然而,如果你發(fā)現(xiàn)它缺少某些對你很重要的功能,或如果你發(fā)現(xiàn)一個缺陷,請使用我們的MySQL 缺陷系統(tǒng)來索取功能或報告問題。

2.3.5.2. 啟動MySQL配置向?qū)?br /> 一般情況當MySQL安裝幫助退出時,從MySQL安裝幫助啟動MySQL Configuration Wizard(配置向?qū)В。還可以點擊Windows啟動菜單中MySQL服務器實例配置向?qū)l目中的MySQL部分來啟動MySQL Configuration Wizard(配置向?qū)В?
并且,還可以進入MySQL安裝bin目錄直接啟動MySQLInstanceConfig.exe文件。

2.3.5.3. 選擇維護選項
如果MySQL Configuration Wizard(配置向?qū)Вz查到my.ini文件,你可以選擇重新配置已有的服務器,或通過刪除my.ini文件并停止、卸載MySQL服務來卸載服務器實例。
要想重新配置已有的服務器,選擇Re-configure Instance選項并點擊Next按鈕。已有的my.ini文件重新命名為mytimestamp.ini.bak,其中timestamp是my.ini文件創(chuàng)建是的日期和時間。要想卸載已有的服務器實例,選擇Remove Instance選項并點擊Next按鈕。

如果選擇了Remove Instance選項,則進入確認窗口。點擊Execute按鈕:MySQL Configuration Wizard(配置向?qū)В┩V共⑿遁dMySQL服務,然后刪除my.ini文件。服務器安裝和自己的data文件夾不刪除。

如果選擇了Re-configure Instance選項,則進入配置類型對話框,可以選擇你想要配置的安裝類型。

2.3.5.4. 選擇配置類型
當啟動MySQL Configuration Wizard(配置向?qū)В┲匦掳惭bMySQL,或為已有安裝選擇Re-configure Instance選項,則進入配置類型對話框。

可以選擇兩種配置類型:Detailed Configuration(詳細配置)和Standard Configuration(標準配置)。Standard Configuration(標準配置)選項適合想要快速啟動MySQL而不必考慮服務器配置的新用戶。詳細配置選項適合想要更加細粒度控制服務器配置的高級用戶。

如果你是MySQL的新手,需要配置為單用戶開發(fā)機的服務器,Standard Configuration(標準配置)應當適合你的需求。選擇Standard Configuration(標準配置)選項,則 MySQL Configuration Wizard(配置向?qū)В┳詣釉O置所有配置選項,但不包括服務選項和安全選項。

Standard Configuration(標準配置)設置選項可能與安裝MySQL的系統(tǒng)不兼容。如果系統(tǒng)上已經(jīng)安裝了MySQL和你想要配置的安裝,建議選擇詳細配置。

要想Standard Configuration(標準配置),請分別參閱2.3.5.11節(jié),“服務選項對話框”和2.3.5.12節(jié),“安全選項對話框”的服務選項和安全選項。

2.3.5.5. 服務器類型對話框
可以選擇3種服務器類型,選擇哪種服務器將影響到MySQL Configuration Wizard(配置向?qū)В⿲?nèi)存、硬盤和過程或使用的決策。
·         Developer Machine(開發(fā)機器):該選項代表典型個人用桌面工作站。假定機器上運行著多個桌面應用程序。將MySQL服務器配置成使用最少的系統(tǒng)資源。

·         Server Machine(服務器):該選項代表服務器,MySQL服務器可以同其它應用程序一起運行,例如FTP、email和web服務器。MySQL服務器配置成使用適當比例的系統(tǒng)資源。

·         Dedicated MySQL Server Machine(專用MySQL服務器):該選項代表只運行MySQL服務的服務器。假定運行沒有運行其它應用程序。MySQL服務器配置成使用所有可用系統(tǒng)資源。

2.3.5.6. 數(shù)據(jù)庫使用情況對話框
通過Database Usage(數(shù)據(jù)庫使用)對話框,你可以指出創(chuàng)建MySQL表時使用的表處理器。通過該選項,你可以選擇是否使用InnoDB儲存引擎,以及InnoDB占用多大比例的服務器資源。
·         Multifunctional Database(多功能數(shù)據(jù)庫):選擇該選項,則同時使用InnoDB和MyISAM儲存引擎,并在兩個引擎之間平均分配資源。建議經(jīng)常使用兩個儲存引擎的用戶選擇該選項。

·         Transactional Database Only(只是事務處理數(shù)據(jù)庫):該選項同時使用InnoDB和MyISAM 儲存引擎,但是將大多數(shù)服務器資源指派給InnoDB儲存引擎。建議主要使用InnoDB只偶爾使用MyISAM的用戶選擇該選項。

·         Non-Transactional Database Only(只是非事務處理數(shù)據(jù)庫):該選項完全禁用InnoDB儲存引擎,將所有服務器資源指派給MyISAM儲存引擎。建議不使用InnoDB的用戶選擇該選項。

2.3.5.7. InnoDB表空間對話框
有些用戶可能想要將InnoDB表空間文件放到不同的位置,而不放到MySQL服務器數(shù)據(jù)目錄。如果你的系統(tǒng)有較大的空間或較高性能的儲存設備(例如RAID儲存系統(tǒng)),則最好將表空間文件單獨放到一個位置。
要想更改InnoDB表空間文件的默認位置,從驅(qū)動器下拉列表選擇一個新的驅(qū)動器,并從路徑下拉列表選擇新的路徑。要想創(chuàng)建路徑,點擊 ...按鈕。

如果你要更改已有服務器的配置,更改路徑前你必須點擊Modify按鈕。此時啟動服務器之前,你必須將已有表空間文件移到新位置。

2.3.5.8. 并發(fā)連接對話框
限制所創(chuàng)建的與MySQL服務器之間的并行連接數(shù)量很重要,以便防止服務器耗盡資源。在Concurrent Connections(并行連接)對話框中,可以選擇服務器的使用方法,并根據(jù)情況限制并行連接的數(shù)量。還可以手動設置并行連接的限制。
·         Decision Support(決策支持)(DSS)/OLAP:如果服務器不需要大量的并行連接可以選擇該選項。假定最大連接數(shù)目設置為100,平均并行連接數(shù)為20。

·         Online Transaction Processing(聯(lián)機事務處理)(OLTP):如果你的服務器需要大量的并行連接則選擇該選項。最大連接數(shù)設置為500。

·         Manual Setting(人工設置):選擇該選項可以手動設置服務器并行連接的最大數(shù)目。從前面的下拉框中選擇并行連接的數(shù)目,如果你期望的數(shù)目不在列表中,則在下拉框中輸入最大連接數(shù)。

2.3.5.9. 聯(lián)網(wǎng)選項對話框
在Networking Options(網(wǎng)絡選項)對話框中可以啟用或禁用TCP/IP網(wǎng)絡,并配置用來連接MySQL服務器的端口號。
默認情況啟用TCP/IP網(wǎng)絡。要想禁用TCP/IP網(wǎng)絡,取消選擇Enable TCP/IP Networking選項旁邊的檢查框。

默認使用3306端口。要想更訪問MySQL使用的端口,從下拉框選擇一個新端口號或直接向下拉框輸入新的端口號。如果你選擇的端口號已經(jīng)被占用,將提示確認選擇的端口號。

2.3.5.10. 字符集對話框
MySQL服務器支持多種字符集,可以設置適用于所有表、列和數(shù)據(jù)庫的默認服務器字符集。使用Character Set(字符集對話框)來更改 MySQL服務器的默認字符集。
·         Standard Character Set(標準字符集):如果想要使用Latin1做為默認服務器字符集,則選擇該選項。Latin1用于英語和許多西歐語言。

·         Best Support For Multilingualism(支持多種語言):如果想要使用UTF8做為默認服務器字符集,則選擇該選項。UTF8可以 將不同語言的字符儲存為單一的字符集。

·         Manual Selected Default Character Set/Collation(人工選擇的默認字符集/校對規(guī)則):如果想要手動選擇服務器的默認字符集,請選擇該項。從下拉列表中選擇期望的字符集。

2.3.5.11. 服務選項對話框
在基于Windows NT的平臺上,可以將MySQL服務器安裝成服務。安裝成服務,系統(tǒng)啟動時可以自動啟動MySQL服務器,甚至出現(xiàn)服務故障時可以隨Windows自動啟動。

默認情況,MySQL Configuration Wizard(配置向?qū)В⿲ySQL服務器安裝為服務,服務名為MySQL。如果你不想安裝服務,取消Install As Windows Service選項旁邊的選擇框?梢詮南吕蜻x擇新的服務名或在下拉框輸入新的服務名來更改服務名。

要想將MySQL服務器安裝為服務,但是不自動啟動,不選中Launch the MySQL Server Automatically選項旁邊的檢查框。

2.3.5.12. 安全選項對話框
強烈建議為你的MySQL服務器設置一個root密碼,默認情況MySQL Configuration Wizard(配置向?qū)В┮竽阍O置一個root密碼。如果你不想設置root密碼,不選中Modify Security Settings(修改安全設定值)選項旁邊的選擇框。

要想設置root密碼,在New root password(輸入新密碼)和Confirm(確認)兩個框內(nèi)輸入期望的密碼。如果重新配置已有的服務器,你還需要Current root password(當前root密碼)框內(nèi)輸入已有的root密碼。

要想防止通過網(wǎng)絡以root登錄,選中Root may only connect from localhost(只允許從本機登陸連接root)選項旁邊的框。這樣可以提高root賬戶的安全。

要想創(chuàng)建一個匿名用戶賬戶,選中Create An Anonymous Account(創(chuàng)建匿名賬戶)選項旁邊的框。創(chuàng)建匿名賬戶會降低服務器的安全,并造成登錄和許可困難。因此不建議。

2.3.5.13. 配置對話框
MySQL Configuration Wizard(配置向?qū)В┑淖詈笠粋對話框是Confirmation(確認)對話框。要想啟動配置過程,點擊Execute。要想返回要想到前面的對話框,點擊Back按鈕。要想不配置服務器即退出MySQL Configuration Wizard(配置向?qū)В,點擊Cancel按鈕。
點擊Execute按鈕后,MySQL Configuration Wizard(配置向?qū)В﹫?zhí)行一系列的任務,執(zhí)行過程將顯示在屏幕上。

MySQL Configuration Wizard(配置向?qū)В┦紫仁褂肕ySQL AB開發(fā)人員和工程師準備的模板根據(jù)你的選擇確定配置文件選項。該模板的名稱為my-template.ini,位于服務器安裝目錄中。

MySQL Configuration Wizard(配置向?qū)В⿲⑦@些選項寫入到一個my.ini文件中。my.ini文件的最終位置顯示在寫配置文件任務的旁邊。

如果選擇為MySQL服務器創(chuàng)建一個服務,MySQL Configuration Wizard(配置向?qū)В﹦t創(chuàng)建并啟動服務。如果你重新配置已有的服務,MySQL Configuration Wizard(配置向?qū)В﹦t根據(jù)你的配置更改重新啟動服務。

如果選擇設置root密碼,MySQL Configuration Wizard(配置向?qū)В﹦t連接服務器,設置新root密碼并應用你選擇的其它安全設定值。

MySQL Configuration Wizard(配置向?qū)В┩瓿扇蝿蘸,則顯示一個概要。點擊Finish按鈕退出MySQL Configuration Wizard(配置向?qū)В?br />
2.3.5.14. my.ini文件的位置
MySQL Configuration Wizard(配置向?qū)В⿲y.ini文件放到MySQL服務器的安裝目錄中。這樣可以幫助將配置文件與具體服務器實例關聯(lián)起來。
要想確保MySQL服務器知道從哪里查找my.ini文件,即做為服務安裝的一部分傳遞給MySQL服務器的部分:--defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini",其中C:\Program Files\MySQL\MySQL Server 5.1 被MySQL服務器的安裝路徑替代。

--defaults-file指導MySQL服務器讀取具體的配置文件。

2.3.5.15. 編輯my.ini文件
要想修改my.ini文件,用文本編輯器打開并進行必要的修改。你還可以用MySQL Administrator實用工具修改服務器配置。
MySQL客戶端和實用程序,例如mysql命令行客戶端和mysqldump不能將my.ini文件放到服務器安裝目錄中。要想配置客戶端和實用工具,根據(jù)Windows 版本,在C:\Windows或C:\WINNT目錄下創(chuàng)建一個新的my.ini文件。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP