MySQL 將所有資料庫與表組織在單一資料目錄(datadir)下,直接對應檔案系統層級:
.frm(結構定義)、.MYD(資料)、.MYI(索引,MyISAM)或 .ibd(InnoDB 獨立表空間)。所有客戶端必須透過 mysqld 進程存取資料,不可直接操作檔案。優點:
例外情況(需謹慎):
mysqld —— 需檔案鎖定支援,否則日誌混亂、資料損毀。myisamchk/isamchk 維護表時,必須確保伺服器未開啟該表(或停止伺服器),否則索引損毀。CREATE DATABASE db_name ➜ mkdir DATADIR/db_name; chmod 700 DATADIR/db_name(僅擁有者可存取)。DROP DATABASE db_name ➜ 刪除目錄與所有表檔(保留非表檔與目錄本身)。SHOW DATABASES ➜ 列出資料目錄下的子目錄名,無需主表。CREATE TABLE 產生 tbl.frm、tbl.MYD、tbl.MYI(MyISAM),擁有者為 mysqld 使用者,權限 600。ALTER TABLE 重寫 .frm 並調整資料/索引檔。DROP TABLE 刪除三個檔案。SHOW TABLES 列出 .frm 基名。| 限制類型 | 說明 | ||
|---|---|---|---|
| 合法字元 | MySQL 允許英數字、_、$,但 OS 檔案系統可能禁止 $ 或其他字元,Shell 引用時需跳脫(\$db 或 '$db')。 | ||
| 長度上限 | MySQL 64 字元,但受限於 OS 檔名長度(舊 System V 僅 14 字元,表名實際 10 字元 + 擴展名)。 | ||
| 大小寫敏感度 | UNIX 區分大小寫(my_tbl ≠ MY_TBL),Windows 不區分。跨平台遷移時需注意。 |
| 檔案類型 | 預設名稱 | 內容 | 啟用方式 |
|---|---|---|---|
| PID 檔 | HOSTNAME.pid | 伺服器進程 ID | 啟動自動建立,關閉自動刪除 |
| 錯誤日誌 | HOSTNAME.err | 啟動/關閉事件、錯誤、stderr 輸出 | 透過 mysqld_safe 啟動才會產生 |
| 一般查詢日誌 | HOSTNAME.log | 連線/斷線、所有查詢文字 | --log |
| 更新日誌 | HOSTNAME.nnn | 修改資料/結構的查詢(可重放復原) | --log-update |
安全警示:日誌含明文密碼(如 GRANT ... IDENTIFIED BY 'pwd'),資料目錄權限必須 chmod 700 DATADIR,且確保 mysqld 以該擁有者身分執行。日誌檔名含點號(.),資料庫目錄名無點號,ls -l 首字元 -(檔案)vs d(目錄)易於區分。