當您啟動 mysqld 伺服器時,您可以使用 第 6.2.2 節「指定程式選項」中所述的任何方法指定程式選項。最常見的方法是在選項檔案中或在命令列上提供選項。但是,在大多數情況下,最好確保伺服器每次執行時都使用相同的選項。確保這一點的最佳方法是將它們列在選項檔案中。請參閱第 6.2.2.2 節「使用選項檔案」。該節還說明了選項檔案格式和語法。
mysqld 從 [mysqld]
和 [server]
群組讀取選項。mysqld_safe 從 [mysqld]
、[server]
、[mysqld_safe]
和 [safe_mysqld]
群組讀取選項。mysql.server 從 [mysqld]
和 [mysql.server]
群組讀取選項。
mysqld 接受許多命令選項。如需簡短摘要,請執行此命令
mysqld --help
若要檢視完整清單,請使用此命令
mysqld --verbose --help
清單中的某些項目實際上是在伺服器啟動時可以設定的系統變數。可以使用 SHOW VARIABLES
陳述式在執行階段顯示這些項目。先前 mysqld 命令顯示的某些項目不會出現在 SHOW VARIABLES
輸出中;這是因為它們僅是選項,而不是系統變數。
以下清單顯示了一些最常見的伺服器選項。其他選項將在其他章節中說明
影響安全性的選項:請參閱第 8.1.4 節「與安全性相關的 mysqld 選項和變數」。
與 SSL 相關的選項:請參閱加密連線的命令選項。
二進位記錄檔控制選項:請參閱第 7.4.4 節「二進位記錄檔」。
與複寫相關的選項:請參閱第 19.1.6 節「複寫和二進位記錄選項和變數」。
用於載入可插拔儲存引擎等外掛程式的選項:請參閱第 7.6.1 節「安裝和解除安裝外掛程式」。
特定於特定儲存引擎的選項:請參閱第 17.14 節「InnoDB 啟動選項和系統變數」和第 18.2.1 節「MyISAM 啟動選項」。
有些選項會控制緩衝區或快取的大小。對於給定的緩衝區,伺服器可能需要配置內部資料結構。這些結構通常從配置給緩衝區的總記憶體中配置,並且所需空間量可能與平台相關。這表示當您將值指派給控制緩衝區大小的選項時,實際可用的空間量可能與指派的值不同。在某些情況下,空間量可能小於指派的值。伺服器也可能會向上調整值。例如,如果您為最小值為 1024 的選項指派值 0,則伺服器會將值設定為 1024。
除非另有說明,緩衝區大小、長度和堆疊大小的值均以位元組為單位。
有些選項會採用檔案名稱值。除非另有說明,如果該值是相對路徑名稱,則預設檔案位置為資料目錄。若要明確指定位置,請使用絕對路徑名稱。假設資料目錄是 /var/mysql/data
。如果將檔案值選項指定為相對路徑名稱,則該選項位於 /var/mysql/data
下。如果該值是絕對路徑名稱,則其位置由路徑名稱指定。
您也可以在伺服器啟動時,使用變數名稱作為選項來設定伺服器系統變數的值。若要將值指派給伺服器系統變數,請使用 --
形式的選項。例如,var_name
=value
--sort_buffer_size=384M
會將 sort_buffer_size
變數設定為 384MB 的值。
當您將值指派給變數時,MySQL 可能會自動修正值,使其保持在給定範圍內,或者如果只允許特定值,則將值調整為最接近允許的值。
若要限制系統變數在執行階段使用 SET
陳述式可設定的最大值,請在伺服器啟動時,使用 --maximum-
形式的選項來指定此最大值。var_name
=value
您可以使用 SET
陳述式,在執行階段變更大多數系統變數的值。請參閱 第 15.7.6.1 節「SET 變數指派的語法」。
第 7.1.8 節「伺服器系統變數」提供了所有變數的完整說明,以及在伺服器啟動和執行階段設定它們的其他資訊。如需變更系統變數的資訊,請參閱第 7.1.1 節「設定伺服器」。
--help
、-?
命令列格式 --help
-
命令列格式 --allow-suspicious-udfs[={OFF|ON}]
類型 布林值 預設值 關閉
此選項會控制是否可以載入僅具有主函式的
xxx
符號的可載入函式。預設情況下,此選項為關閉,並且只能載入至少具有一個輔助符號的可載入函式;這可以防止嘗試從包含合法函式以外的共用物件檔案載入函式。請參閱 可載入函式安全性注意事項。 -
命令列格式 --ansi
使用標準 (ANSI) SQL 語法,而非 MySQL 語法。若要更精確地控制伺服器 SQL 模式,請改用
--sql-mode
選項。請參閱第 1.7 節「MySQL 標準符合性」和 第 7.1.11 節「伺服器 SQL 模式」。 --basedir=
、dir_name
-b
dir_name
MySQL 安裝目錄的路徑。此選項會設定
basedir
系統變數。伺服器可執行檔會在啟動時判斷其本身的完整路徑名稱,並使用其所在目錄的父目錄作為預設的
basedir
值。這反過來會讓伺服器能夠在使用basedir
時,搜尋與伺服器相關的資訊,例如包含錯誤訊息的share
目錄。--chroot=
、dir_name
-r
dir_name
命令列格式 --chroot=dir_name
類型 目錄名稱 使用
chroot()
系統呼叫,在啟動期間將 mysqld 伺服器置於封閉式環境中。這是建議的安全性措施。使用此選項會稍微限制LOAD DATA
和SELECT ... INTO OUTFILE
。-
命令列格式 --console
平台特定 Windows (僅限 Windows。) 使預設錯誤記錄目的地為主控台。這會影響將其本身輸出目的地建立在預設目的地之上的記錄接收器。請參閱第 7.4.2 節「錯誤記錄」。如果使用此選項,mysqld 不會關閉主控台視窗。
如果同時指定
--console
和--log-error
,--console
會優先。 -
命令列格式 --core-file
使用此選項時,如果 mysqld 停止運作,則會寫入核心檔案;不需要 (或接受) 引數。核心檔案的名稱和位置與系統相關。在 Linux 上,名為
core.
的核心檔案會寫入程序的目前工作目錄,對於 mysqld 而言,這是資料目錄。pid
pid
代表伺服器程序的程序 ID。在 macOS 上,名為core.
的核心檔案會寫入pid
/cores
目錄。在 Solaris 上,請使用 coreadm 命令來指定寫入核心檔案的位置,以及如何命名它。對於某些系統,若要取得核心檔案,您還必須為 mysqld_safe 指定
--core-file-size
選項。請參閱第 6.3.2 節「mysqld_safe — MySQL 伺服器啟動指令碼」。在某些系統 (例如 Solaris) 上,如果您同時使用--user
選項,則不會取得核心檔案。可能會有其他限制或限制。例如,可能需要在啟動伺服器之前執行 ulimit -c unlimited。請參閱您的系統文件。可以使用
innodb_buffer_pool_in_core_file
變數來縮小支援它的作業系統上的核心檔案大小。如需詳細資訊,請參閱 第 17.8.3.7 節「從核心檔案排除或包含緩衝集區頁面」。 --daemonize
、-D
命令列格式 --daemonize[={OFF|ON}]
類型 布林值 預設值 關閉
此選項會使伺服器以傳統的分支守護程式方式執行,使其能夠與使用 systemd 進行程序控制的作業系統搭配運作。如需詳細資訊,請參閱 第 2.5.9 節「使用 systemd 管理 MySQL 伺服器」。
--daemonize
與--initialize
和--initialize-insecure
互斥。如果伺服器使用
--daemonize
選項啟動,且未連線到 tty 裝置,則在沒有明確記錄選項的情況下,會使用--log-error=""
的預設錯誤記錄選項,將錯誤輸出導向預設記錄檔。-D
是--daemonize
的同義詞。--datadir=
、dir_name
-h
dir_name
MySQL 伺服器資料目錄的路徑。此選項會設定
datadir
系統變數。請參閱該變數的說明。--debug[=
、debug_options
]-# [
debug_options
]命令列格式 --debug[=debug_options]
系統變數 debug
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 (Unix) d:t:i:o,/tmp/mysqld.trace
預設值 (Windows) d:t:i:O,\mysqld.trace
如果 MySQL 使用
-DWITH_DEBUG=1
CMake 選項進行配置,您可以使用此選項來取得 mysqld 正在執行的追蹤檔案。一個典型的debug_options
字串是d:t:o,
。在 Unix 上的預設值為file_name
d:t:i:o,/tmp/mysqld.trace
,在 Windows 上為d:t:i:O,\mysqld.trace
。使用
-DWITH_DEBUG=1
配置具有除錯支援的 MySQL,讓您在啟動伺服器時可以使用--debug="d,parser_debug"
選項。這會導致用於處理 SQL 陳述式的 Bison 剖析器將剖析器追蹤轉儲到伺服器的標準錯誤輸出。通常,此輸出會寫入錯誤日誌。此選項可以給定多次。以
+
或-
開頭的值會加入或減去先前的值。例如,--debug=T
--debug=+P
會將值設定為P:T
。更多資訊,請參閱第 7.9.4 節,「DBUG 套件」。
-
命令列格式 --debug-sync-timeout[=#]
類型 整數 控制是否啟用用於測試和除錯的 Debug Sync 功能。使用 Debug Sync 需要使用
-DWITH_DEBUG=ON
CMake 選項配置 MySQL (請參閱第 2.8.7 節,「MySQL 原始碼配置選項」);否則,此選項不可用。選項值是以秒為單位的逾時。預設值為 0,這會停用 Debug Sync。若要啟用它,請指定大於 0 的值;此值也會成為個別同步點的預設逾時。如果選項沒有給定值,則逾時會設定為 300 秒。如需 Debug Sync 功能以及如何使用同步點的說明,請參閱MySQL 內部:測試同步。
-
命令列格式 --default-time-zone=名稱
類型 字串 設定預設伺服器時區。此選項會設定全域
time_zone
系統變數。如果未給定此選項,預設時區會與系統時區相同 (由system_time_zone
系統變數的值給定)。system_time_zone
變數與time_zone
不同。雖然它們可能具有相同的值,但後者變數用於初始化每個連線用戶端的時區。請參閱第 7.1.15 節,「MySQL 伺服器時區支援」。 --defaults-extra-file=
file_name
在全域選項檔案之後,但在 (在 Unix 上) 用戶選項檔案之前,讀取此選項檔案。如果該檔案不存在或無法存取,則會發生錯誤。如果
file_name
不是絕對路徑名稱,則會相對於目前目錄進行解譯。如果使用,這必須是命令列上的第一個選項。有關此選項和其他選項檔案選項的更多資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
僅讀取給定的選項檔案。如果該檔案不存在或無法存取,則會發生錯誤。如果
file_name
不是絕對路徑名稱,則會相對於目前目錄進行解譯。例外狀況:即使使用
--defaults-file
,mysqld 也會讀取mysqld-auto.cnf
。注意如果使用,這必須是命令列上的第一個選項,除非伺服器使用
--defaults-file
和--install
(或--install-manual
) 選項啟動,則--install
(或--install-manual
) 必須是第一個。有關此選項和其他選項檔案選項的更多資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
不僅讀取常用的選項群組,還讀取具有常用名稱和
str
後綴的群組。例如,mysqld 通常會讀取[mysqld]
群組。如果此選項給定為--defaults-group-suffix=_other
,mysqld 也會讀取[mysqld_other]
群組。有關此選項和其他選項檔案選項的更多資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
--early-plugin-load=
plugin_list
命令列格式 --early-plugin-load=plugin_list
類型 字串 預設值 空字串
此選項會告知伺服器在載入強制性的內建外掛程式之前以及在儲存引擎初始化之前,要載入哪些外掛程式。僅支援使用
PLUGIN_OPT_ALLOW_EARLY
編譯的外掛程式的早期載入。如果給定多個--early-plugin-load
選項,則僅最後一個選項適用。選項值是以分號分隔的
plugin_library
和name
=
plugin_library
值清單。每個plugin_library
都是包含外掛程式碼的程式庫檔案名稱,而每個name
都是要載入的外掛程式名稱。如果外掛程式庫在沒有任何前導外掛程式名稱的情況下命名,伺服器會載入該程式庫中的所有外掛程式。使用前導外掛程式名稱,伺服器只會從程式庫中載入已命名的外掛程式。伺服器會在plugin_dir
系統變數命名的目錄中尋找外掛程式庫檔案。例如,如果名為
myplug1
和myplug2
的外掛程式包含在myplug1.so
和myplug2.so
外掛程式庫檔案中,請使用此選項來執行早期外掛程式載入mysqld --early-plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"
引號會將引數值括起來,因為否則某些命令解譯器會將分號 (
;
) 解譯為特殊字元。(例如,Unix Shell 會將其視為命令終止符)。每個命名的外掛程式只會在單次叫用 mysqld 時提早載入。重新啟動後,外掛程式不會提早載入,除非再次使用
--early-plugin-load
。如果使用
--initialize
或--initialize-insecure
啟動伺服器,則不會載入由--early-plugin-load
指定的外掛程式。如果伺服器使用
--help
執行,則會載入由--early-plugin-load
指定的外掛程式,但不會初始化。此行為可確保外掛程式選項顯示在說明訊息中。InnoDB
表空間加密依賴於 MySQL Keyring 進行加密金鑰管理,而且要使用的金鑰環外掛程式必須在儲存引擎初始化之前載入,以方便InnoDB
復原加密表格。例如,想要在啟動時載入keyring_okv
外掛程式的管理員應該將--early-plugin-load
與適當的選項值一起使用 (例如,在 Unix 和類 Unix 系統上使用keyring_okv.so
,或在 Windows 上使用keyring_okv.dll
)。有關
InnoDB
表空間加密的資訊,請參閱第 17.13 節,「InnoDB 靜態資料加密」。有關外掛程式載入的一般資訊,請參閱第 7.6.1 節,「安裝和解除安裝外掛程式」。注意對於 MySQL Keyring,僅當金鑰儲存區使用金鑰環外掛程式進行管理時,才會使用此選項。如果金鑰儲存區管理使用金鑰環元件而不是外掛程式,請使用資訊清單檔案指定元件載入;請參閱第 8.4.4.2 節,「金鑰環元件安裝」。
--exit-info[=
、flags
]-T [
flags
]命令列格式 --exit-info[=flags]
類型 整數 這是不同旗標的位元遮罩,您可以使用這些旗標來除錯 mysqld 伺服器。除非您確切知道它的作用,否則請勿使用此選項!
-
命令列格式 --external-locking[={OFF|ON}]
類型 布林值 預設值 關閉
啟用外部鎖定 (系統鎖定),預設為停用。如果您在
lockd
未完全運作的系統 (例如 Linux) 上使用此選項,mysqld 很容易死鎖。若要明確停用外部鎖定,請使用
--skip-external-locking
。外部鎖定只會影響
MyISAM
資料表的存取。如需更多資訊 (包括可以使用和無法使用的條件),請參閱第 10.11.5 節,「外部鎖定」。 -
在每個 SQL 語句執行後,將所有變更同步(刷新)至磁碟。通常,MySQL 只會在每個 SQL 語句執行後才將所有變更寫入磁碟,並讓作業系統處理與磁碟的同步。請參閱第 B.3.3.3 節,「如果 MySQL 持續崩潰該怎麼辦」。
注意如果指定了
--flush
,flush_time
的值就不重要了,且變更flush_time
對刷新行為沒有任何影響。 -
命令列格式 --gdb[={OFF|ON}]
類型 布林值 預設值 關閉
安裝
SIGINT
的中斷處理常式(需要使用^C
來停止 mysqld 以設定中斷點),並停用堆疊追蹤和核心檔案處理。請參閱第 7.9.1.4 節,「在 gdb 下除錯 mysqld」。在 Windows 上,此選項也會抑制用於實作
RESTART
語句的分叉:分叉讓一個程序可以作為另一個程序的監控器,而另一個程序則作為伺服器。然而,分叉使得確定要附加進行除錯的伺服器程序更加困難,因此使用--gdb
啟動伺服器會抑制分叉。對於使用此選項啟動的伺服器,RESTART
只會退出而不會重新啟動。在非除錯設定中,可以使用
--no-monitor
來抑制分叉監控程序。 --initialize
,-I
命令列格式 --initialize[={OFF|ON}]
類型 布林值 預設值 關閉
此選項用於初始化 MySQL 安裝,方法是建立資料目錄並在
mysql
系統綱要中填入資料表。如需詳細資訊,請參閱第 2.9.1 節,「初始化資料目錄」。此選項會限制 MySQL 伺服器許多其他啟動選項的效果,或與之不相容。以下列出一些最常見的這類問題
我們強烈建議,在使用
--initialize
初始化資料目錄時,除了--datadir
,其他用於設定目錄位置的選項(例如--basedir
),以及可能需要的--user
之外,不要指定其他選項。當初始化完成且 mysqld 已關閉時,可以指定用於執行 MySQL 伺服器的選項。當使用--initialize-insecure
而非--initialize
時,也適用此規定。當伺服器使用
--initialize
啟動時,某些功能會無法使用,這會限制init_file
系統變數所命名之任何檔案中允許的語句。如需更多資訊,請參閱該變數的說明。此外,disabled_storage_engines
系統變數沒有任何效果。當
--ndbcluster
選項與--initialize
一起使用時,會被忽略。--initialize
與--bootstrap
和--daemonize
互斥。
先前清單中的項目也適用於使用
--initialize-insecure
選項初始化伺服器時。-
命令列格式 --initialize-insecure[={OFF|ON}]
類型 布林值 預設值 關閉
此選項用於初始化 MySQL 安裝,方法是建立資料目錄並在
mysql
系統綱要中填入資料表。此選項表示--initialize
,且適用相同的限制;如需更多資訊,請參閱該選項的說明,以及第 2.9.1 節,「初始化資料目錄」。警告此選項會建立一個密碼為空的 MySQL
root
使用者,這是不安全的。因此,請勿在未手動設定此密碼的情況下在生產環境中使用它。有關如何執行此操作的資訊,請參閱初始化後的 root 密碼指派。 --innodb-
xxx
設定
InnoDB
儲存引擎的選項。InnoDB
選項列在第 17.14 節,「InnoDB 啟動選項和系統變數」中。-
命令列格式 --install [服務名稱]
平台特定 Windows (僅限 Windows)將伺服器安裝為 Windows 服務,該服務在 Windows 啟動期間自動啟動。如果未給定
service_name
值,則預設服務名稱為MySQL
。如需更多資訊,請參閱第 2.3.3.8 節,「將 MySQL 作為 Windows 服務啟動」。注意如果伺服器使用
--defaults-file
和--install
選項啟動,--install
必須是第一個。 --install-manual [
service_name
]命令列格式 --install-manual [服務名稱]
平台特定 Windows (僅限 Windows)將伺服器安裝為 Windows 服務,該服務必須手動啟動。它不會在 Windows 啟動期間自動啟動。如果未給定
service_name
值,則預設服務名稱為MySQL
。如需更多資訊,請參閱第 2.3.3.8 節,「將 MySQL 作為 Windows 服務啟動」。注意如果伺服器使用
--defaults-file
和--install-manual
選項啟動,--install-manual
必須是第一個。-
命令列格式 --large-pages[={OFF|ON}]
系統變數 large_pages
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Linux 類型 布林值 預設值 關閉
某些硬體/作業系統架構支援大於預設值(通常為 4KB)的記憶體頁面。此支援的實際實作取決於底層硬體和作業系統。執行大量記憶體存取的應用程式可能會因減少轉換後備緩衝區 (TLB) 未命中而透過使用大頁面獲得效能提升。
MySQL 支援 Linux 的大頁面支援實作(在 Linux 中稱為 HugeTLB)。請參閱第 10.12.3.3 節,「啟用大頁面支援」。如需 Solaris 大頁面支援,請參閱
--super-large-pages
選項的說明。--large-pages
預設為停用。 -
命令列格式 --lc-messages=名稱
系統變數 lc_messages
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 en_US
用於錯誤訊息的地區設定。預設值為
en_US
。伺服器會將引數轉換為語言名稱,並將其與--lc-messages-dir
的值結合,以產生錯誤訊息檔案的位置。請參閱第 12.12 節,「設定錯誤訊息語言」。 -
命令列格式 --lc-messages-dir=目錄名稱
系統變數 lc_messages_dir
範圍 全域 動態 否 SET_VAR
提示適用否 類型 目錄名稱 錯誤訊息所在的目錄。伺服器會將此值與
--lc-messages
的值一起使用,以產生錯誤訊息檔案的位置。請參閱第 12.12 節,「設定錯誤訊息語言」。 -
命令列格式 --local-service
(僅限 Windows)服務名稱之後的
--local-service
選項會導致伺服器使用具有有限系統權限的LocalService
Windows 帳戶執行。如果在服務名稱之後同時給定--defaults-file
和--local-service
,它們的順序可以任意。請參閱第 2.3.3.8 節,「將 MySQL 作為 Windows 服務啟動」。 -
將預設錯誤日誌目的地設定為指定的檔案。這會影響將其輸出目的地建立在預設目的地上的日誌接收器。請參閱第 7.4.2 節,「錯誤日誌」。
如果選項未指定檔案名稱,則在 Unix 和類 Unix 系統上的預設錯誤日誌目的地是資料目錄中名為
的檔案。除非指定了主機名稱
.err--pid-file
選項,否則 Windows 上的預設目的地也相同。在這種情況下,檔案名稱是資料目錄中具有.err
後綴的 PID 檔案基本名稱。如果選項指定檔案名稱,則預設目的地是該檔案(如果名稱沒有後綴,則會加上
.err
後綴),位於資料目錄下,除非給定絕對路徑名稱來指定不同的位置。如果錯誤日誌輸出無法重新導向至錯誤日誌檔案,則會發生錯誤且啟動失敗。
在 Windows 上,如果同時給定
--console
和--log-error
,則--console
的優先順序高於--log-error
。在這種情況下,預設錯誤日誌目的地是主控台,而不是檔案。 -
命令列格式 --log-isam[=檔案名稱]
類型 檔案名稱 將所有
MyISAM
變更記錄到此檔案(僅在除錯MyISAM
時使用)。 -
伺服器會重寫寫入一般查詢日誌、慢速查詢日誌和二進位日誌中某些陳述式的密碼,使其不會以明文形式逐字出現。若要抑制一般查詢日誌的密碼重寫,可以使用
--log-raw
選項啟動伺服器。此選項可能對診斷目的很有用,以查看伺服器接收到的陳述式確切文字,但基於安全性考量,不建議在生產環境中使用。如果安裝了查詢重寫外掛程式,則
--log-raw
選項會以下列方式影響陳述式記錄:如需更多資訊,請參閱第 8.1.2.3 節,「密碼與記錄」。
-
命令列格式 --log-short-format[={OFF|ON}]
類型 布林值 預設值 關閉
如果已啟用,則將較少資訊記錄到慢速查詢日誌。
-
命令列格式 --log-tc=檔案名稱
類型 檔案名稱 預設值 tc.log
記憶體對應交易協調器日誌檔的名稱(用於在停用二進位日誌時,影響多個儲存引擎的 XA 交易)。預設名稱為
tc.log
。如果未給定完整路徑名稱,則檔案會在資料目錄下建立。此選項未使用。 -
命令列格式 --log-tc-size=#
類型 整數 預設值 6 * 頁面大小
最小值 6 * 頁面大小
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
記憶體對應交易協調器日誌的大小(以位元組為單位)。預設值和最小值是頁面大小的 6 倍,而且值必須是頁面大小的倍數。
-
命令列格式 --memlock[={OFF|ON}]
類型 布林值 預設值 關閉
將 mysqld 程序鎖定在記憶體中。如果您的作業系統導致 mysqld 交換到磁碟,此選項可能會有所幫助。
--memlock
可在支援mlockall()
系統呼叫的系統上運作;這包括 Solaris、大多數使用 2.4 或更高版本核心的 Linux 發行版,以及其他 Unix 系統。在 Linux 系統上,您可以透過檢查系統mman.h
檔案中是否定義了mlockall()
,來判斷是否支援mlockall()
(以及此選項),如下所示:$> grep mlockall /usr/include/sys/mman.h
如果支援
mlockall()
,您應該會在先前命令的輸出中看到類似下列的內容:extern int mlockall (int __flags) __THROW;
重要事項使用此選項可能需要您以
root
身分執行伺服器,但基於安全性考量,這通常不是個好主意。請參閱第 8.1.5 節,「如何以一般使用者身分執行 MySQL」。在 Linux 和其他系統上,您可以透過變更
limits.conf
檔案來避免以root
身分執行伺服器的需求。請參閱第 10.12.3.3 節,「啟用大型頁面支援」中關於 memlock 限制的附註。您不得在不支援
mlockall()
系統呼叫的系統上使用此選項;如果您這樣做,mysqld 很可能會在您嘗試啟動時立即結束。 -
命令列格式 --myisam-block-size=#
類型 整數 預設值 1024
最小值 1024
最大值 16384
用於
MyISAM
索引頁面的區塊大小。 不讀取任何選項檔案。如果由於從選項檔案讀取未知選項而導致程式啟動失敗,則可以使用
--no-defaults
來防止讀取它們。如果使用此選項,則它必須是命令列上的第一個選項。有關此選項和其他選項檔案選項的更多資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
-
命令列格式 --no-monitor[={OFF|ON}]
平台特定 Windows 類型 布林值 預設值 關閉
(僅限 Windows)。此選項會抑制用於實作
RESTART
陳述式的分叉:分叉會讓一個程序充當另一個充當伺服器的程序的監視器。對於以此選項啟動的伺服器,RESTART
只會結束,而不會重新啟動。 --performance-schema-xxx
設定 Performance Schema 選項。如需詳細資訊,請參閱第 29.14 節,「Performance Schema 命令選項」。
-
命令列格式 --plugin-load=外掛程式清單
類型 字串 此選項會告知伺服器在啟動時載入指定的外掛程式。如果給定多個
--plugin-load
選項,則只會套用最後一個選項。可以使用--plugin-load-add
選項指定要載入的其他外掛程式。選項值是以分號分隔的
plugin_library
和name
=
plugin_library
值清單。每個plugin_library
都是包含外掛程式碼的程式庫檔案名稱,而每個name
都是要載入的外掛程式名稱。如果外掛程式庫在沒有任何前導外掛程式名稱的情況下命名,伺服器會載入該程式庫中的所有外掛程式。使用前導外掛程式名稱,伺服器只會從程式庫中載入已命名的外掛程式。伺服器會在plugin_dir
系統變數命名的目錄中尋找外掛程式庫檔案。例如,如果名為
myplug1
和myplug2
的外掛程式包含在myplug1.so
和myplug2.so
外掛程式庫檔案中,請使用此選項來執行早期外掛程式載入mysqld --plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"
引號會將引數值括起來,因為否則某些命令解譯器會將分號 (
;
) 解譯為特殊字元。(例如,Unix Shell 會將其視為命令終止符)。每個指定的外掛程式僅針對單次 mysqld 的叫用載入。重新啟動後,除非再次使用
--plugin-load
,否則不會載入外掛程式。這與INSTALL PLUGIN
不同,後者會將項目新增至mysql.plugins
資料表,以使外掛程式在每次伺服器正常啟動時載入。在正常啟動順序期間,伺服器會透過讀取
mysql.plugins
系統資料表來判斷要載入哪些外掛程式。如果伺服器以--skip-grant-tables
選項啟動,則不會載入mysql.plugins
資料表中註冊的外掛程式,且無法使用這些外掛程式。--plugin-load
可讓外掛程式即使在給定--skip-grant-tables
的情況下也能載入。--plugin-load
也可讓您載入無法在執行階段載入的外掛程式。此選項不會設定對應的系統變數。
SHOW PLUGINS
的輸出提供有關已載入外掛程式的資訊。更詳細的資訊可在 Information SchemaPLUGINS
資料表中找到。請參閱第 7.6.2 節,「取得伺服器外掛程式資訊」。如需外掛程式載入的其他資訊,請參閱第 7.6.1 節,「安裝和解除安裝外掛程式」。
-
命令列格式 --plugin-load-add=外掛程式清單
類型 字串 此選項補充了
--plugin-load
選項。--plugin-load-add
會將一個或多個外掛程式新增至在啟動時要載入的外掛程式集。引數格式與--plugin-load
的格式相同。--plugin-load-add
可用於避免將大型外掛程式集指定為單個冗長難以處理的--plugin-load
引數。可以在沒有
--plugin-load
的情況下給定--plugin-load-add
,但任何出現在--plugin-load
之前的--plugin-load-add
執行個體都無效,因為--plugin-load
會重設要載入的外掛程式集。換句話說,下列選項--plugin-load=x --plugin-load-add=y
與此選項等效
--plugin-load="x;y"
但下列選項
--plugin-load-add=y --plugin-load=x
與此選項等效
--plugin-load=x
此選項不會設定對應的系統變數。
SHOW PLUGINS
的輸出提供有關已載入外掛程式的資訊。更詳細的資訊可在 Information SchemaPLUGINS
資料表中找到。請參閱第 7.6.2 節,「取得伺服器外掛程式資訊」。如需外掛程式載入的其他資訊,請參閱第 7.6.1 節,「安裝和解除安裝外掛程式」。
指定與伺服器外掛程式相關的選項。例如,許多儲存引擎可以建置為外掛程式,對於這類引擎,可以使用
--plugin
前綴指定其選項。因此,可以將InnoDB
的--innodb-file-per-table
選項指定為--plugin-innodb-file-per-table
。對於可以啟用或停用的布林值選項,也支援
--skip
前綴和其他替代格式(請參閱第 6.2.2.4 節,「程式選項修飾詞」)。例如,--skip-plugin-innodb-file-per-table
會停用innodb-file-per-table
。使用
--plugin
前綴的原因是,如果外掛選項與內建伺服器選項的名稱發生衝突,這樣可以明確地指定外掛選項。例如,如果外掛的作者將外掛命名為 「sql」,並實作一個 「mode」 選項,則該選項名稱可能是--sql-mode
,這會與同名的內建選項發生衝突。在這種情況下,對衝突名稱的引用會解析為內建選項。為了避免歧義,使用者可以將外掛選項指定為--plugin-sql-mode
。建議對外掛選項使用--plugin
前綴,以避免任何歧義問題。--port=
、port_num
-P
port_num
用於監聽 TCP/IP 連接的連接埠號碼。在 Unix 和類 Unix 系統上,除非伺服器是由
root
作業系統使用者啟動,否則連接埠號碼必須為 1024 或更高。將此選項設定為 0 會使用預設值。-
命令列格式 --port-open-timeout=#
類型 整數 預設值 0
在某些系統上,當伺服器停止時,TCP/IP 連接埠可能不會立即可用。如果伺服器隨後快速重新啟動,它嘗試重新開啟連接埠可能會失敗。此選項表示如果伺服器無法開啟 TCP/IP 連接埠,應等待多少秒才能釋放。預設值是不等待。
列印程式名稱及其從選項檔案取得的所有選項。密碼值會被遮罩。如果使用此選項,則它必須是命令列上的第一個選項,但可以使用在
--defaults-file
或--defaults-extra-file
之後。有關此選項和其他選項檔案選項的更多資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
-
命令列格式 --remove [service_name]
平台特定 Windows (僅限 Windows) 移除 MySQL Windows 服務。如果未給定
service_name
值,則預設服務名稱為MySQL
。如需更多資訊,請參閱 第 2.3.3.8 節,「以 Windows 服務方式啟動 MySQL」。 -
命令列格式 --safe-user-create[={OFF|ON}]
已棄用 是 類型 布林值 預設值 關閉
如果啟用此選項,則除非使用者具有
mysql.user
系統資料表或該資料表中任何欄位的INSERT
權限,否則使用者無法使用GRANT
陳述式建立新的 MySQL 使用者。如果您希望使用者能夠建立具有該使用者有權授予的那些權限的新使用者,則應授予該使用者以下權限GRANT INSERT(user) ON mysql.user TO 'user_name'@'host_name';
這可確保使用者無法直接變更任何權限欄位,但必須使用
GRANT
陳述式將權限授予其他使用者。 -
命令列格式 --skip-grant-tables[={OFF|ON}]
類型 布林值 預設值 關閉
此選項會影響伺服器啟動順序
--skip-grant-tables
會導致伺服器不讀取mysql
系統架構中的授權資料表,因此啟動時完全不使用權限系統。這會讓任何可以存取伺服器的人員 不受限制地存取所有資料庫。由於使用
--skip-grant-tables
啟動伺服器會停用驗證檢查,因此伺服器也會在這種情況下透過啟用skip_networking
來停用遠端連線。若要讓使用
--skip-grant-tables
啟動的伺服器在執行階段載入授權資料表,請執行權限刷新作業,這可以透過以下方式完成在連線到伺服器後,發出 MySQL
FLUSH PRIVILEGES
陳述式。從命令列執行 mysqladmin flush-privileges 或 mysqladmin reload 命令。
權限刷新也可能會在啟動後執行的其他動作中隱含發生,因此導致伺服器開始使用授權資料表。例如,如果伺服器在啟動順序期間執行升級,則伺服器會刷新權限。
--skip-grant-tables
會停用失敗登入追蹤和臨時帳戶鎖定,因為這些功能取決於授權資料表。請參閱 第 8.2.15 節,「密碼管理」。--skip-grant-tables
會導致伺服器不載入在資料字典或mysql
系統架構中註冊的某些其他物件使用
CREATE EVENT
安裝並在events
資料字典資料表中註冊的排程事件。使用
INSTALL PLUGIN
安裝並在mysql.plugin
系統資料表中註冊的外掛。若要讓外掛即使在使用
--skip-grant-tables
時也能載入,請使用--plugin-load
或--plugin-load-add
選項。使用
CREATE FUNCTION
安裝並在mysql.func
系統資料表中註冊的可載入函式。
--skip-grant-tables
不會 抑制元件在啟動期間的載入。--skip-grant-tables
會導致disabled_storage_engines
系統變數無效。
-
命令列格式 --skip-new
已棄用 是 此選項會停用(過去被認為是)新的、可能不安全的行為。它會導致這些設定:
delay_key_write=OFF
、concurrent_insert=NEVER
、automatic_sp_privileges=OFF
。它還會導致將OPTIMIZE TABLE
對應到不支援OPTIMIZE TABLE
的儲存引擎的ALTER TABLE
。此選項已棄用,並可能會在未來版本中移除。
-
命令列格式 --skip-show-database
系統變數 skip_show_database
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 關閉
此選項會設定
skip_show_database
系統變數,此變數會控制誰可以被允許使用SHOW DATABASES
陳述式。請參閱 第 7.1.8 節,「伺服器系統變數」。 -
命令列格式 --skip-stack-trace
不要寫入堆疊追蹤。當您在偵錯工具下執行 mysqld 時,此選項很有用。在某些系統上,您還必須使用此選項才能取得核心檔案。請參閱 第 7.9 節,「偵錯 MySQL」。
-
命令列格式 --slow-start-timeout=#
類型 整數 預設值 15000
此選項會控制 Windows 服務控制管理員的服務啟動逾時。此值是服務控制管理員在啟動期間嘗試終止 Windows 服務之前等待的最大毫秒數。預設值為 15000 (15 秒)。如果 MySQL 服務啟動時間過長,您可能需要增加此值。值為 0 表示沒有逾時。
-
命令列格式 --socket={file_name|pipe_name}
系統變數 socket
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 (Windows) MySQL
預設值 (其他) /tmp/mysql.sock
在 Unix 上,此選項指定用於監聽本機連線的 Unix Socket 檔案。預設值為
/tmp/mysql.sock
。如果給定此選項,伺服器會在資料目錄中建立檔案,除非給定絕對路徑名稱以指定不同的目錄。在 Windows 上,此選項指定在使用具名管道監聽本機連線時要使用的管道名稱。預設值為MySQL
(不區分大小寫)。 --sql-mode=
value
[,value
[,value
...]]命令列格式 --sql-mode=name
系統變數 sql_mode
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 設定 預設值 ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
有效值 ALLOW_INVALID_DATES
ANSI_QUOTES
ERROR_FOR_DIVISION_BY_ZERO
HIGH_NOT_PRECEDENCE
IGNORE_SPACE
NO_AUTO_VALUE_ON_ZERO
NO_BACKSLASH_ESCAPES
NO_DIR_IN_CREATE
NO_ENGINE_SUBSTITUTION
NO_UNSIGNED_SUBTRACTION
NO_ZERO_DATE
NO_ZERO_IN_DATE
ONLY_FULL_GROUP_BY
PAD_CHAR_TO_FULL_LENGTH
PIPES_AS_CONCAT
REAL_AS_FLOAT
STRICT_ALL_TABLES
STRICT_TRANS_TABLES
TIME_TRUNCATE_FRACTIONAL
設定 SQL 模式。請參閱 第 7.1.11 節,「伺服器 SQL 模式」。
注意MySQL 安裝程式可能會在安裝過程中設定 SQL 模式。
如果 SQL 模式與預設值或您預期的不同,請檢查伺服器在啟動時讀取的選項檔案中是否有設定。
-
命令列格式 --standalone
平台特定 Windows 僅適用於 Windows;指示 MySQL 伺服器不要以服務形式執行。
-
命令列格式 --super-large-pages[={OFF|ON}]
平台特定 Solaris 類型 布林值 預設值 關閉
MySQL 中標準的大型頁面使用嘗試使用支援的最大大小,最高可達 4MB。在 Solaris 下,「超大型頁面」功能可啟用最高達 256MB 的頁面使用。此功能適用於最新的 SPARC 平台。可以使用
--super-large-pages
或--skip-super-large-pages
選項啟用或停用此功能。 --symbolic-links
,--skip-symbolic-links
命令列格式 --symbolic-links[={OFF|ON}]
已棄用 是 類型 布林值 預設值 關閉
啟用或停用符號連結支援。在 Unix 上,啟用符號連結表示您可以使用
CREATE TABLE
陳述式的INDEX DIRECTORY
或DATA DIRECTORY
選項,將MyISAM
索引檔案或資料檔案連結到另一個目錄。如果您刪除或重新命名資料表,其符號連結指向的檔案也會被刪除或重新命名。請參閱第 10.12.2.2 節,「在 Unix 上使用 MyISAM 資料表的符號連結」。注意符號連結支援,以及控制它的
--symbolic-links
選項已棄用;您應該預期它會在未來版本的 MySQL 中移除。此外,該選項預設為停用。相關的have_symlink
系統變數也已棄用;預期它會在未來版本的 MySQL 中移除。此選項在 Windows 上沒有意義。
-
命令列格式 --sysdate-is-now[={OFF|ON}]
類型 布林值 預設值 關閉
預設情況下,
SYSDATE()
會傳回其執行的時間,而不是其發生的陳述式開始執行的時間。這與NOW()
的行為不同。此選項會使SYSDATE()
成為NOW()
的同義詞。有關二進位記錄和複寫的含義,請參閱第 14.7 節,「日期和時間函數」中SYSDATE()
的說明,以及第 7.1.8 節,「伺服器系統變數」中SET TIMESTAMP
的說明。 --tc-heuristic-recover={COMMIT|ROLLBACK}
命令列格式 --tc-heuristic-recover=name
類型 列舉 預設值 關閉
有效值 關閉
COMMIT
ROLLBACK
在手動啟發式復原中使用的決定。
如果指定了
--tc-heuristic-recover
選項,則伺服器會退出,無論手動啟發式復原是否成功。在具有多個能夠進行兩階段提交的儲存引擎的系統上,
ROLLBACK
選項不安全,並會導致復原停止,並出現以下錯誤[ERROR] --tc-heuristic-recover rollback strategy is not safe on systems with more than one 2-phase-commit-capable storage engine. Aborting crash recovery.
-
命令列格式 --transaction-isolation=name
系統變數 transaction_isolation
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 REPEATABLE-READ
有效值 READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
設定預設的交易隔離等級。
level
值可以是READ-UNCOMMITTED
、READ-COMMITTED
、REPEATABLE-READ
或SERIALIZABLE
。請參閱第 15.3.7 節,「SET TRANSACTION 陳述式」。預設交易隔離等級也可以使用
SET TRANSACTION
陳述式或設定transaction_isolation
系統變數在執行時設定。 -
命令列格式 --transaction-read-only[={OFF|ON}]
系統變數 transaction_read_only
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 關閉
設定預設交易存取模式。預設情況下,唯讀模式為停用狀態,因此模式為讀取/寫入。
若要在執行時設定預設交易存取模式,請使用
SET TRANSACTION
陳述式或設定transaction_read_only
系統變數。請參閱第 15.3.7 節,「SET TRANSACTION 陳述式」。 --tmpdir=
,dir_name
-t
dir_name
用於建立暫存檔案的目錄路徑。如果您的預設
/tmp
目錄駐留在太小而無法容納暫存表格的分割區上,這可能會很有用。此選項接受以循環方式使用的多個路徑。路徑在 Unix 上應以冒號字元 (:
) 分隔,在 Windows 上應以分號字元 (;
) 分隔。--tmpdir
可以是非永久位置,例如基於記憶體檔案系統上的目錄或伺服器主機重新啟動時清除的目錄。如果 MySQL 伺服器充當複本,且您正在使用非永久位置來設定--tmpdir
,請考慮使用replica_load_tmpdir
系統變數為複本設定不同的暫存目錄。對於複本而言,用於複寫LOAD DATA
陳述式的暫存檔案會儲存在此目錄中,因此,在具有永久位置的情況下,它們可以在機器重新啟動後繼續存在,儘管如果已移除暫存檔案,複寫現在可以在重新啟動後繼續。有關暫存檔案儲存位置的詳細資訊,請參閱第 B.3.3.5 節,「MySQL 儲存暫存檔案的位置」。
-
命令列格式 --upgrade=value
類型 列舉 預設值 AUTO
有效值 AUTO
NONE
MINIMAL
FORCE
此選項控制伺服器是否以及如何在啟動時執行自動升級。自動升級包含兩個步驟
步驟 1:資料字典升級。
此步驟會升級
mysql
綱要中的資料字典表格。如果實際資料字典版本低於目前預期的版本,則伺服器會升級資料字典。如果無法升級,或被阻止升級,則伺服器無法執行。效能綱要和
INFORMATION_SCHEMA
。
步驟 2:伺服器升級。
此步驟包含所有其他升級工作。如果現有的安裝資料具有低於伺服器預期的 MySQL 版本,則必須升級
mysql
綱要中的系統表格(其餘的非資料字典表格)。sys
綱要。使用者綱要。
有關升級步驟 1 和 2 的詳細資訊,請參閱第 3.4 節,「MySQL 升級程序升級的內容」。
允許以下
--upgrade
選項值AUTO
伺服器會自動升級它發現過期的任何內容(步驟 1 和 2)。如果未明確指定
--upgrade
,這是預設動作。NONE
伺服器在啟動過程中不執行任何自動升級步驟(略過步驟 1 和 2)。由於此選項值會阻止資料字典升級,如果發現資料字典過期,伺服器會退出並顯示錯誤
[ERROR] [MY-013381] [Server] Server shutting down because upgrade is required, yet prohibited by the command line option '--upgrade=NONE'. [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
MINIMAL
伺服器會升級資料字典、效能綱要和
INFORMATION_SCHEMA
(如果需要)(步驟 1)。請注意,在以這個選項升級後,無法啟動群組複寫,因為複寫內部所依賴的系統表格沒有更新,而且在其他領域也可能出現功能降低的情況。FORCE
伺服器會升級資料字典、效能綱要和
INFORMATION_SCHEMA
(如果需要)(步驟 1)。此外,伺服器會強制升級所有其他內容(步驟 2)。使用此選項預期伺服器啟動時間會更長,因為伺服器會檢查所有綱要中的所有物件。如果伺服器認為步驟 2 的動作沒有必要,則
FORCE
可用於強制執行這些動作。例如,您可能認為某個系統表格遺失或已損壞,並想要強制修復。
下表總結了伺服器針對每個選項值採取的動作。
選項值 伺服器執行步驟 1 嗎? 伺服器執行步驟 2 嗎? AUTO
如有必要 如有必要 NONE
否 否 MINIMAL
如有必要 否 FORCE
如有必要 是 --user={
,user_name
|user_id
}-u {
user_name
|user_id
}命令列格式 --user=name
類型 字串 以具有名稱
user_name
或數值使用者 IDuser_id
的使用者身分執行 mysqld 伺服器。(此處的「使用者」是指系統登入帳戶,而不是授權表格中列出的 MySQL 使用者。)當以
root
身分啟動 mysqld 時,此選項為強制。伺服器會在啟動序列期間變更其使用者 ID,使其以該特定使用者身分執行,而不是以root
身分執行。請參閱第 8.1.1 節「安全指南」。為了避免使用者在
my.cnf
檔案中加入--user=root
選項(導致伺服器以root
身分執行)而可能造成的安全漏洞,mysqld 只會使用指定的第一個--user
選項,並且在有多個--user
選項時產生警告。/etc/my.cnf
和$MYSQL_HOME/my.cnf
中的選項會在命令列選項之前處理,因此建議您在/etc/my.cnf
中放置--user
選項,並指定root
以外的值。/etc/my.cnf
中的選項會在任何其他--user
選項之前找到,這可確保伺服器以root
以外的使用者身分執行,並且在找到任何其他--user
選項時產生警告。-
命令列格式 --validate-config[={OFF|ON}]
類型 布林值 預設值 關閉
驗證伺服器啟動設定。如果沒有發現錯誤,伺服器會以結束代碼 0 終止。如果發現錯誤,伺服器會顯示診斷訊息並以結束代碼 1 終止。根據
log_error_verbosity
值,也可能會顯示警告和資訊訊息,但不會立即產生驗證終止或結束代碼 1。如需更多資訊,請參閱第 7.1.3 節「伺服器設定驗證」。 --validate-user-plugins[={OFF|ON}]
命令列格式 --validate-user-plugins[={OFF|ON}]
類型 布林值 預設值 ON
如果啟用此選項(預設值),伺服器會檢查每個使用者帳戶,並在發現會使帳戶無法使用的情況時產生警告
該帳戶需要未載入的驗證外掛程式。
該帳戶需要
sha256_password
或caching_sha2_password
驗證外掛程式,但伺服器啟動時未啟用該外掛程式所需的 SSL 或 RSA。
啟用
--validate-user-plugins
會減慢伺服器初始化和FLUSH PRIVILEGES
的速度。如果您不需要額外的檢查,可以在啟動時停用此選項,以避免效能降低。將此選項與
--help
選項一起使用,以取得詳細說明。--version
,-V
顯示版本資訊並結束。