Docker 安裝 MySQL & 資料庫匯出/匯入 & 匯入中文亂碼解決方法


Posted by MingLin1995 on 2024-02-22

安裝 MySQL

  1. 拉取 MySQL 映像檔 docker pull mysql
  2. 啟動容器 docker run --name 自訂容器名稱 -e MYSQL_ROOT_PASSWORD=要設定的密碼 -d mysql
    • 預設用戶名為 root
  3. 確認是否啟動 docker ps
  4. 進入到 MySQL docker exec -it 自訂容器名稱 mysql -uroot -p
    • 預設用戶名為 root
  5. 就可以使用 SQL 指令操作 (Ctrl+Z 退出)

匯出 Databases

  • 先確認 MySQL 語法是否有衝突,例如:create datbase或是drop database,要記得註解掉或是刪除,因為匯入時,會自動執行。
  1. 使用 cd 指令到要匯出的資料夾位置
  2. docker exec -it 容器名稱 mysqldump -u root -p 要匯出的資料庫名稱 > 要匯出的檔名.sql
    • 預設用戶名為 root
  3. 輸入密碼後就可以產生匯出檔
  4. 查看匯出檔,將第一行的文字內容 Enter password: 刪除,避免匯入時產生錯誤

匯入 Databases

  1. 使用 cd 指令到要匯入的資料夾位置
  2. 文件複製到根目錄 docker cp 要匯出的檔名.sql 容器名稱:/
  3. 進入容器 docker exec -it 容器名稱 bash
  4. 匯入資料庫 mysql -u root -p --default-character-set=utf8 要匯出的資料庫名稱 < 要匯出的檔名.sql
  5. 進入到 MySQL mysql -u root -p

如果匯入的中文是亂碼就要看這邊

  • 先檢查.sql檔案是不是中文,是的話通常就是這個原因
  1. 進入到 MySQL docker exec -it 自訂容器名稱 mysql -uroot -p
  2. 確認是否為 utf8mb4 編碼 SHOW VARIABLES LIKE 'character_set%';
  3. 進入容器 docker exec -it 容器名稱 bash
  4. 手動建立文件

     echo "[client]" > /etc/mysql/my.cnf
     echo "default-character-set = utf8mb4" >> /etc/mysql/my.cnf
    
     echo "[mysql]" >> /etc/mysql/my.cnf
     echo "default-character-set = utf8mb4" >> /etc/mysql/my.cnf
    
     echo "[mysqld]" >> /etc/mysql/my.cnf
     echo "character-set-server = utf8mb4" >> /etc/mysql/my.cnf
     echo "collation-server = utf8mb4_unicode_ci" >> /etc/mysql/my.cnf
    
  5. 離開 exit
  6. 重啟 docker restart 容器名稱
  7. 複製到配置目錄 docker cp my.cnf 容器名稱:/etc/mysql/my.cnf
  8. 重新啟動 Docker 再次重新匯入

#docker #MySQL #匯出資料庫 #匯入資料庫 #資料庫中文顯示亂碼







Related Posts

Command Line

Command Line

位元運算與邏輯運算與電池燈泡的串聯並聯

位元運算與邏輯運算與電池燈泡的串聯並聯

【隨堂筆記】Python函式、類別與物件

【隨堂筆記】Python函式、類別與物件


Comments