您在 MySQL Shell 的 SQL 模式中發出的 SQL 語句,可以傳送到作業系統的系統日誌功能。在 Unix 上,這是 syslog
;在 Windows 上,則是 Windows 事件日誌。記錄訊息的顯示位置取決於系統。在 Linux 上,目的地通常是 /var/log/messages
檔案。
當您啟用 SQL 語句的系統日誌記錄時,以下項目會寫入系統日誌功能
您在 MySQL Shell 的 SQL 模式中以互動方式發出的 SQL 語句。
當您處於 MySQL Shell 的 JavaScript 或 Python 模式時,透過在
\sql
命令後立即輸入而執行的單一 SQL 語句。您在 MySQL Shell 的 SQL 模式中以互動方式發出的
\source
命令實例。
以下項目會被排除,且不會寫入系統日誌功能
您使用
\source
命令執行的指令檔內容。只有\source
命令本身會寫入系統日誌功能。MySQL Shell 在 AdminAPI 作業過程中自行執行的 SQL 語句。您可以將這些記錄到 MySQL Shell 應用程式日誌檔案中,如第 12.4 節,「MySQL Shell SQL 日誌記錄」中所述。
根據
history.sql.ignorePattern
MySQL Shell 設定選項或--histignore
命令列選項(僅為目前會話設定history.sql.ignorePattern
的值)指定的,會從 MySQL Shell 程式碼歷程記錄中排除的 SQL 語句。
若要將您在 MySQL Shell 的 SQL 模式中發出的 SQL 語句傳送到作業系統的系統日誌功能,請選擇以下其中一個選項
在啟動 MySQL Shell 時使用
--syslog
命令列選項。使用 MySQL Shell
\option
命令設定history.sql.syslog
MySQL Shell 設定選項。如需使用此命令的說明,請參閱第 13.4 節,「設定 MySQL Shell 選項」。使用
shell.options
物件設定history.sql.syslog
MySQL Shell 設定選項。如需使用此設定介面的說明,請參閱第 13.4 節,「設定 MySQL Shell 選項」。
SQL 語句的系統日誌記錄只會在 MySQL Shell 以互動模式啟動時發生,因此無論是正常啟動還是使用 --interactive
選項啟動都會觸發。如果啟動時使用 --execute
或 --file
選項以批次模式執行 mysqlsh
來處理命令或檔案,則不會發生。
SQL 語句的日誌訊息格式為一系列以空格字元分隔的索引鍵值組。索引鍵值組如下所示
- SYSTEM_USER =
作業系統使用者的登入名稱,如果使用者名稱不明,則為
--
。- MYSQL_USER =
MySQL 使用者的名稱,如果使用者名稱不明,則為
--
。- CONNECTION_ID =
MySQL Shell 連接的識別碼。
- DB_SERVER =
伺服器的主機名稱,如果主機名稱不明,則為
--
。- DB =
預設資料庫,如果未選取任何資料庫,則為
--
。- QUERY =
記錄的 SQL 語句文字。
如果日誌訊息超過 1024 個位元組,則會截斷至 1024 個位元組。
以下是在 Linux 上使用 --syslog
產生之輸出的範例。此輸出格式化為易於閱讀;每個記錄的訊息實際上都佔一行。
Mar 1 17:35:33 myhost mysqlsh[33060]:
SYSTEM_USER=hanna_j MYSQL_USER=hanna
CONNECTION_ID=14 DB_SERVER=localhost DB='--'
QUERY='create table test.test (c int, my_row_id BIGINT AUTO_INCREMENT INVISIBLE PRIMARY KEY);'