首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Ghost 博客從 SQLite3 遷移至 MySQL 完整操作指南

     編輯:MySQL 資料庫相關知識

前置條件

  • 已安裝 MySQL 服務(Ubuntu 參考 apt install mysql-server)
  • 建立目標資料庫與用戶:
CREATE DATABASE ghost_prod CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'ghost_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON ghost_prod.* TO 'ghost_user'@'localhost';
FLUSH PRIVILEGES;

遷移四步走

1. 導出 SQLite 數據

  • 訪問 https://your-domain.com/ghost/debug
  • 點擊藍色 EXPORT 按鈕
  • 下載 GhostData.json(包含文章、用戶、設置等所有內容)

2. 修改 Ghost 配置指向 MySQL

編輯 config.production.json (或 config.js 舊版):

{
  "database": {
    "client": "mysql",
    "connection": {
      "host": "localhost",
      "user": "ghost_user",
      "password": "strong_password",
      "database": "ghost_prod",
      "charset": "utf8mb4"
    },
    "debug": false
  },
  "url": "https://your-domain.com",
  "server": { "port": 2368, "host": "127.0.0.1" }
}

關鍵:client 從 sqlite3 改為 mysql,補全連接參數。

3. 重啟 Ghost 創建表結構

# systemd 管理
sudo systemctl restart ghost_

# 或進程管理器
pm2 restart ghost

Ghost 啟動時自動執行遷移腳本,在 MySQL 中創建完整表結構(約 30+ 張表)。

4. 導入數據

  • 再次訪問 /ghost/debug 頁面
  • 此時無登錄賬號,需註冊一個臨時管理員賬號(任意郵箱/密碼)
  • 登錄後點擊 IMPORT,選擇步驟 1 下載的 GhostData.json
  • 等待導入完成,刷新前台頁面驗證內容完整

常見問題排查

現象原因解決
啟動報錯 ER_ACCESS_DENIED_ERROR用戶名/密碼/主機不匹配檢查 MySQL 用戶 host 欄位,確保 'localhost' 或 '127.0.0.1'
導入卡住/報錯JSON 文件過大超過 PHP/Node 上傳限制調整 client_max_body_size (Nginx) 或分批導入
表情符號顯示亂碼字符集非 utf8mb4資料庫/表/連接統一 utf8mb4,Ghost 2.0+ 默認支援
遷移後無法登錄密碼雜湊算法不兼容Ghost 使用 bcrypt,直接用新建賬號登錄,舊賬號需重置密碼

遷移後優化

  • 啟用 MySQL 查詢緩存 / 配置 innodb_buffer_pool_size (建議 50-70% 物理內存)
  • 配置 Nginx 反向代理 + SSL + 靜態資源緩存
  • 定期 mysqldump 備份,異地存儲
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved