當您啟動 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}]
類型 布林值 預設值 OFF
此選項會控制是否可以載入僅具有主要函數
xxx
符號的可載入函數。預設情況下,此選項為關閉,且只會載入至少有一個輔助符號的可載入函數;這可以防止嘗試從共享物件檔案中載入函數,而不是那些包含合法函數的檔案。請參閱可載入函數安全注意事項。 -
命令列格式 --ansi
使用標準 (ANSI) SQL 語法,而不是 MySQL 語法。若要更精確地控制伺服器 SQL 模式,請改用
--sql-mode
選項。請參閱第 1.7 節「MySQL 標準一致性」和第 7.1.11 節「伺服器 SQL 模式」。 --basedir=
、dir_name
-b
dir_name
MySQL 安裝目錄的路徑。此選項會設定
basedir
系統變數。伺服器執行檔會在啟動時判斷自己的完整路徑名稱,並使用其所在目錄的父目錄作為預設
basedir
值。這反過來讓伺服器在搜尋伺服器相關資訊(例如包含錯誤訊息的share
目錄)時,能夠使用該basedir
。--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
會優先於--log-error
。 -
命令列格式 --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}]
類型 布林值 預設值 OFF
此選項會導致伺服器以傳統的 fork 式常駐程式執行,使其能夠與使用 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 Internals: Test Synchronization。
-
命令列格式 --default-time-zone=name
類型 字串 設定預設伺服器時區。此選項會設定全域
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}]
類型 布林值 預設值 OFF
啟用外部鎖定(系統鎖定),預設為停用。如果您在
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}]
類型 布林值 預設值 OFF
為
SIGINT
安裝一個中斷處理程式(需要使用^C
來停止 mysqld 以設定中斷點),並停用堆疊追蹤和核心檔案處理。請參閱第 7.9.1.4 節「在 gdb 下除錯 mysqld」。在 Windows 上,此選項也會抑制用於實作
RESTART
語句的分叉:分叉可讓一個處理程序充當另一個處理程序(充當伺服器)的監視器。但是,分叉會使確定要附加除錯的伺服器處理程序變得更加困難,因此使用--gdb
啟動伺服器會抑制分叉。對於使用此選項啟動的伺服器,RESTART
只會結束而不會重新啟動。在非除錯設定中,可以使用
--no-monitor
來抑制分叉監視器處理程序。 --initialize
、-I
命令列格式 --initialize[={OFF|ON}]
類型 布林值 預設值 OFF
此選項用於初始化 MySQL 安裝,方法是建立資料目錄並在
mysql
系統綱要中填入資料表。如需更多資訊,請參閱第 2.9.1 節「初始化資料目錄」。此選項會限制或與 MySQL 伺服器的許多其他啟動選項不相容。這裡會記錄一些最常見的這類問題
我們強烈建議,在使用
--initialize
初始化資料目錄時,除了--datadir
、用於設定目錄位置的其他選項(例如--basedir
)以及可能需要的--user
之外,請勿指定其他選項。可以在完成初始化並關閉 mysqld 後,在啟動時指定執行 MySQL 伺服器的選項。當使用--initialize-insecure
而不是--initialize
時,也適用此規則。當伺服器使用
--initialize
啟動時,某些功能不可用,這會限制init_file
系統變數所指定之任何檔案中允許的語句。如需更多資訊,請參閱該變數的說明。此外,disabled_storage_engines
系統變數無效。與
--initialize
一起使用時,會忽略--ndbcluster
選項。--initialize
與--bootstrap
和--daemonize
互斥。
前述清單中的項目也適用於使用
--initialize-insecure
選項初始化伺服器時。-
命令列格式 --initialize-insecure[={OFF|ON}]
類型 布林值 預設值 OFF
此選項用於初始化 MySQL 安裝,方法是建立資料目錄並在
mysql
系統綱要中填入資料表。此選項隱含--initialize
,並且適用相同的限制;如需更多資訊,請參閱該選項的說明和第 2.9.1 節「初始化資料目錄」。警告此選項會建立一個沒有密碼的 MySQL
root
使用者,這是不安全的。因此,除非手動設定此密碼,否則請勿在生產環境中使用它。請參閱「初始化後 root 密碼指派」,以了解如何執行此操作。 --innodb-
xxx
設定
InnoDB
儲存引擎的選項。InnoDB
選項列於第 17.14 節「InnoDB 啟動選項和系統變數」。-
命令列格式 --install [service_name]
特定於平台的 Windows (僅限 Windows)將伺服器安裝為在 Windows 啟動期間自動啟動的 Windows 服務。如果未提供
service_name
值,則預設服務名稱為MySQL
。如需更多資訊,請參閱第 2.3.3.8 節「以 Windows 服務方式啟動 MySQL」。注意如果伺服器使用
--defaults-file
和--install
選項啟動,則--install
必須是第一個。 --install-manual [
service_name
]命令列格式 --install-manual [service_name]
特定於平台的 Windows (僅限 Windows)將伺服器安裝為必須手動啟動的 Windows 服務。它不會在 Windows 啟動期間自動啟動。如果未提供
service_name
值,則預設服務名稱為MySQL
。如需更多資訊,請參閱第 2.3.3.8 節「以 Windows 服務方式啟動 MySQL」。注意如果伺服器使用
--defaults-file
和--install-manual
選項啟動,則--install-manual
必須是第一個。-
命令列格式 --large-pages[={OFF|ON}]
系統變數 large_pages
範圍 全域 動態 否 SET_VAR
提示適用否 特定於平台的 Linux 類型 布林值 預設值 OFF
某些硬體/作業系統架構支援大於預設值(通常為 4KB)的記憶體頁面。此支援的實際實作取決於基礎硬體和作業系統。執行大量記憶體存取的應用程式可能會因減少轉譯後備緩衝區 (TLB) 未命中而透過使用大型頁面獲得效能改進。
MySQL 支援 Linux 大型頁面支援實作(在 Linux 中稱為 HugeTLB)。請參閱第 10.12.3.3 節「啟用大型頁面支援」。關於 Solaris 對大型頁面的支援,請參閱
--super-large-pages
選項的說明。--large-pages
預設為停用。 -
命令列格式 --lc-messages=name
系統變數 lc_messages
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 en_US
用於錯誤訊息的地區設定。預設值為
en_US
。伺服器會將引數轉換為語言名稱,並將其與--lc-messages-dir
的值結合,以產生錯誤訊息檔案的位置。請參閱第 12.12 節「設定錯誤訊息語言」。 -
命令列格式 --lc-messages-dir=dir_name
系統變數 lc_messages_dir
範圍 全域 動態 否 SET_VAR
提示適用否 類型 目錄名稱 錯誤訊息所在的目錄。伺服器會將此值與
--lc-messages
的值結合,以產生錯誤訊息檔案的位置。請參閱第 12.12 節「設定錯誤訊息語言」。 -
命令列格式 --local-service
(僅限 Windows)服務名稱後的
--local-service
選項會使伺服器使用具有有限系統權限的LocalService
Windows 帳戶執行。如果在服務名稱之後同時提供--defaults-file
和--local-service
,則它們的順序可以任意。請參閱第 2.3.3.8 節「以 Windows 服務方式啟動 MySQL」。 -
將預設錯誤記錄目的地設定為指定的檔案。這會影響將自己的輸出目的地基於預設目的地的記錄接收器。請參閱第 7.4.2 節「錯誤記錄檔」。
如果選項未指定檔案名稱,在 Unix 和類 Unix 系統上,預設的錯誤日誌目的地是資料目錄中名為
的檔案。Windows 上的預設目的地相同,除非指定了主機名稱
.err--pid-file
選項。在這種情況下,檔案名稱是 PID 檔案基本名稱,並在資料目錄中附加.err
的後綴。如果選項指定檔案名稱,預設目的地是該檔案(如果名稱沒有後綴,則會附加
.err
後綴),該檔案位於資料目錄下,除非給定絕對路徑名稱以指定不同的位置。如果無法將錯誤日誌輸出重新導向至錯誤日誌檔案,則會發生錯誤,並且啟動失敗。
在 Windows 上,如果同時給定
--console
和--log-error
,則--console
優先。在這種情況下,預設的錯誤日誌目的地是主控台,而不是檔案。 -
命令列格式 --log-isam[=檔案名稱]
類型 檔案名稱 將所有
MyISAM
變更記錄到此檔案中(僅在偵錯MyISAM
時使用)。 -
伺服器會重寫寫入一般查詢日誌、慢速查詢日誌和二進位日誌中某些語句的密碼,使其不會以純文字形式逐字出現。透過以
--log-raw
選項啟動伺服器,可以抑制一般查詢日誌的密碼重寫。此選項可能對診斷目的有用,可以查看伺服器接收到的語句的確切文字,但基於安全考量,不建議在生產環境中使用。如果安裝了查詢重寫外掛程式,
--log-raw
選項會如下影響語句記錄:如需更多資訊,請參閱 第 8.1.2.3 節,「密碼與記錄」。
-
命令列格式 --log-short-format[={OFF|ON}]
類型 布林值 預設值 OFF
如果已啟用,則將較少資訊記錄到慢速查詢日誌中。
-
命令列格式 --log-tc=檔案名稱
類型 檔案名稱 預設值 tc.log
記憶體對應的交易協調器日誌檔案名稱(適用於二進位日誌停用時,影響多個儲存引擎的 XA 交易)。預設名稱為
tc.log
。如果未以完整路徑名稱給定,則該檔案會在資料目錄下建立。此選項未使用。 -
命令列格式 --log-tc-size=#
類型 整數 預設值 6 * 頁面大小
最小值 6 * 頁面大小
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
記憶體對應的交易協調器日誌的大小(以位元組為單位)。預設值和最小值為頁面大小的 6 倍,且該值必須是頁面大小的倍數。
-
命令列格式 --memlock[={OFF|ON}]
類型 布林值 預設值 OFF
將 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
索引頁面的區塊大小。 -
命令列格式 --mysql-native-password={OFF|ON}
已棄用 是 類型 布林值 預設值 OFF
啟用
mysql_native_password
驗證外掛程式,該外掛程式在 MySQL 8.4 中預設為停用。如需更多資訊,請參閱 第 8.4.1.1 節,「原生可插拔驗證」。
不讀取任何選項檔案。如果由於從選項檔案讀取不明選項而導致程式啟動失敗,可以使用
--no-defaults
來防止讀取它們。如果使用此選項,它必須是命令列上的第一個選項。如需有關此選項和其他選項檔案選項的其他資訊,請參閱 第 6.2.2.3 節「影響選項檔案處理的命令列選項」。
-
命令列格式 --no-monitor[={OFF|ON}]
特定於平台的 Windows 類型 布林值 預設值 OFF
(僅限 Windows)。此選項會抑制用於實作
RESTART
陳述式的 fork 操作:fork 操作使一個處理序充當另一個處理序的監視器,而另一個處理序充當伺服器。對於以此選項啟動的伺服器,RESTART
只是結束,而不會重新啟動。 --performance-schema-xxx
設定效能架構選項。如需詳細資訊,請參閱 第 29.14 節,「效能架構命令選項」。
-
命令列格式 --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
的輸出提供有關已載入外掛程式的資訊。更詳細的資訊可以在資訊架構PLUGINS
表格中找到。請參閱 第 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
的輸出提供有關已載入外掛程式的資訊。更詳細的資訊可以在資訊架構PLUGINS
表格中找到。請參閱 第 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}]
已棄用 是 類型 布林值 預設值 OFF
如果啟用此選項,使用者無法使用
GRANT
陳述式建立新的 MySQL 使用者,除非該使用者在mysql.user
系統資料表或該資料表中的任何欄位具有INSERT
權限。如果您希望使用者能夠建立具有該使用者有權授予的權限的新使用者,您應該授予該使用者以下權限GRANT INSERT(user) ON mysql.user TO 'user_name'@'host_name';
這確保使用者無法直接變更任何權限欄位,而必須使用
GRANT
陳述式來授予其他使用者權限。 -
命令列格式 --skip-grant-tables[={OFF|ON}]
類型 布林值 預設值 OFF
此選項會影響伺服器啟動順序
--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
提示適用否 類型 布林值 預設值 OFF
此選項會設定
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 類型 布林值 預設值 OFF
MySQL 中大型頁面的標準使用方式會嘗試使用支援的最大大小,最高可達 4MB。在 Solaris 下,「超大型頁面」功能可啟用高達 256MB 的頁面。此功能適用於最新的 SPARC 平台。可以使用
--super-large-pages
或--skip-super-large-pages
選項來啟用或停用此功能。 --symbolic-links
,--skip-symbolic-links
命令列格式 --symbolic-links[={OFF|ON}]
已棄用 是 類型 布林值 預設值 OFF
啟用或停用符號連結支援。在 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}]
類型 布林值 預設值 OFF
SYSDATE()
預設會傳回它執行的時間,而不是它所在陳述式開始執行的時間。這與NOW()
的行為不同。此選項會使SYSDATE()
成為NOW()
的同義詞。有關二進位日誌記錄和複製的含義,請參閱 第 14.7 節「日期和時間函數」中SYSDATE()
的描述,以及 第 7.1.8 節「伺服器系統變數」中SET TIMESTAMP
的描述。 --tc-heuristic-recover={COMMIT|ROLLBACK}
命令列格式 --tc-heuristic-recover=name
類型 列舉 預設值 OFF
有效值 OFF
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
提示適用否 類型 布林值 預設值 OFF
設定預設交易存取模式。預設情況下,唯讀模式為停用,因此模式為讀/寫。
若要在執行階段設定預設交易存取模式,請使用
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
結構描述中的資料字典表格。如果實際資料字典版本低於目前的預期版本,伺服器會升級資料字典。如果無法或被阻止執行此操作,伺服器將無法執行。Performance Schema 和
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
伺服器會升級資料字典、Performance Schema 和
INFORMATION_SCHEMA
(如有必要)(步驟 1)。請注意,在使用此選項進行升級後,無法啟動群組複製,因為複製內部依賴的系統表格未更新,並且在其他領域也可能出現功能減少的情況。FORCE
伺服器會升級資料字典、Performance Schema 和
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
中的選項會在命令列選項之前處理,因此建議您將--user
選項放在/etc/my.cnf
中,並指定一個非root
的值。/etc/my.cnf
中的選項會在任何其他--user
選項之前找到,這可確保伺服器以非root
的使用者身分執行,並且在找到任何其他--user
選項時產生警告。-
命令列格式 --validate-config[={OFF|ON}]
類型 布林值 預設值 OFF
驗證伺服器啟動設定。如果沒有找到錯誤,伺服器會以結束代碼 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
顯示版本資訊並結束。