您在 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 選項」。
只有在 MySQL Shell 以互動模式啟動時(透過一般啟動或使用 --interactive
選項啟動),才會進行 SQL 語句的系統日誌。如果啟動時使用 --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);'