如果只需要運行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。