1. 程式人生 > >MySQL中文參考手冊之my.conf

MySQL中文參考手冊之my.conf

mysql.server指令碼可以被用來啟動或停止伺服器,通過用startstop引數呼叫它:

shell> mysql.server start
shell> mysql.server stop

mysql.server可在MySQL安裝目錄下的“share/mysql”目錄裡找到,或在MySQL原始碼樹的“support-files”目錄下找到。

mysql.server啟動伺服器之前,它把目錄改變到MySQL安裝目錄,然後呼叫safe_mysqld。如果你有在一個非標準的地點安裝的二進位制分發,你可能需要編輯mysql.server。修改它,執行safe_mysqld前,cd

到正確的目錄。如果你想要作為一些特定的使用者執行伺服器,你可以改變mysql_daemon_user=root行使用其他使用者,你也能修改mysql.server把其他選項傳給safe_mysqld

mysql.server stop通過向伺服器發出一個訊號停止它。你可手工執行mysqladmin shutdown關閉伺服器。

當你開始使用MySQL作為生產應用時,你可能想要增加這些啟動並且停止命令到在你的“/etc/rc * 檔案中適當的地方。注意如果你修改mysql.server,那麼如果某個時候你升級MySQL時,你的修改版本將被覆蓋,因此你應該做一個你可重新安裝的編輯過的版本的拷貝。

如果你的系統使用“/etc/rc.local”

啟動外部指令碼,你應該新增下列到其中:

/bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld &' 

你也可以在一個全域性“/etc/my.cnf”檔案中增加mysql.server的選項。一個典型的“/etc/my.cnf”檔案可能看起來像這樣:

mysqld]
datadir=/usr/local/mysql/var
socket=/tmp/mysqld.sock
port=3306

[mysql.server]
user=mysql
basedir=/usr/local/mysql
mysql.server指令碼使用下列變數:userdatadirbasedir
bindirpid-file

MySQL3.22 可以從選項檔案中為伺服器和客戶讀取預設啟動選項。

在Unix上,MySQL從下列檔案讀取預設選擇:

檔名 用途
/etc/my.cnf 全域性選項
DATADIR/my.cnf 伺服器特定的選專案
~/.my.cnf 使用者特定的選項

DATADIRMySQL的資料目錄(典型地對二進位制安裝是“/usr/local/mysql/data”或對原始碼安裝是“/usr/local/var”)。注意:這是在配置時間指定的目錄,不是mysqld啟動時用--datadir指定的目錄!(--datadir在伺服器尋找選項檔案的地方無效,因為它以前尋找他們,它處理任何命令列引數。)

MySQL在Win32上從下列檔案讀取預設選項:

檔名 用途
windows-system-directory/my.ini
C:/my.cnf 全域性選項
C:/mysql/data/my.cnf 伺服器特定的選項

注意,在Win32上你應該用/而不是/指定所有的路徑,如果你使用/,你需要指定兩個,因為在MySQL裡面/是轉義字元。

MySQL試圖以上述所列的順序讀取選項檔案。如果存在多個選項檔案,在一個後面檔案讀取的選項優先於在先前讀取的一個檔案中指定的同一個選項,在命令列上指定的選項優先於在任何選項檔案指定了的選項。有些選擇能使用環境變數指定,在命令列或在選項檔案指定的選項優先於環境變數。

下列程式支援選項檔案:mysqlmysqladminmysqldmysqldumpmysqlimportmysql.servermyisamchkmyisampack

你能使用選項檔案指定一個程式支援的任意長的選項!用--help選項執行程式可得到的可用選項的表。

一個選項檔案可以包含下列形式的行:

#comment
註釋行以“#”“;”開始,空行被忽略。
[group]
group是你想為其設定選項的程式或組的名字。在一個組行後,任何optionset-variable行應用於命名的組,直到選擇檔案結束或其他組的給出。
option
這等價於在命令列上的--option
option=value
這等價於在命令列上的--option=value
set-variable = variable=value
這等價於在命令列上的--set-variable variable=value。該語法必須被用來設定一個mysqld變數。

client組允許你指定適用於所有MySQL客戶的選項(不是mysqld)。這是理想的組來指定你用來與伺服器連線的口令。(但是保證只是選項檔案本身是可讀的和可寫的。)

注意,對域選項和值,所有頭部和尾部空白自動被刪除。你可以在的值串中使用轉義順序“/b”“/t”“/n”“/r”“//”“/s”(“/s”==空白)。

這是一個典型的全域性選項檔案:

[client] 
port=3306 
socket=/tmp/mysql.sock 
[mysqld] 
port=3306 
socket=/tmp/mysql.sock 
set-variable = key_buffer=16M 
set-variable = max_allowed_packet=1M 
[mysqldump] 
quick 

這是典型的使用者選項檔案:

[client]
# The following password will be sent to all standard MySQL clients
password=my_password

[mysql]
no-auto-rehash

如果你有一個原始碼分發,你將在“support-files”目錄下找到一個名為“my-example.cnf”樣品配置檔案。如果你有二進位制分發,在“DIR/share/mysql”目錄下查詢,在此DIRMySQL安裝目錄的路徑(一般是“/usr/local/mysql”)。你可以拷貝“my-example.cnf”到你的主目錄(重新命名拷貝為“.my.cnf”)來試驗。

為了告訴一個MySQL程式不讀任何選項檔案,在命令列上指定--no-defaults作為第一個選項。這必須是第一個選項,否則它將無效!如果你想檢查使用哪個選項,你可以給出--print-defaults選項作為第一個選項。

如果你想要強制使用一個特定配置檔案,你可以使用選項--defaults-file=full-path-to-default-file。如果你這樣做,只有指定的檔案將被讀取。

開發者注意:選項檔案的處理簡單地通過處理所有在任何命令列前引數的匹配選項來實現(即,在適當的組裡的選項),這對使用多次指定的一個選項的最後例項的程式工作的很好。如果你有這樣一個處理多重指定選項但不讀選項檔案的舊程式, 你只需要增加2行給與它那種能力。檢查任何標準的MySQL客戶的原始碼看怎樣做。