以下是安裝MySQL源碼分發版的更詳細的描述:
1. 為mysqld增加一個登錄用戶和組:
2. shell> groupadd mysql3. shell> useradd -g mysql mysql這些命令將增加MySQL組和MySQL用戶。不同版本的Unix中,useradd 和groupadd的語法可能會稍有不同。還可以稱為adduser和addgroup。
你可能會將這些用戶和組命名為mysql之外的名稱。如果是這樣,在下面的步驟中替換為相應的名稱。
4. 挑選一個你想解開分發包的目錄,進入該目錄。
5. 從2.1.3節,"怎樣獲得MySQL"中列出的站點之一獲得一個分發文件。
6. 在當前目錄下解包分發版:
7. shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -該命令創建mysql-VERSION 目錄。
使用GNU tar,則不再需要gunzip。你可以用下面的命令來解包和提取分發:
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz8. 進入解包分發版的頂級目錄:
9. shell> cd mysql-VERSION請注意目前必須從頂級目錄配置和構建MySQL。你不能在其它目錄中構建。
10.配置發布版並且編譯:
11. shell> ./configure --prefix=/usr/local/mysql12. shell> make當你運行configure時,你可能想要指定一些選項,運行./configure --help得到一個選項列表。2.8.2節,"典型配置選項"討論一些很有用的選項。
如果configure失敗,你將向MySQL郵件目錄發送包含你認為能幫你解決該問題的包含"config.log"中所有行的郵件,也要包括configure的最後幾行輸出。用mysqlbug腳本郵寄錯誤報告。請參見1.7.1.3節,"如何通報缺陷和問題"。
如果編譯失敗,參見2.8.4節,"處理MySQL編譯問題"尋求幫助。
13.安裝分發版:
14. shell> make install如果你想要設置一個選項文件,使用support-files目錄中的一個作為模板。例如:
shell> cp support-files/my-medium.cnf /etc/my.cnf可能你需要用root用戶運行這些命令。
如果想要配置為支持InnoDB表,應當編輯/etc/my.cnf文件,去掉innodb_...開始選項行前面的#符,並將選項值改為你想要的。請參見4.3.2節,"使用選項文件"和15.2.3節,"InnoDB配置"。
15.進入安裝目錄:
16. shell> cd /usr/local/mysql17.如果還沒有安裝的MySQL,必須創建MySQL授權表:
18. shell> bin/mysql_install_db --user=mysql如果用root運行命令,應當使用--user選項。選項的值應與你在第一步為運行服務器所創建的登錄賬戶相同。如果用該用戶登錄來運行命令,可以省略--user選項。
用mysql_install_db創建MySQL授權表後,需要手動重新啟動服務器
19.將程序二進制的所有權改為root,數據目錄的所有權改為你運行mysqld的用戶。如果位於安裝目錄(/usr/local/mysql)下,命令應為:
20. shell> chown -R root .21. shell> chown -R mysql var22. shell> chgrp -R mysql .第一個命令將文件的所有屬性改為root用戶。第二個命令將數據目錄的所有屬性改為mysql用戶。第三個命令將組屬性改為mysql組。
23.如果你喜歡在引導機器時自動啟動MySQL,你可以拷貝support-files/mysql.server文件到你系統有啟動文件的地方。更多的信息可以在support-files/mysql.server腳本中和2.9.2.2節,"自動啟動和停止MySQL"中找到。
24.如果安裝了DBI和DBD::mysql Perl模塊,可以使用bin/mysql_setpermission腳本增加新賬戶。關於說明,參見2.13節,"Perl安裝注意事項"。
在所有東西被安裝以後,你應當使用該命令初始化並且測試你的分發版:
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &如果這個命令提示mysqld daemon ended並馬上失敗,那麼你能在數據目錄中的文件"hostname'.err"找到一些信息。
關於mysqld_safe的詳細信息參見5.1.3節,"mysqld_safe:MySQL服務器啟動腳本"。
注釋:MySQL授權表中的賬戶開始沒有密碼。啟動服務器後,你應當使用2.9節,"安裝後的設置和測試"中的說明來設置密碼。
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可以是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7或win1251ukr。請參見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節,"具體操作系統相關的注意事項"