?
This document uses PHP Chinese website manual Release
目錄
本章簡(jiǎn)要概述了MySQL AB提供的命令行程序,并討論了運(yùn)行這些程序時(shí)如何指定選項(xiàng)。大多數(shù)程序具有其操作專(zhuān)用的選項(xiàng),但指定選項(xiàng)的語(yǔ)法都近似。后面的幾章更加詳細(xì)地描述了各個(gè)程序,包括它們識(shí)別的選項(xiàng)。
MySQL AB還提供了3個(gè)GUI客戶(hù)程序供MySQL服務(wù)器使用:
·???????? MySQL管理器 :該工具用于管理MySQL服務(wù)器、數(shù)據(jù)庫(kù)、表以及用戶(hù)。
·???????? MySQL查詢(xún)?yōu)g覽器 :該圖形工具由MySQL AB提供,用于創(chuàng)建、執(zhí)行以及優(yōu)化對(duì)MySQL數(shù)據(jù)庫(kù)的查詢(xún)。
·???????? MySQL移植工具包 :該工具可以幫助你將計(jì)劃和數(shù)據(jù)從其它關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)移植到MySQL。
MySQL AB提供了幾種類(lèi)型的程序:
·???????? MYSQL服務(wù)器和服務(wù)器啟動(dòng)腳本:
o??????? mysqld是MySQL服務(wù)器
o??????? mysqld_safe、mysql.server和mysqld_multi是服務(wù)器啟動(dòng)腳本
o??????? mysql_install_db初始化數(shù)據(jù)目錄和初始數(shù)據(jù)庫(kù)
在第5章:數(shù)據(jù)庫(kù)管理中詳細(xì)討論了這些程序。
·???????? 訪問(wèn)服務(wù)器的客戶(hù)程序:
o??????? mysql是一個(gè)命令行客戶(hù)程序,用于交互式或以批處理模式執(zhí)行SQL語(yǔ)句。
o??????? mysqladmin是用于管理功能的客戶(hù)程序。
o??????? mysqlcheck執(zhí)行表維護(hù)操作。
o??????? mysqldump和mysqlhotcopy負(fù)責(zé)數(shù)據(jù)庫(kù)備份。
o??????? mysqlimport導(dǎo)入數(shù)據(jù)文件。?
o??????? mysqlshow顯示信息數(shù)據(jù)庫(kù)和表的相關(guān)信息。
在第8章:客戶(hù)端和實(shí)用工具程序 中詳細(xì)討論了這些程序。
·???????? 獨(dú)立于服務(wù)器操作的工具程序:
o??????? myisamchk執(zhí)行表維護(hù)操作。
o??????? myisampack產(chǎn)生壓縮、只讀的表。
o??????? mysqlbinlog是處理二進(jìn)制日志文件的實(shí)用工具。
o??????? perror顯示錯(cuò)誤代碼的含義。
在第5章:數(shù)據(jù)庫(kù)管理中詳細(xì)討論了myisamchk。在第8章:客戶(hù)端和實(shí)用工具程序 中詳細(xì)討論了其它程序。
大多數(shù)MySQL分發(fā)包括上述的全部程序,只是不包含那些與平臺(tái)相關(guān)的程序。(例如,在Windows中不使用服務(wù)器啟動(dòng)腳本)。不同的只是RPM分發(fā)更加具體化??赡芤粋€(gè)RPM是服務(wù)器分發(fā),另一個(gè)RPM是客戶(hù)程序分發(fā)等等。如果你丟失了一個(gè)或多個(gè)程序,要想查閱關(guān)于分發(fā)類(lèi)型和它們所包含內(nèi)容的信息,參見(jiàn)第2章:安裝MySQL。也可能需要安裝一些其它內(nèi)容。
要想從命令行調(diào)用MySQL程序(即從shell或命令提示),應(yīng)輸入程序名,并隨后輸入指導(dǎo)操作發(fā)的選項(xiàng)或其它參量。下面的命令顯示了一些程序調(diào)用的例子?!?span>shell>”表示命令解釋符提示;并不是輸入的部分。你所看見(jiàn)的具體提示取決于命令解釋符。典型提示符:sh或bash為$,csh或tcsh為%,Windows command.com或cmd.exe為C:\>。
shell> mysql test
shell> mysqladmin extended-status variables
shell> mysqlshow --help
shell> mysqldump --user=root personnel
以破折號(hào)開(kāi)始的參數(shù)為選項(xiàng)參量。它們通常指定程序與服務(wù)器的連接類(lèi)型或影響其操作模式。關(guān)于選項(xiàng)語(yǔ)法的描述參見(jiàn)4.3節(jié),“指定程序選項(xiàng)”。
非選項(xiàng)參數(shù)(不以破折號(hào)開(kāi)始的參量)可以為程序提供更詳細(xì)的信息。例如,mysql程序?qū)⒌谝粋€(gè)非選項(xiàng)參量解釋為數(shù)據(jù)庫(kù)名,因此命令 mysql test表示你想要使用test數(shù)據(jù)庫(kù)。
后面的章節(jié)描述了具體的程序,表示程序可以理解的選項(xiàng),并描述了其它非選項(xiàng)參量的含義。
部分選項(xiàng)對(duì)部分程序是通用的。最常用的是指定連接參數(shù)的--host、--user和--password選項(xiàng)。它們指示MySQL服務(wù)器運(yùn)行的主機(jī)和MySQL賬戶(hù)的用戶(hù)名和 密碼。所有MySQL客戶(hù)程序可以理解這些選項(xiàng);它們?cè)试S你指定連接哪個(gè)服務(wù)器,以及在該服務(wù)器上使用的 賬戶(hù)。
你也許會(huì)發(fā)現(xiàn)需要使用MySQL程序安裝的bin目錄的路徑名來(lái)調(diào)用MySQL程序。如果你試圖不在bin目錄下運(yùn)行MySQL程序,可能會(huì)遇到“程序未找到”錯(cuò)誤。為了更方便地使用MySQL,可以將bin目錄的路徑名添加到PATH環(huán)境變量中。然后運(yùn)行程序時(shí)只需要輸入程序名,而不需要輸入整個(gè)路徑名。
關(guān)于設(shè)置PATH的指令的命令解釋符請(qǐng)查閱相關(guān)文檔。設(shè)置環(huán)境變量的語(yǔ)法與解釋符有關(guān)。
可以用幾種方式提供MySQL程序的選項(xiàng):
·???????? 在命令行中在程序名后面提供。這對(duì)于具體程序調(diào)用時(shí)使用的選項(xiàng)很普遍。
·???????? 在程序啟動(dòng)時(shí)讀取的選項(xiàng)文件中設(shè)置。這對(duì)于每次程序運(yùn)行時(shí)使用的選項(xiàng)很普遍。
·???????? 在環(huán)境變量中設(shè)置。這對(duì)每次程序運(yùn)行時(shí)所使用的選項(xiàng)很有用,盡管實(shí)際上最常用選項(xiàng)文件。(5.12.2節(jié),“在Unix中運(yùn)行多個(gè)服務(wù)器”中討論了環(huán)境變量會(huì)很有幫助的一種情況。描述了使用這些變量來(lái)指定服務(wù)器和客戶(hù)程序的TCP/IP端口號(hào)和Unix套接字文件的各種技術(shù))。
MySQL程序首先檢查環(huán)境變量,然后檢查選項(xiàng)文件,然后檢查命令行來(lái)確定給出了哪些選項(xiàng)。如果多次指定一個(gè)選項(xiàng),最后出現(xiàn)的選項(xiàng)占先。這說(shuō)明環(huán)境變量具有最低的優(yōu)先級(jí),命令行選項(xiàng)具有最高優(yōu)先級(jí)。
可以在選項(xiàng)文件中指定程序選項(xiàng)的默認(rèn)值來(lái)讓MySQL程序處理各選項(xiàng)。不需要在每次運(yùn)行程序時(shí)輸入選項(xiàng),但可以根據(jù)需要通過(guò)命令行選項(xiàng)來(lái)覆蓋默認(rèn)值。
在命令行中指定的程序選項(xiàng)遵從下述規(guī)則:
·???????? 在命令名后面緊跟選項(xiàng)。
·???????? 選項(xiàng)參量以一個(gè)和兩個(gè)破折號(hào)開(kāi)始,取決于它具有短名還是長(zhǎng)名。許多選項(xiàng)有兩種形式。例如,-?和--help是指導(dǎo)MySQL程序顯示幫助消息的選項(xiàng)的短名和長(zhǎng)名。
·???????? 選項(xiàng)名對(duì)大小寫(xiě)敏感。-v和-V均有效,但具有不同的含義。(它們是--verbose和--version選項(xiàng)的短名)。
·???????? 部分選項(xiàng)在選項(xiàng)名后面緊隨選項(xiàng)值。例如,-h localhost或--host=localhost表示客戶(hù)程序的MySQL服務(wù)器主機(jī)。選項(xiàng)值可以告訴程序MySQL服務(wù)器運(yùn)行的主機(jī)名。
·???????? 對(duì)于帶選項(xiàng)值的長(zhǎng)選項(xiàng),通過(guò)一個(gè)‘=’將選項(xiàng)名和值隔離開(kāi)來(lái)。對(duì)于帶選項(xiàng)值的短選項(xiàng),選項(xiàng)值可以緊隨選項(xiàng)字母后面,或者二者之間可以用一個(gè)空格隔開(kāi)。(-hlocalhost和-h localhost是等效的)。該規(guī)則的例外情況是指定MySQL密碼的選項(xiàng)。該選項(xiàng)的形式可以為--password=pass_val或--password。在后一種情況(未給出 密碼值),程序?qū)⑻崾据斎朊艽a。也可以給出密碼選項(xiàng),短形式為-ppass_val或-p。然而,對(duì)于短形式,如果給出了 密碼值,必須緊跟在選項(xiàng)后面,中間不能插入空格。這樣要求的原因是如果選項(xiàng)后面有空格,程序沒(méi)有辦法來(lái)告知后面的參量是 密碼值還是其它某種參量。因此,下面兩個(gè)命令的含義完全不同:
·??????????????? shell> mysql -ptest
·??????????????? shell> mysql -p test
第一個(gè)命令讓mysql使用密碼test,但沒(méi)有指定默認(rèn)數(shù)據(jù)庫(kù)。第二個(gè)命令讓mysql提示輸入 密碼并使用test作為默認(rèn)數(shù)據(jù)庫(kù)。
部分選項(xiàng)控制可以開(kāi)關(guān)的行為。例如,mysql客戶(hù)端支持--column-names選項(xiàng),確定是否在查詢(xún)結(jié)果開(kāi)頭顯示一行欄目名。默認(rèn)情況,該選項(xiàng)被啟用。但是可能在某些情況下你想要禁用它,例如將mysql的輸出發(fā)送到另一個(gè)只希望看到數(shù)據(jù)而不希望看到開(kāi)始的標(biāo)題行的程序中。
要想禁用列名,可以使用下面的形式來(lái)指定選項(xiàng):
--disable-column-names
--skip-column-names
--column-names=0
--disable和--skip前綴與=0后綴的效果相同:它們均關(guān)閉選項(xiàng)。
可以用下述方法“啟用”選項(xiàng):
--column-names
--enable-column-names
--column-names=1
如果選項(xiàng)有前綴--loose,如果程序未識(shí)別出選項(xiàng)不會(huì)提示錯(cuò)誤退出,但是會(huì)發(fā)出一條警告:
shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--no-such-option'
當(dāng)你從安裝了多個(gè)MySQL的同一臺(tái)機(jī)器上運(yùn)行程序時(shí),--loose前綴會(huì)很有用。當(dāng)你在一個(gè)選項(xiàng)文件中列出選項(xiàng)時(shí),該前綴會(huì)特別有用。有可能不能被程序的所有版本識(shí)別的選項(xiàng)可以冠以--loose前綴(或在選項(xiàng)文件中用loose)。不能識(shí)別選項(xiàng)的程序版本將會(huì)發(fā)出一條警告并忽視該選項(xiàng)。
對(duì)mysql偶爾有用的另一個(gè)選項(xiàng)是-e或--execute選項(xiàng),可用來(lái)將SQL語(yǔ)句傳遞給服務(wù)器。該語(yǔ)句必須用引號(hào)引起來(lái)(單引號(hào)或雙引號(hào))。(然而,如果想要在查詢(xún)中將值引起來(lái),則對(duì)于查詢(xún)應(yīng)使用雙引號(hào),查詢(xún)中引用的值應(yīng)使用單引號(hào))。當(dāng)使用該選項(xiàng)時(shí),語(yǔ)句被執(zhí)行,然后mysql立即退出命令外殼。
例如,你可以用下面的命令獲得用戶(hù)賬戶(hù)列表:
shell> mysql -u root -p -e "SELECT User, Host FROM User" mysql
Enter password: ******
+------+-----------+
| User | Host????? |
+------+-----------+
|? ????| gigan???? |
| root | gigan???? |
|????? | localhost |
| jon? | localhost |
| root | localhost |
+------+-----------+
shell>
請(qǐng)注意mysql數(shù)據(jù)庫(kù)名作為一個(gè)獨(dú)立的參量傳遞。然而,相同的查詢(xún)可能已經(jīng)使用mysql -u root -p -e "SELECT User,Host FROM mysql.User"從外殼中執(zhí)行。
可以按這種方式傳遞多個(gè)SQL語(yǔ)句,用分號(hào)隔開(kāi):
shell> mysql -u root -p --execute="SELECT Name FROM Country WHERE Name LIKE 'AU%';SELECT COUNT(*) FROM City" world
Enter password: ******
+-----------+
| Name????? |
+-----------+
| Australia |
| Austria?? |
+-----------+
+----------+
| COUNT(*) |
+----------+
|???? 4079 |
+----------+
請(qǐng)注意長(zhǎng)形式(--execute)后面必須緊跟一個(gè)等號(hào)(=)。
-e選項(xiàng)也可以以類(lèi)似方式用來(lái)將命令傳遞給MySQL簇的ndb_mgm管理客戶(hù)端。相關(guān)例子參見(jiàn)17.3.6節(jié),“安全關(guān)閉和重啟”。
MySQL程序可以從選項(xiàng)文件(有時(shí)也稱(chēng)為配置文件)讀取啟動(dòng)選項(xiàng)。選項(xiàng)文件提供了一種很方便的方式來(lái)指定常用的選項(xiàng),因此不需要每次運(yùn)行程序時(shí)從命令行輸入。
下面的程序支持選項(xiàng)文件:myisamchk、myisampack、mysql、mysql.server、mysqladmin、mysqlbinlog、mysqlcc、mysqlcheck、mysqld_safe、mysqldump、mysqld、mysqlhotcopy、mysqlimport和mysqlshow。
注釋?zhuān)?/span>MySQL簇程序使用的選項(xiàng)文件參見(jiàn)17.4節(jié),“MySQL簇的配置”。
在Windows中,MySQL程序從以下文件讀取啟動(dòng)選項(xiàng):
文件名 |
目的 |
WINDIR\my.ini |
全局選項(xiàng) |
C:\my.cnf |
全局選項(xiàng) |
INSTALLDIR\my.ini |
全局選項(xiàng) |
defaults-extra-file |
用--defaults-extra-file=path指定的文件,如果有 |
WINDIR表示Windows目錄的位置。通常為C:\WINDOWS或C:\WINNT。你可以使用下面的命令通過(guò)環(huán)境變量WINDIR的值確定其確切位置:
C:\> echo %WINDIR%
INSTALLDIR表示MySQL的安裝目錄。一般為C:\PROGRAMDIR\MySQL\MySQL 5.1 Server,其中PROGRAMDIR表示程序目錄(通常為Windows英文版的Program Files),MySQL 5.1的安裝是根據(jù)安裝和配置向?qū)瓿傻摹⒁?jiàn)2.3.5.14節(jié),“my.ini文件的位置”。
在Unix中,MySQL程序從下面的文件讀取啟動(dòng)選項(xiàng):
文件名 |
目的 |
/etc/my.cnf |
全局選項(xiàng) |
$MYSQL_HOME/my.cnf |
服務(wù)器相關(guān)選項(xiàng) |
defaults-extra-file |
用--defaults-extra-file=path指定的文件,如果有 |
~/.my.cnf |
用戶(hù)相關(guān)選項(xiàng) |
MYSQL_HOME是一個(gè)環(huán)境變量,包含服務(wù)器相關(guān)的my.cnf文件駐留的目錄路徑。
如果未設(shè)置MYSQL_HOME,并且DATADIR中有一個(gè)my.cnf文件,BASEDIR中沒(méi)有my.cnf文件,mysqld_safe將MYSQL_HOME設(shè)置為DATADIR。否則,如果未設(shè)置MYSQL_HOME并且在DATADIR中沒(méi)有my.cnf,則mysqld_safe將MYSQL_HOME設(shè)置為BASEDIR。
典型情況二進(jìn)制安裝的目錄為/usr/local/mysql/data或源代碼安裝的目錄為/usr/local/var。請(qǐng)注意這是配置時(shí)指定的數(shù)據(jù)目錄的位置,而不是 mysqld啟動(dòng)時(shí)用--datadir指定的。運(yùn)行時(shí)使用--datadir對(duì)尋找選項(xiàng)文件的服務(wù)器沒(méi)有效果,因?yàn)榉?wù)器在處理命令行參量之前尋找這些選項(xiàng)。
MySQL按照上述順序?qū)ふ疫x項(xiàng)文件,并讀存在的選項(xiàng)文件。如果你想要使用的某個(gè)選項(xiàng)文件不存在,則用明文文本編輯器創(chuàng)建。如果存在多個(gè)選項(xiàng)文件,文件中指定的后讀取的選項(xiàng)要優(yōu)先文件中指定的先讀取的選項(xiàng)。
注釋?zhuān)?/span>在Unix平臺(tái)上,MySQL忽略人人可寫(xiě)的配置文件。這是故意的,是一個(gè)安全措施。
任何可以在運(yùn)行MySQL程序時(shí)在命令行給出的長(zhǎng)選項(xiàng)也可以在選項(xiàng)文件中給出。要想列出程序的適用選項(xiàng),用--help選項(xiàng)運(yùn)行程序。
在選項(xiàng)文件中指定選項(xiàng)的語(yǔ)法類(lèi)似于命令行語(yǔ)法,例外的是要忽略掉兩個(gè)破折號(hào)。例如,命令行中的--quick或--host=localhost在選項(xiàng)文件中應(yīng)指定為quick或host=localhost。要想在選項(xiàng)文件中指定--loose-opt_name形式的選項(xiàng),應(yīng)寫(xiě)為loose-opt_name。
選項(xiàng)文件中的空行被忽略掉。非空行可以采用下面任何形式:
·???????? #注釋,;注釋
注釋行以‘#’或‘;’開(kāi)頭。‘#’注釋也可以從行的中部開(kāi)始。
·???????? [group]
group是你想要設(shè)置選項(xiàng)的程序名或組名。在組行后面,任何opt_name或set-variable行適用于組名,直到選項(xiàng)文件結(jié)尾或給出其它組行。
·???????? opt_name
等價(jià)于命令行中的--opt_name。
·???????? opt_name=value
等價(jià)于命令行中的--opt_name=value。在選項(xiàng)文件中,‘=’字符附近可以有空格,而在命令行中是不允許的。你可以用單引號(hào)或雙引號(hào)來(lái)引用值。如果值包含一個(gè)‘#’注釋字符或空格時(shí)很有用。
選項(xiàng)名和值前后的空白將自動(dòng)刪除掉。你可以在選項(xiàng)值中使用轉(zhuǎn)義序列‘\b’、‘\t’、‘\n’、‘\r’、‘\\’以及‘\s’來(lái)表示退格、tab、換行符、回車(chē)以及空格字符。
在Windows中,如果某個(gè)選項(xiàng)值表示一個(gè)路徑名,應(yīng)使用‘/’而不是‘\’作為路徑名間隔符來(lái)指定值。如果使用‘\’,必須用雙斜線(xiàn)‘\\’,因?yàn)椤?span>\’在MySQL中為轉(zhuǎn)義字符。
如果選項(xiàng)組名與程序名相同,則組內(nèi)的選項(xiàng)專(zhuān)用于該程序。
所有客戶(hù)程序(但不能被mysqld)讀取[client]選項(xiàng)組。這樣允許你指定適用于所有客戶(hù)端的選項(xiàng)。例如,[client]是用于指定連接服務(wù)器的 密碼的理想的組。(但應(yīng)確保該選項(xiàng)文件只能由你自己讀寫(xiě),以便其他人不能發(fā)現(xiàn)你的密碼)。一定不要隨意在[client]組內(nèi)放置選項(xiàng),除非它可以被你使用的所有客戶(hù)程序識(shí)別。如果你試圖運(yùn)行程序,如果程序不理解選項(xiàng)則會(huì)顯示一條錯(cuò)誤消息后退出。
從5.0系列的MySQL 5.0.4開(kāi)始,可以在選項(xiàng)文件中使用!include指令來(lái)包括具體文件和!includedir來(lái)搜索選項(xiàng)文件的具體目錄。例如,要包括文件/home/mydir/myopt.cnf,可以使用:
!include /home/me/myopt.cnf
要搜索所有以.cnf結(jié)尾的文件的目錄/home/mydir并作為選項(xiàng)文件讀取,應(yīng)使用:
!includedir /home/mydir
請(qǐng)注意這些選項(xiàng)與節(jié)有關(guān)。例如,假定你想要使用my.cnf中的某些內(nèi)容,如下所示:
[mysqld]
!include /home/mydir/myopt.cnf
在這種情況下,只為該服務(wù)器處理文件myopt.cnf,并且!include指令將被客戶(hù)應(yīng)用程序忽略。然而,如果你使用下面的部分:
[mysqldump]
!includedir /home/mydir/my-dump-option
則只有mysqldump為以.cnf結(jié)尾的文件檢查目錄/home/mydir/my-dump-option,服務(wù)器或其它客戶(hù)應(yīng)用程序均不檢查。
注釋?zhuān)?/span>目前,在Unix操作系統(tǒng)中,所發(fā)現(xiàn)的使用!includedir指令包括的文件的文件名必須以.cnf為擴(kuò)展名。在Windows中,該指令也為有.ini擴(kuò)展名(包括.cnf)的文件做檢查。
如果你想要?jiǎng)?chuàng)建只由一個(gè)具體mysqld服務(wù)器發(fā)布系列讀取的選項(xiàng)組,選項(xiàng)組可以用[mysqld-5.0]、[mysqld-5.1]等名稱(chēng)。下面的組表示--new選項(xiàng)只能用于5.1.x 版本的MySQL服務(wù)器:
[mysqld-5.1]
new
下面是一個(gè)典型的全局選項(xiàng)文件:
[client]
port=3306
socket=/tmp/mysql.sock
?
[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
?
[mysqldump]
quick
在上述的選項(xiàng)文件中,設(shè)置key_buffer_size和max_allowed_packet變量的行使用了var_name=value語(yǔ)法。
下面是一個(gè)典型的用戶(hù)選項(xiàng)文件:
[client]
# The following password will be sent to all standard MySQL clients
password="my_password"
?
[mysql]
no-auto-rehash
connect_timeout=2
?
[mysqlhotcopy]
interactive-timeout
?
如果你有一個(gè)源代碼分發(fā),可以從support-file目錄中找到名為my-xxxx.cnf的示例選項(xiàng)文件。如果你有一個(gè)二進(jìn)制分發(fā),在MySQL安裝目錄的support-file目錄中查找。在Windows中,示例選項(xiàng)文件也可以位于MySQL的安裝目錄(如果你不知道在哪里,查閱本節(jié)前面或第2章:安裝MySQL)。目前有小、中等、大以及非常大的系統(tǒng)的示例選項(xiàng)文件。要想練習(xí)這些文件,在Windows中復(fù)制到C:\my.cnf或在Unix中復(fù)制到根目錄的.my.cnf。
注釋?zhuān)?/span>在Windows中,可以不顯示.cnf選項(xiàng)文件的擴(kuò)展名。
所有支持選項(xiàng)文件的MySQL程序可以處理下面的命令行選項(xiàng):
·???????? --no-defaults
不讀取任何選項(xiàng)文件。
·???????? --print-defaults
打印從選項(xiàng)文件中獲得的程序名和所有選項(xiàng)。
·???????? --defaults-file=path_name
只使用給出的選項(xiàng)文件。path_name是文件的全路徑名。
·???????? --defaults-extra-file=path_name
在全局選項(xiàng)文件后但在用戶(hù)選項(xiàng)文件前讀該選項(xiàng)文件。path_name是文件的全路徑名。
為了正確工作,每個(gè)選項(xiàng)必須緊隨命令行中的命令名后,例外情況是--print-defaults可以緊隨--defaults-file或--defaults-extra-file。
在shell腳本中,可以使用my_print_defaults程序來(lái)分析選項(xiàng)文件。下面的例子顯示了當(dāng)要求顯示[client]和[mysql]組內(nèi)發(fā)現(xiàn)的選項(xiàng)時(shí)my_print_defaults產(chǎn)生的輸出:
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
開(kāi)發(fā)人員請(qǐng)注意:在C客戶(hù)程序庫(kù)中,只是通過(guò)處理命令行參量前面的所有匹配選項(xiàng)(即相應(yīng)組內(nèi)的選項(xiàng))來(lái)處理選項(xiàng)文件。對(duì)于使用多次指定的最后的選項(xiàng)實(shí)例的程序,可以很好地工作。如果你有一個(gè)C或C++程序按這種方式處理多次指定的選項(xiàng),但不讀取選項(xiàng)文件,只需要添加兩行來(lái)實(shí)現(xiàn)該功能。檢查標(biāo)準(zhǔn)MySQL客戶(hù)程序的源代碼來(lái)看看如何做。
其它幾個(gè)MySQL語(yǔ)言接口基于C客戶(hù)庫(kù),它們中的一部分提供了訪問(wèn)選項(xiàng)文件的一種方式。包括Perl和Python。關(guān)于接口的詳細(xì)信息參見(jiàn)相關(guān)文檔。
要想用環(huán)境變量指定選項(xiàng),使用適用注釋處理器的語(yǔ)法來(lái)設(shè)置變量。例如,在Windows或NetWare中,可以設(shè)置USER變量來(lái)指定MySQL賬戶(hù)名。要想實(shí)現(xiàn),使用語(yǔ)法:
SET USER=your_name
在Unix中的語(yǔ)法取決于你的外殼。假定你想要使用MYSQL_TCP_PORT變量指定TCP/IP端口號(hào)。典型的語(yǔ)法為(例如sh、bash、zsh等等):
MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT
第1個(gè)命令設(shè)置變量,export命令將變量導(dǎo)出到外殼環(huán)境,以便其值可供MySQL和其它進(jìn)程訪問(wèn)。
csh和tcsh有類(lèi)似的問(wèn)題。運(yùn)行這些外殼時(shí),使用setenv使外殼變量適用環(huán)境:
setenv MYSQL_TCP_PORT 3306
可以在命令提示符下執(zhí)行設(shè)置環(huán)境變量的命令,以便立即生效。這些設(shè)定值持續(xù)到你注銷(xiāo)。要向讓這些設(shè)定值在你每次登錄時(shí)生效,將相應(yīng)命令放入每次啟動(dòng)時(shí)命令解釋符所讀的啟動(dòng)文件中。在Windows中典型啟動(dòng)文件為AUTOEXEC.BAT,bash為.bash_profile,或者tcsh為.tcshrc。關(guān)于命令解釋符的具體細(xì)節(jié)請(qǐng)查閱文檔。
附錄F:環(huán)境變量 了列出影響MySQL程序操作的所有環(huán)境變量。
許多MySQL程序有一些內(nèi)部變量可以在運(yùn)行時(shí)設(shè)置。程序變量的設(shè)置與帶有值的其它長(zhǎng)選項(xiàng)相同。例如,mysql有一個(gè)max_allowed_packet變量,可以控制其通信緩沖區(qū)的最大長(zhǎng)度。要想為mysql將max_allowed_packet變量的值設(shè)置為16MB,使用下面的任何一個(gè)命令:
shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M
第1個(gè)命令以字節(jié)指定值。第2個(gè)命令以兆字節(jié)指定值。變量值可以有一個(gè)后綴K、M或者G(可以為大寫(xiě)或小寫(xiě))來(lái)表示千字節(jié)、兆字節(jié)或者十億字節(jié)的單位。
在選項(xiàng)文件中,變量設(shè)定值沒(méi)有引導(dǎo)破折號(hào):
[mysql]
max_allowed_packet=16777216
或:
[mysql]
max_allowed_packet=16M
如果你喜歡,變量名的下劃線(xiàn)可以為破折號(hào)。
注釋?zhuān)?/span>MySQL 5.1仍然能識(shí)別舊的語(yǔ)法--set-variable = option=value,但現(xiàn)在不贊成使用。
部分服務(wù)器變量可以在運(yùn)行時(shí)設(shè)置。詳情參見(jiàn)5.3.3.1節(jié),“動(dòng)態(tài)系統(tǒng)變量”。
這是MySQL參考手冊(cè)的翻譯版本,關(guān)于MySQL參考手冊(cè),請(qǐng)?jiān)L問(wèn)dev.mysql.com.。原始參考手冊(cè)為英文版,與英文版參考手冊(cè)相比,本翻譯版可能不是最新的。