top
Loading...
2.8.2.典型配置選項
2.8.2. 典型配置選項

configure腳本給你一個很大的控制權來控制如何配置MySQL源碼分發版。一般使用configure命令行的選項來進行。你也可以用某些環境變量作用于configure。請參見附錄F:環境變量。要查看configure支持的選擇列表,可以運行命令:

shell> ./configure --help
  • 如果只編譯MySQL客戶端庫和客戶端程序而不是服務器,使用--without-server選項:
  • shell> ./configure --without-server

如果你沒有C++編譯器,則不能編譯mysql(有一個客戶端程序需要C++)。在這種情況下,你可以去掉configure里面測試C++編譯器的代碼,然后運行帶有 --without-server選項的./configure。編譯步驟步將仍然嘗試構造mysql,但是你可以忽略任何關于“mysql.cc”的警告。(如果make停止,試試make -k告訴它即使出錯繼續剩下的構造步驟)。

·         如果你想要構建嵌入式MySQL (libmysqld.a),你應當使用--with-embedded-server選項。

  • 如果你不想要位于“/usr/local/var”目錄下面的日志(log)文件和數據庫,使用類似于下列configure命令的一個:
  • shell>./configure--prefix=/usr/local/mysql
  • shell>./configure--prefix=/usr/local
  •        localstatedir=/usr/local/mysql/data

第一個命令改變安裝前綴以便將所有內容安裝到“/usr/local/mysql”下面而非 默認的“/usr/local”。第二個命令保留默認安裝前綴,但是覆蓋了數據庫目錄默認目錄(通常是“/usr/local/var)并且把它改為/usr/local/mysql/data。編譯完MySQL后,可以通過選項文件更改這些選項。請參見4.3.2節,“使用選項文件”。

  • 如果你正在使用Unix并且你想要MySQL的套接字位于 默認位置以外的某個地方(通常在目錄“/tmp”或“/var/run”,使用象這樣的configure的命令:
  • shell> ./configure-- with-unix-socket-
  • path=/usr/local/mysql/tmp/mysql.sock

注意給出的文件名必須是一個絕對路徑。你還可以在以后使用MySQL選項文件更改mysql.sock的位置。請參見A.4.5節,“如何保護或更改MySQL套接字文件/tmp/mysql.sock”。

  • 如果你想編譯靜態鏈接程序(例如,制作二進制分發版、獲得更快的速度或與解決與RedHat分發版的一些問題),像這樣運行configure

·                shell>./configure --with-client-ldflags=-all-static

·                        --with-mysqld-ldflags=-all-static

  • 如果你正在使用gcc并且沒有安裝libg++libstdc++,你可以告訴configure使用gcc作為C++編譯器:
  • shell> CC=gcc  CXX=gcc  ./configure

當你使用gcc作為C++編譯器用時,它將不試圖鏈接libg++libstdc++。即使你安裝了這些庫,這樣也很好,因為過去使用MySQL時,它們的部分版本會出現一些奇怪的問題。

下面列出了一些經常使用的編譯器和環境變量設定值。

o        gcc 2.7.2

o                     CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"

o        egcs 1.0.3a

o                     CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors 
o                     -fno-exceptions -fno-rtti"

o        gcc 2.95.2

o                     CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro 
o                     -felide-constructors -fno-exceptions -fno-rtti"

o        pgcc 2.90.29 或更新版:

o                     CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc 
o                     CXXFLAGS="-O3 -mpentiumpro -mstack-align-double 
o                     -felide-constructors -fno- exceptions -fno-rtti"

在大多數情況,在configure行使用前面列出的選項并加入下面的選項,可以得到合理的優化的MySQL二進制:

--prefix=/usr/local/mysql --enable-assembler 
--with-mysqld-ldflags=-all-static

換句話說,對于所有最近的gcc版,整個configure行應為:

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

我們在MySQL網址http://www.mysql.com/提供的二進制均已經編譯過并進行了優化,對于大多數用戶應當比較完善。請參見2.1.2.5節,“MySQL AB編譯的MySQL二進制版本”。其中有一些配置設定值,可以選用來構建更快的二進制,但是只適用高級用戶。請參見7.5.4節,“編譯和鏈接怎樣影響MySQL的速度”。

如果構造失敗并且產生有關編譯器或鏈接器的錯誤,不能創建共享庫“libmysqlclient.so.#(#”是一個版本號), 你可以通過為configure指定--disable-shared選項來解決此問題。在這種情況下,configure將不構造一個共享libmysqlclient.so.#庫。

  • 默認地,MySQL使用latin1(cp1252)字符集。為了改變 默認設置,使用--with-charset選項:
  • shell> ./configure -- with-charset=CHARSET

CHARSET可以是big5cp1251cp1257czechdanishdec8doseuc_krgb2312gbkgerman1hebrewhp8hungariankoi8_rukoi8_ukrlatin1latin2sjisswe7tis620ujisusa7win1251ukr。請參見5.10.1節,“數據和排序用字符集”。

可以指定默認校對規則。MySQL默認使用latin1_swedish_ci校對規則。要想更改,使用--with-collation選項:

shell> ./configure --with-collation=COLLATION

要想更改字符集和校對規則,要同時使用--with-charset--with-collation選項。 校對規則必須是字符集的合法校對規則。(使用SHOW COLLATION語句來確定每個字符集使用哪個校對規則)

如果想在服務器和客戶端之間變換字符,你應該看一下SET OPTION CHARACTER SET命令。請參見13.5.3節,“SET語法”。

警告:如果你在創建了任何數據庫表之后改變字符集,你將必須對每個表運行myisamchk -r -q --set-character-set=charset,否則索引可能不正確地排序。(如果安裝了MySQL,創建一些表,然后重新配置MySQL使用一個不同的字符集并且重新安裝它,這時就可能發生這種情況。)

通過configure選項--with-extra-charsets=LIST,你可以定義在服務器中再定義哪些字符集。LIST 指下面任何一項:

o        空格間隔的一系列字符集名

o        complex -,以包括不能動態裝載的所有字符集

o        all –,以將所有字符集包括進二進制

  • 為了配置MySQL帶有調試代碼,使用--with-debug選項:
  • shell> ./configure --with-debug

這導致包含一個安全的內存分配器,能發現一些錯誤和并提供關于正在發生的事情的輸出。請參見E.1節,“調試MySQL服務器”。

·         如果客戶端程序使用線程,還必須使用--enable-thread-safe-client配置選項來編譯線程安全版的MySQL客戶端庫。將創建一個libmysqlclient_r庫,可以用來連接應用程序線程。請參見25.2.15節,“如何生成線程式客戶端”。

·         可以使用--with-big-tables選項構建支持大數據庫表的MySQL

該選項使變量用來將表行數保存到unsigned long long中而不是unsigned long。結果是允許表有大約1.844E+19 ((232)2)行而不是232 (~4.295E+09) 行。在以前,要完成該功能必須手動將-DBIG_TABLES傳遞給編譯器。

屬于特定系統的選項可在本章特定系統的小節里找到。請參見2.12節,“具體操作系統相關的注意事項”
作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/installing.html
北斗有巢氏 有巢氏北斗