一次好奇心驅使的 MariaDB 遷移,差點釀成資料庫無法訪問的災難。本文記錄從 Root 密碼為空、誤刪 user 表記錄、導致 mysql 資料庫隱匿,到最終透過 127.0.0.1 繞過本機認證機制恢復權限的完整排查過程。
mysqladmin password 設定 Root 密碼user 表有 5 條 Root 記錄(不同 Host),僅保留 Host='%',刪除其餘Host='localhost' 記錄mysql 系統資料庫消失,SHOW DATABASES 不見蹤影MariaDB 權限系統核心邏輯:
user 表中 Host='localhost' 代表 Unix Socket 本機連線Host='127.0.0.1' 代表 TCP/IP 回環連線mysql 資料庫skip-grant-tables 繞過權限檢查,但 MariaDB 行為與 MySQL 有差異,無效# 關鍵指令:強制使用 TCP/IP 而非 Unix Socket mysql -h 127.0.0.1 -u root -p
成功登入後,發現 mysql 資料庫重現,權限系統恢復正常。
-h 127.0.0.1 登入user 表現狀:SELECT User, Host FROM mysql.user WHERE User='root';
Host='localhost' 與 Host='::1' (IPv6) 記錄FLUSH PRIVILEGES; 生效「念念不忘,必有回響。」—— 葉問
mysqldump mysql user > user_backup.sqllocalhost vs 127.0.0.1 的本質差異