全新安裝 MySQL 後預設存在三個系統資料庫,理解其用途對安全管理、權限控制、工具配置至關重要。
-- 列出所有資料表大小
SELECT TABLE_SCHEMA, TABLE_NAME,
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) AS Size_MB
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys')
ORDER BY Size_MB DESC;
-- 檢查欄位定義
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_KEY, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='users';
config.inc.php 加入 $cfg['Servers'][$i]['hide_db'] = 'information_schema';CREATE USER、GRANT、SET PASSWORD 等 SQL 語句,確保權限快取同步刷新(FLUSH PRIVILEGES)。mysql_upgrade 自動調整。DROP DATABASE test; 生產環境建議移除,減少攻擊面。dev_test 資料庫並限制權限。| 資料庫 | 風險 | 對策 |
|---|---|---|
| INFORMATION_SCHEMA | 資訊洩露(表結構、版本) | 工具端隱藏;最小權限帳號無法查看敏感表 |
| mysql | 權限竄改、密碼雜湊洩露 | 僅 DBA 可存取;啟用 SSL;審計登入嘗試 |
| test | 匿名使用者建表、佔用資源 | 安裝後立即刪除;mysql_secure_installation 自動處理 |
掌握三大系統庫特性,是 MySQL DBA 入門必修課,也是安全基線檢查的起點。