文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  密碼與記錄

8.1.2.3 密碼與記錄

密碼可以純文字的形式寫在 SQL 陳述式中,例如 CREATE USERGRANTSET PASSWORD。如果 MySQL 伺服器按原樣記錄這些陳述式,則任何有權存取日誌的人都可以看到其中的密碼。

陳述式記錄會避免以下陳述式以純文字形式寫入密碼

CREATE USER ... IDENTIFIED BY ...
ALTER USER ... IDENTIFIED BY ...
SET PASSWORD ...
START REPLICA ... PASSWORD = ...
CREATE SERVER ... OPTIONS(... PASSWORD ...)
ALTER SERVER ... OPTIONS(... PASSWORD ...)

這些陳述式中的密碼會被改寫,使其不會以文字形式出現在寫入一般查詢日誌、慢查詢日誌和二進位日誌的陳述式文字中。改寫不適用於其他陳述式。特別是,對於引用文字密碼的 mysql.user 系統表格的 INSERTUPDATE 陳述式會按原樣記錄,因此您應避免使用此類陳述式。(無論如何,都不建議直接修改授權表格。)

對於一般查詢日誌,可以使用 --log-raw 選項啟動伺服器來抑制密碼改寫。基於安全考量,不建議在生產環境中使用此選項。為了進行診斷,查看伺服器接收的確切陳述式文字可能很有用。

預設情況下,稽核日誌外掛程式產生的稽核日誌檔案內容未加密,並且可能包含敏感資訊,例如 SQL 陳述式的文字。基於安全考量,稽核日誌檔案應寫入只有 MySQL 伺服器和具有查看日誌合理原因的使用者才能存取的目錄中。請參閱章節 8.4.5.3,「MySQL 企業稽核安全性考量」

如果安裝了查詢改寫外掛程式,則伺服器接收的陳述式可能會被改寫(請參閱查詢改寫外掛程式)。在這種情況下,--log-raw 選項會以下列方式影響陳述式記錄

  • 沒有 --log-raw,伺服器會記錄查詢改寫外掛程式傳回的陳述式。這可能與接收到的陳述式不同。

  • --log-raw,伺服器會記錄接收到的原始陳述式。

密碼改寫的含義是無法剖析的陳述式(例如,由於語法錯誤)不會寫入一般查詢日誌,因為無法確定它們是否不包含密碼。需要記錄所有陳述式(包括有錯誤的陳述式)的使用案例應使用 --log-raw 選項,請注意,這也會繞過密碼改寫。

密碼改寫僅在預期使用純文字密碼時發生。對於語法預期密碼雜湊值的陳述式,不會發生改寫。如果為此類語法錯誤地提供了純文字密碼,則該密碼會按給定的方式記錄,而不進行改寫。

為了保護日誌檔案免於未經授權的存取,請將它們放置在一個限制伺服器和資料庫管理員存取權的目錄中。如果伺服器將日誌寫入 mysql 資料庫中的資料表,請僅授予資料庫管理員對這些資料表的存取權。

複本會在它們的連線中繼資料儲存庫中儲存複寫來源伺服器的密碼,預設情況下,這是一個名為 slave_master_infomysql 資料庫中的資料表。現在已不建議使用資料目錄中的檔案作為連線中繼資料儲存庫,但仍有可能使用(請參閱第 19.2.4 節,「中繼日誌和複寫中繼資料儲存庫」)。請確保只有資料庫管理員可以存取連線中繼資料儲存庫。除了將密碼儲存在連線中繼資料儲存庫中之外,另一種替代方法是使用 START REPLICASTART GROUP_REPLICATION 陳述式來指定連線到來源的認證。

使用受限存取模式來保護包含密碼的日誌表或日誌檔的資料庫備份。