如果只需要運行mysql客戶機軟件,而不打算運行mysql服務器,可以跳過這一節。 mysql服務器可作為系統上的任何unix 用戶運行,但出于安全和保密的原因,最好是不以root 身份運行服務器。建議創建一個獨立的賬號用于mysql管理,并以該用戶運行服務器。這樣,可作為該用戶登錄,并在進行維護和故障排除的目錄中具有完全的權限。創建 用戶賬號的過程隨系統的不同而不同。詳細內容可參閱相應的文獻。 本書將mysqla d m和mysqlg r p分別用于unix 用戶和此賬號的組名。如果打算安裝mysql只為自己使用,可以自己運行它,那么在本書中任何地方出現的mysqladm 和mysqlg r p都可換成您自己的登錄名和組名。如果從rpm 文件進行安裝,隨rpm 的安裝過程會自動建立一個名為mysql的用戶。在這樣的情況下,可以將mysql替換成mysqla d m。 使用獨立、無特權帳戶而不是運行mysql的r o o t,其優點為: 如果不以root 運行mysql,任何人都不能利用此服務器的安全漏洞獲得root 訪問。 無特權的用戶執行mysql管理任務比用root 執行更為安全。 服務器將創建mysqladm 而非root 擁有的文件。r o o t在系統上擁有的文件越少越好。 將mysql的活動分隔在它自己的賬號中可以在概念上更為清晰,并且更容易看出系統上什么東西與mysql相關。例如,在保存core 文件的目錄中,有mysql用戶mysqladm 的一個獨立文件。否則mysql的corn 作業將位于root 的文件中,將會和其他東西一起作為root 周期性的執行。
獲得和安裝mysql分發包
在下面的說明中,我們用版本代表mysql的版本號,用平臺代表在其上進行安裝的平臺名。它們也用在分發包文件名中,以便容易標識分發包,并將各個分發包區分開來。版本號是一些類似于3.22.26 或3.23.4-alpha 這樣的東西,平臺名是類似于sgi-irix6.3-mips 或d e c -osf4-0b-alpha 這樣的東西。 1. 安裝二進制代碼分發包 二進制代碼分發包文件具有諸如m s q l -ver s i o n - p l a t f o r m. t a r.gz 這樣的名字。獲得理想版本和平臺的分發包文件并將它放入指定的安裝mysql目錄,如/ us r / l o c a l。 用下面的任意一條命令打開分發包(如果tar 版本不支持非壓縮分發包的z 選項,應該使用第二條命令): % tar zxf mysql-version-platform.tar.gz % gunzip < mysql-version-platfrom.tar.gz | tar xf 打開分發包創建包含分發包內容的目錄mysql-ver s i o n - p l a t f o r m。為了更容易引用這個目錄,可創建一個符號連接: % ln -s mysql-version-platorm mysql 現在,如果在/usr/local 目錄下安裝mysql,可引用的安裝目錄為/ us r / l o c a l / mysql。 如果只準備使用分發包所提供的客戶機支持環境并且不運行服務器,則安裝結束。如果是第一次安裝mysql,可參閱a . 3 . 4節“初始化數據目錄和權限表”。如果是對已有安裝進行更新,可參閱a . 3 . 5節“啟動服務器”。 2. 安裝rpm 分發包 rpm 文件可用于linux 系統上的mysql安裝。它們具有如下的文件名: mysql-ver s i o n - p l a t f o r m.rpm 服務器軟件。 mysql- c l i e n t. ver s i o n - p l a t f o r m.rpm 客戶機程序。 mysql- d e v e l .ver s i o n - p l a t f o r m.rpm 編寫客戶機程序的開發支持環境(客戶機庫和頭文件)。如果想使用或編寫訪問mysql數據庫的perl dbi 腳本,則需要用到它。 mysql- b e n c h. ver s i o n - p l a t f o r m.rpm 標準和測試。需要perl 和msql-mysql-modules 模塊。可在w w w.mysql.com 上得到mysql-mysql-modules 的一個rpm 文件。 mysql-ver s i o n .src.rpm 服務器、客戶機、標準和測試的源代碼。 如果從rpm 安裝,不需要特定的目錄,因為rpm 文件含有指定將所包含的文件安裝在何處的信息。對任何rpm 文件r p m _ f i l e,可用下列命令知道其內容將安裝在何處: % rpm -qpl rpm_file 為了安裝一個rpm 文件,使用下列命令: % rpm -i rpm_file mysql的各組成部分被劃分為不同的rpm 文件,因此可能需要安裝不止一個r p m。為了安裝客戶機支持環境,可使用下列命令: % rpm -i mysql-client-version-platform.rpm 安裝服務器支持環境,使用下列命令: % rpm -i mysql-version-platform.rpm 如果打算使用客戶機編程支持環境編寫自己的程序,應該安裝供開發用的rpm 文件: % rpm -i mysql-devel-version-platform.rpm 如果打算使用分發包提供的客戶機支持環境,而且不準備使用服務器, mysql的安裝就結束了。如果是第一次安裝mysql,可參閱a . 3 . 4節“初始化數據目錄和權限表”。如果是對現有安裝進行更新,可參閱a . 3 . 5節“啟動服務器”。 如果想從源代碼rpm 文件進行安裝,用下面的命令就可以了: % rpm --recompile mysql-version.src.rpm 3. 安裝源代碼分發包 源代碼分發包具有如mysql- ver s i o n . t a r.gz 這樣的名稱,其中version 為mysql的版本號。選擇想要將分發包放在其下的目錄,并進入該目錄。獲得分發包文件并用下列命令之一打開它(如果tar 版本不支持非壓縮分發包的z 選項,應該使用第二條命令): % tar zxf mysql-version.tar.gz % gunzip < mysql-version.tar.gz | tar xf 打開分發包創建包含分發包內容的目錄mysql- ver s i o n,并進入此目錄。 % cd mysql-version 在安裝以前,需要配置和編譯此分發包。如果各步驟失敗,應該參閱mysql參考指南的“安裝mysql”一章,應該特別注意它所包含的有關各種機器專有的系統說明。 使用configure 命令配置分發包: % ./configure 可以為configure 指定選項。為了得到可用的選項表,執行下列命令: % ./configure --help 下面的清單給出了一些許多人認為很有用的配置選項: ·--without-server 只建立客戶機支持環境的配置(客戶機程序或客戶機庫)。如果打算訪問運行在其他機器上的服務器,應該選擇此選項。 ·--prefix = p a t h _ name 缺省時,安裝根目錄為/ us r / l o c a l。數據目錄、客戶機、服務器、客戶機庫以及頭文件安裝在根目錄下的v a r、b i n、l i b e x e c、lib 和include 目錄中。如果想要更改安裝的根目錄,使用--prefix 選項即可。 ·--localstatedir = p a t h _ name 這個選項更改數據目錄的位置。如果不希望將數據庫保存在/usr/local/var 之下,可使用這個選項。 ·--with-low-memory sql/sql_yacc.cc 源代碼文件需要大量編譯內存,這有時會導致安裝失敗。這個問題的表現包括有關“ fatal signal 11”或虛內存耗盡錯誤消息。- - w i t h - l o w - memory 選項用產生低內存消耗的選項來調用編譯程序。 在執行了configure 后,編譯分發包并安裝它: % make % make install 如果未利用--prefix 選項指定具有寫入許可的目錄,需要以root 身份執行安裝命令。 如果只準備使用分發包所提供的客戶機支持環境且不運行服務器,則mysql的安裝結束。如果是第一次安裝mysql,可參閱a . 3 . 4節。如果是對已有安裝進行更新,可參閱a . 3 . 5 節“啟動服務器”。
初始化數據目錄和權限表
在能夠利用mysql安裝之前,需要初始化含有控制網絡對服務器進行訪問的權限表的mysql數據庫。這個步驟只在新安裝以及打算運行服務器時需要。那些只進行客戶機支持環境安裝的人員可以跳過這一節。對于二進制代碼分發包,從安裝目錄(由分發包創建的b i n 目錄的父級目錄)執行命令。對于源代碼分發包,從分發包的高層目錄執行命令。 data d i r 是數據目錄的路徑名。一般情況下,作為root 執行下列命令。如果作為mysqladm 登錄,或者由于打算自己運行mysql而在自己的賬號下安裝它,則可不以r o o t的身份執行命令,而且可以跳過chown 和chmod 命令。 如下運行mysql_install_db 腳本設置缺省權限表(如果利用rmp 文件進行安裝,則不需要這樣做,因為mysql_install_db 將會自動運行): # scripts/mysql_install_db 如果mysql_install_db 失敗,應該參閱mysql參考指南的“安裝mysql”一章,看看該章對于所遇到的問題是怎么說的,然后再試一次。注意,如果mysql_install_db 未成功完成,它所建立的任意權限表可能都是不完整的。應該刪除它們,因為mysql_install_db 不會試圖重建已經存在的表。可用如下語句刪除整個mysql數據庫。 # rm -rf datadir/mysql 在運行mysql_install_db 之后,如果所安裝的是mysql3.22.10 以前的版本,應該關閉服務器(對于更新的版本, mysql_install_db 會自動完成這項工作): # bin/mysqladmin --user=root shutdown 在服務器關閉后,更改用戶和組的擁有者該數據目錄下的所有文件模式: # chown -r mysqladm.mysqlgrp datadir # chmod -r go-rwx datadir chown 命令更改mysql用戶的擁有者,而chmod 更改模式把除mysqladm 外的所有人員都排斥在外。
啟動服務器
這個步驟只在要運行服務器時需要。那些只需要客戶機的安裝可以跳過這一步。應該在前一節給出的相同目錄中執行本節的命令。一般作為root 用戶運行命令。如果作為mysqla d m用戶登錄,或者在自己的賬號下安裝mysql,那么可以不以r o o t身份運行命令,而且應該省略--user 選項。 用下列命令啟動服務器: # bin/safe_mysqld --user=mysqladm & --user 選項告訴服務器作為mysqladm 運行。如果想啟用日志,使用下列命令: # bin/safe_mysqld--user=mysqladm --log & 缺省的安裝允許mysqlroot 用戶不用口令進行連接。設口令是個好主意。還應該在系統啟動和關閉時,安排服務器啟動和關閉。此外,推薦使用更新日志,因為這對數據恢復過程是很有用的。對于完成這些活動的說明,請參閱第11章。
安裝perl dbi 支持環境
如果想要編寫訪問mysql數據庫的perl 腳本,應該安裝dbi 軟件。dbi 要求已經安裝過mysql客戶機編程支持環境,因為它要使用mysqlc 客戶機庫。如果希望編寫基于web 的dbi 腳本,還可以安裝cgl.pm 模塊。dbi 軟件需要perl 的相當新的版本(5.004 或更新)。如果沒有安裝perl,請訪問http://www. per l . c o m /,下載perl 分發包,并在安裝dbi 支持環境前安裝它。 dbi 支持環境需要三個模塊,可從源代碼或rpm 文件對它進行安裝: d a t a - d um per 方便地處理perl 數據結構的模塊。 dbi 主dbi 驅動。 msql-mysql-modules 連接到mysql服務器時,dbi 使用的mysql專用驅動。 如果從源代碼進行安裝,應該按前面清單中給出的次序安裝這個模塊。否則,下面安裝說明中的測試步驟將會不正常。 所有三個模塊的安裝都是類似的。在從源代碼進行安裝時,利用下面的某個命令打開分發包(如果tar 版本不支持非壓縮分發包的z 選項,應該使用第二條命令): % tar zxf dist_file.tar.gz % gunzip < dist_file.tar.gz | tar xf 然后進入tar 命令創建的分發包目錄并運行下列命令(可能需要作為root 運行這些安裝步驟): % perl makefile.pl % make % make test % make install 如果運行前面msql-mysql-modules 分發包的命令,在生成makefile 時,perl 命令將提出下列問題: ·which drivers do youwant to install? 存在mysql和msql 的各種組合選擇。除非還運行m sql,否則選擇mysql使其簡單化。 ·do youwant to install the mysqlperl emulation? mysqlperl 是mysql的舊perl 接口,已經作廢。除非有舊的mysqlperl 腳本并希望在dbi 模塊中啟用仿真支持環境,否則回答為n o。 ·where is your mysqlinstalled?這應該是包含mysql頭文件的祖父目錄,大概是/usr/local 或/ us r / l o c a l / mysql,除非將mysql安裝在非標準的位置才不是這樣。 ·which database should i use for testing the mysqldrivers? 缺省為t e s t,除非關閉了對它的匿名訪問,否則這樣應該可以了。在關閉其匿名訪問時,需要給出一個您擁有訪問權的數據庫名,然后為后面的問題指定一個合法的mysql用戶名和口令。 ·on which host is the database running? 如果運行的是一個本地服務器, localhost 就可以了。如果不行,指定一個您擁有訪問權的服務器主機。在執行make test 命令時,mysql服務器必須運行在這個主機上,否則測試將失敗。 ·user name for connecting to the database? password for connecting to the database? 為測試連接到mysql服務器的所用的用戶名和口令。缺省設置時,這兩個問題都可以回答un d e f。這樣將使驅動作為匿名用戶連接。如果需要非匿名連接,可指定非空值。 如果安裝perl 模塊有問題,可參閱相應分發包的readme 文件以及dbi 郵件清單的郵件存檔文件,因為多數安裝問題的答案都可從該處找到。 如果希望使用c g i . p m,它可能已經在perl 安裝中給出了。試運行命令perldoc cgi。如果顯示cgi 文檔,那么cgi 已經安裝。否則,取得相應的分發包,按與其他perl 模塊相同的說明打開并安裝。 如果為了使用基于web 的dbi 腳本,希望安裝mod_perl apache 模塊,可訪問下列位置的apache web 站點的mod_perl 區,得到更多的信息: http://perl.apache.org/
安裝php 和apache
按照下面的說明可以開始行動了。如果遇到問題,可查看php 分發包所含的i n s ta l l文件的“verbose insta l l”一節(閱讀該文件是個不壞的主意,它含有大量有用信息)。 這些說明都假定您有一個apache 源代碼分發包可用,而且將作為一個apache 模塊運行php。還假定您具有apache 1.3.9 和php 3.0.12,而且位于這樣一個目錄中,在該目錄下可定位含有源代碼分發包的apache_1.3.9 和php-3.0.12 目錄。如果您擁有不同的版本或位置,在使用下列說明時,應該替換成您的實際版本號和路徑名。 要配置和建立php,可從下列命令入手(這個過程看上去有點怪,因為要從apache 分發包開始,但它是對的): % cd apache_1.3.9 % ./configure apache 的configure 命令是必須的,因為php 需要的某些頭文件是在配置時生成的。如果不在apache 分發包中運行configure ,php 配置過程將不能找到文件。在配置了apache后,進入php 分發包目錄,配置php,設置它,并安裝它。還可以安裝php 初始化文件的一個拷貝: php 的configure 命令告訴php 您想要mysql支持環境,并指出apache 源代碼位于何處。--enable-track-vars 選項將窗口輸入的自動轉換轉入可從php 頁內部容易地訪問的變量內。make 命令編譯和安裝php。有可能需要作為root 安裝初始化文件p h p 3 . i n i。 在作為一個模塊建立php 時,直接拷貝相應模塊到apache 源代碼樹來安裝它,以便可將它連接進apache 二進制代碼內。在完成后,可按如下編譯和安裝apache: % cd ../apache_1.3.9 % ./configure --activate-module=src/modules/php3/libphp3.a % make % make install 這些步驟配置apache,以便知道php 模塊文件,然后建立和安裝它。應該編輯apache配置文件h t t p d . c o n f,以便apache 識別php 腳本。php 識別是基于php 腳本的文件擴展名進行的。例如,如果希望apache 識別.php 和. p h p 3,在配置文件中放入下面的兩行: addtype application/x-httpd-php3.php addtype application/x-httpd-php3.php3 所用的后綴依賴于打算怎樣命名php 腳本。.php 和.php3 可能是最常用的。另一常用的后綴為. p h t m l。如果愿意,可以將它們都啟用。如果打算安裝從使用這些擴展名的其他人那里得到的頁面,最好都啟用它們。 還可以告訴apache 在url 的結尾處未指定文件名時,將index.php 或index.php3 作為某個目錄的缺省文件。您可能會在配置文件中發現如下的行: directoryindex index.html 將其更改如下: directoryindex index.html index.php index.php3 在編輯apache 配置文件后,結束httpd 服務器(如果有一個正在運行),然后啟動剛安裝的新h t t p d。在許多系統中,下面的命令(以root 執行)完成此工作: # /usr/local/apache/bin/apachectl stop # /usr/local/apache/bin/apachectl start 還應該設置apache 在系統啟動和關閉時啟動和關閉。相應的說明請參閱apache 文檔。一般情況下,它包括導入時運行apachectl start,以及關閉時運行apachectl stop。