配置或者程序概述
MySQL程序首先檢查環境變量,然后檢查選項文件,然后檢查命令行來確定給出了哪些選項。如果多次指定一個選項,最后出現的選項占先。
這說明環境變量具有最低的優先級,命令行選項具有最高優先級。
可以在選項文件中指定程序選項的默認值來讓MySQL程序處理各選項。
不需要在每次運行程序時輸入選項,但可以根據需要通過命令行選項來覆蓋默認值。
在命令行中指定的程序選項遵從下述規則:
· 在命令名后面緊跟選項。
· 選項參量以一個和兩個破折號開始,取決于它具有短名還是長名。許多選項有兩種形式。
例如,-?和--help是指導MySQL程序顯示幫助消息的選項的短名和長名。
· 選項名對大小寫敏感。-v和-V均有效,但具有不同的含義。(它們是--verbose和--version選項的短名)。
· 部分選項在選項名后面緊隨選項值。
例如,-h localhost或--host=localhost表示客戶程序的MySQL服務器主機。選項值可以告訴程序MySQL服務器運行的主機名。
· 對于帶選項值的長選項,通過一個‘=’將選項名和值隔離開來。
對于帶選項值的短選項,選項值可以緊隨選項字母后面,或者二者之間可以用一個空格隔開。
(-hlocalhost和-h localhost是等效的)。
該規則的例外情況是指定MySQL密碼的選項。
該選項的形式可以為--password=pass_val或--password。
在后一種情況(未給出 密碼值),程序將提示輸入密碼。也可以給出密碼選項,短形式為-ppass_val或-p。
然而,對于短形式,如果給出了 密碼值,必須緊跟在選項后面,中間不能插入空格。
這樣要求的原因是如果選項后面有空格,程序沒有辦法來告知后面的參量是 密碼值還是其它某種參量。
因此,下面兩個命令的含義完全不同:
· shell> mysql -ptest
· shell> mysql -p test
第一個命令讓mysql使用密碼test,但沒有指定默認數據庫。
第二個命令讓mysql提示輸入 密碼并使用test作為默認數據庫。
要想禁用列名,可以使用下面的形式來指定選項:
--disable-column-names
--skip-column-names
--column-names=0
--disable和--skip前綴與=0后綴的效果相同:它們均關閉選項。
可以用下述方法“啟用”選項:
--column-names
--enable-column-names
--column-names=1
如果選項有前綴--loose,如果程序未識別出選項不會提示錯誤退出,但是會發出一條警告:
shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--no-such-option'
當你從安裝了多個MySQL的同一臺機器上運行程序時,--loose前綴會很有用。當你在一個選項文件中列出選項時,該前綴會特別有用。有可能不能被程序的所有版本識別的選項可以冠以--loose前綴(或在選項文件中用loose)。不能識別選項的程序版本將會發出一條警告并忽視該選項。
對mysql偶爾有用的另一個選項是-e或--execute選項,可用來將SQL語句傳遞給服務器。
該語句必須用引號引起來(單引號或雙引號)。(然而,如果想要在查詢中將值引起來,則對于查詢應使用雙引號,查詢中引用的值應使用單引號)。
當使用該選項時,語句被執行,然后mysql立即退出命令外殼。
shell> mysql -u root -p -e "SELECT User, Host FROM User" mysql
請注意mysql數據庫名作為一個獨立的參量傳遞。
然而,相同的查詢可能已經使用mysql -u root -p -e "SELECT User,Host FROM mysql.User"從外殼中執行。
可以按這種方式傳遞多個SQL語句,用分號隔開:
shell> mysql -u root -p --execute="SELECT Name FROM Country WHERE Name LIKE 'AU%';SELECT COUNT(*) FROM City" world
請注意長形式(--execute)后面必須緊跟一個等號(=)。
-e選項也可以以類似方式用來將命令傳遞給MySQL簇的ndb_mgm管理客戶端。
MySQL程序可以從選項文件(有時也稱為配置文件)讀取啟動選項。
選項文件提供了一種很方便的方式來指定常用的選項,因此不需要每次運行程序時從命令行輸入。
下面的程序支持選項文件:myisamchk、myisampack、mysql、mysql.server、mysqladmin、mysqlbinlog、mysqlcc、mysqlcheck、mysqld_safe、mysqldump、mysqld、mysqlhotcopy、mysqlimport和mysqlshow。
注釋:在Unix平臺上,MySQL忽略人人可寫的配置文件。這是故意的,是一個安全措施。
任何可以在運行MySQL程序時在命令行給出的長選項也可以在選項文件中給出。要想列出程序的適用選項,用--help選項運行程序。
在選項文件中指定選項的語法類似于命令行語法,例外的是要忽略掉兩個破折號。例如,命令行中的--quick或--host=localhost在選項文件中應指定為quick或host=localhost。要想在選項文件中指定--loose-opt_name形式的選項,應寫為loose-opt_name。
選項文件中的空行被忽略掉。非空行可以采用下面任何形式:
· #注釋,;注釋
注釋行以‘#’或‘;’開頭。‘#’注釋也可以從行的中部開始。
· [group]
group是你想要設置選項的程序名或組名。在組行后面,任何opt_name或set-variable行適用于組名,直到選項文件結尾或給出其它組行。
· opt_name
等價于命令行中的--opt_name。
· opt_name=value
等價于命令行中的--opt_name=value。在選項文件中,‘=’字符附近可以有空格,而在命令行中是不允許的。你可以用單引號或雙引號來引用值。如果值包含一個‘#’注釋字符或空格時很有用。
選項名和值前后的空白將自動刪除掉。你可以在選項值中使用轉義序列‘\b’、‘\t’、‘\n’、‘\r’、‘\\’以及‘\s’來表示退格、tab、換行符、回車以及空格字符。
從5.0系列的MySQL 5.0.4開始,可以在選項文件中使用!include指令來包括具體文件和!includedir來搜索選項文件的具體目錄。例如,要包括文件/home/mydir/myopt.cnf,可以使用:
!include /home/me/myopt.cnf
要搜索所有以.cnf結尾的文件的目錄/home/mydir并作為選項文件讀取,應使用:
!includedir /home/mydir
請注意這些選項與節有關。例如,假定你想要使用my.cnf中的某些內容,如下所示:
[mysqld]
!include /home/mydir/myopt.cnf
在這種情況下,只為該服務器處理文件myopt.cnf,并且!include指令將被客戶應用程序忽略。然而,如果你使用下面的部分:
[mysqldump]
!includedir /home/mydir/my-dump-option
則只有mysqldump為以.cnf結尾的文件檢查目錄/home/mydir/my-dump-option,服務器或其它客戶應用程序均不檢查。
注釋:目前,在Unix操作系統中,所發現的使用!includedir指令包括的文件的文件名必須以.cnf為擴展名。
在Windows中,該指令也為有.ini擴展名(包括.cnf)的文件做檢查。
如果你想要創建只由一個具體mysqld服務器發布系列讀取的選項組,選項組可以用[mysqld-5.0]、[mysqld-5.1]等名稱。
下面的組表示--new選項只能用于5.1.x 版本的MySQL服務器:
[mysqld-5.1]
new
下面是一個典型的全局選項文件:
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
[mysqldump]
quick
在上述的選項文件中,設置key_buffer_size和max_allowed_packet變量的行使用了var_name=value語法。
下面是一個典型的用戶選項文件:
[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
注釋:在Windows中,可以不顯示.cnf選項文件的擴展名。
所有支持選項文件的MySQL程序可以處理下面的命令行選項:
· --no-defaults
不讀取任何選項文件。
· --print-defaults
打印從選項文件中獲得的程序名和所有選項。
· --defaults-file=path_name
只使用給出的選項文件。path_name是文件的全路徑名。
· --defaults-extra-file=path_name
在全局選項文件后但在用戶選項文件前讀該選項文件。path_name是文件的全路徑名。
在shell腳本中,可以使用my_print_defaults程序來分析選項文件。
下面的例子顯示了當要求顯示[client]和[mysql]組內發現的選項時my_print_defaults產生的輸出:
shell> my_print_defaults client mysql
要想用環境變量指定選項,使用適用注釋處理器的語法來設置變量。例如,在Windows或NetWare中,可以設置USER變量來指定MySQL賬戶名。要想實現,使用語法:
SET USER=your_name
在Unix中的語法取決于你的外殼。假定你想要使用MYSQL_TCP_PORT變量指定TCP/IP端口號。典型的語法為(例如sh、bash、zsh等等):
MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT
第1個命令設置變量,export命令將變量導出到外殼環境,以便其值可供MySQL和其它進程訪問。
csh和tcsh有類似的問題。運行這些外殼時,使用setenv使外殼變量適用環境:
setenv MYSQL_TCP_PORT 3306
可以在命令提示符下執行設置環境變量的命令,以便立即生效。這些設定值持續到你注銷。
要向讓這些設定值在你每次登錄時生效,將相應命令放入每次啟動時命令解釋符所讀的啟動文件中。
在Windows中典型啟動文件為AUTOEXEC.BAT,bash為.bash_profile,或者tcsh為.tcshrc。
許多MySQL程序有一些內部變量可以在運行時設置。程序變量的設置與帶有值的其它長選項相同。例如,mysql有一個max_allowed_packet變量,可以控制其通信緩沖區的最大長度。要想為mysql將max_allowed_packet變量的值設置為16MB,使用下面的任何一個命令:
shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M
第1個命令以字節指定值。第2個命令以兆字節指定值。變量值可以有一個后綴K、M或者G(可以為大寫或小寫)來表示千字節、兆字節或者十億字節的單位。
在選項文件中,變量設定值沒有引導破折號:
[mysql]
max_allowed_packet=16777216
或:
[mysql]
max_allowed_packet=16M
如果你喜歡,變量名的下劃線可以為破折號。
?
轉載于:https://www.cnblogs.com/1406425891-z/archive/2013/05/18/3085005.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: [原]全桥移相(PSFB)原边电流突跌分
- 下一篇: 安卓开发之出错集