最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解MySQL在Docker中的部署與數(shù)據(jù)持久化指南

 更新時間:2026年02月10日 08:22:48   作者:展菲  
這篇文章主要為大家詳細介紹了在Docker中運行MySQL時確保數(shù)據(jù)持久化的關(guān)鍵方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

前言

在 Docker 或 Docker Compose 中跑 MySQL 時,若未做數(shù)據(jù)持久化,容器刪除后數(shù)據(jù)會丟失。正確做法是把數(shù)據(jù)目錄掛載到宿主機或命名卷,并合理設(shè)置 root 密碼、字符集、以及可選的自建庫和用戶。本文只講 MySQL 在 Docker 中的核心配置與持久化方式,不貼完整可運行 Demo。

單容器運行 MySQL

docker run -d \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=your_root_password \
  -e MYSQL_DATABASE=appdb \
  -e MYSQL_USER=app \
  -e MYSQL_PASSWORD=your_app_password \
  -p 3306:3306 \
  -v mysql_data:/var/lib/mysql \
  mysql:8

要點:

  • MYSQL_ROOT_PASSWORD:必填,root 密碼。
  • MYSQL_DATABASE:容器首次啟動時創(chuàng)建的數(shù)據(jù)庫名。
  • MYSQL_USER / MYSQL_PASSWORD:可選,創(chuàng)建普通用戶及密碼;該用戶默認對 MYSQL_DATABASE 有權(quán)限。
  • -v mysql_data:/var/lib/mysql:把數(shù)據(jù)目錄掛載到命名卷 mysql_data,容器刪除后卷仍在,下次用同一卷可保留數(shù)據(jù)。
  • -p 3306:3306:僅本機或內(nèi)網(wǎng)訪問時可去掉 -p,避免 3306 對公網(wǎng)暴露。

Docker Compose 中的 MySQL

services:
  mysql:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: appdb
      MYSQL_USER: app
      MYSQL_PASSWORD: ${MYSQL_APP_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"   # 僅本機訪問時可改為 "127.0.0.1:3306:3306" 或不暴露
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  mysql_data:

其他服務(wù)通過服務(wù)名 mysql 連接,主機名為 mysql,端口 3306。敏感信息用 .env 或環(huán)境變量傳入。

數(shù)據(jù)持久化方式

  • 命名卷(推薦)mysql_data 由 Docker 管理,路徑在宿主機某目錄下,備份時可 docker run --rm -v mysql_data:/data -v $(pwd):/backup alpine tar czf /backup/mysql_backup.tar.gz -C /data . 等方式導出。
  • 綁定目錄-v /host/path/mysql:/var/lib/mysql,數(shù)據(jù)直接在宿主機目錄,便于直接拷貝或用宿主機工具備份;需保證目錄權(quán)限允許容器內(nèi) mysql 用戶寫入(通常 UID 999 或 1000,視鏡像而定)。

首次啟動若掛載的目錄或卷已有數(shù)據(jù),會直接使用;若為空,MySQL 會初始化。不要用同一數(shù)據(jù)目錄同時起多個 MySQL 容器,會導致數(shù)據(jù)損壞。

字符集與時區(qū)(可選)

若需統(tǒng)一字符集和時區(qū),可在 docker run 或 compose 中加參數(shù):

environment:
  MYSQL_ROOT_PASSWORD: xxx
  MYSQL_CHARSET: utf8mb4
command: ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]

或使用自定義 my.cnf 掛載進容器。時區(qū)可在應(yīng)用連接串中設(shè)置 ?connectionTimeZone=Asia/Shanghai,或在 MySQL 內(nèi)設(shè)置 time_zone

健康檢查

Compose 中已用 mysqladmin ping 做健康檢查,便于 depends_on: condition: service_healthy 等待 MySQL 就緒后再啟動應(yīng)用。單容器運行時也可加 --health-cmd(語法以 Docker 版本為準)。

小結(jié)

  • MySQL 在 Docker 中必須設(shè)置 root 密碼,并通過 -v 或 volumes 做數(shù)據(jù)持久化(命名卷或綁定目錄)。
  • Compose 中可為應(yīng)用創(chuàng)建 MYSQL_DATABASE 和 MYSQL_USER,其他服務(wù)用服務(wù)名 mysql 連接。
  • 生產(chǎn)環(huán)境不要將 3306 對 0.0.0.0 開放,僅本機或內(nèi)網(wǎng)訪問即可;備份時針對數(shù)據(jù)卷或綁定目錄做定期備份。

按上述方式即可在 Docker 中穩(wěn)定運行 MySQL 并保留數(shù)據(jù)。

到此這篇關(guān)于一文詳解MySQL在Docker中的部署與數(shù)據(jù)持久化指南的文章就介紹到這了,更多相關(guān)Docker部署MySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL判別InnoDB表是獨立表空間還是共享表空間的方法詳解

    MySQL判別InnoDB表是獨立表空間還是共享表空間的方法詳解

    這篇文章主要給大家介紹了關(guān)于MySQL判別InnoDB表是獨立表空間還是共享表空間的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-09-09
  • mysql分區(qū)表的增刪改查的實現(xiàn)示例

    mysql分區(qū)表的增刪改查的實現(xiàn)示例

    增刪查改在數(shù)據(jù)庫中是很常見的操作,本文主要介紹了mysql分區(qū)表的增刪改查的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • MySQL 表新增字段時報丟失連接錯誤

    MySQL 表新增字段時報丟失連接錯誤

    MySQL在新增字段時遇到"Lost connection to MySQL server during query"錯誤,可能由于網(wǎng)絡(luò)問題、查詢超時或內(nèi)存不足等原因,下面就來詳細的介紹一下該問題的解決,感興趣的可以了解一下
    2026-01-01
  • MySQL數(shù)據(jù)庫壓縮版本安裝與配置詳細教程

    MySQL數(shù)據(jù)庫壓縮版本安裝與配置詳細教程

    今天教各位小伙伴怎么安裝及配置Mysql數(shù)據(jù)庫,文中有非常詳細的圖文解說及代碼示例,對剛?cè)腴Tmysql的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • MySQL臨時表滿了/臨時表空間耗盡的解決方法

    MySQL臨時表滿了/臨時表空間耗盡的解決方法

    當你收到“臨時表滿了”的警報時,通常意味著 MySQL 在處理查詢時創(chuàng)建的臨時表空間已經(jīng)耗盡,本文主要介紹了MySQL臨時表滿了/臨時表空間耗盡的解決方法,感興趣的可以了解一下
    2024-08-08
  • MySQL中日期比較時遇到的編碼問題解決辦法

    MySQL中日期比較時遇到的編碼問題解決辦法

    這篇文章主要介紹了MySQL中日期比較時遇到的字符集問題解決辦法,本文遇到的問題是date_format函數(shù)和timediff函數(shù)之間比較時,編碼問題導致出錯,本文使用convert()函數(shù)解決了這個問題,需要的朋友可以參考下
    2014-07-07
  • mysql使用SQLyog導入csv數(shù)據(jù)不成功的解決方法

    mysql使用SQLyog導入csv數(shù)據(jù)不成功的解決方法

    給mysql導入數(shù)據(jù),選中某個表選擇導入--導入使用本地csv數(shù)據(jù)即可,單有的時候不知道什么問題導入不成功
    2014-07-07
  • 解決Linux安裝mysql報錯:失敗的軟件包是:mysql-community-libs-8.0.37-1.el7.x86_64?GPG

    解決Linux安裝mysql報錯:失敗的軟件包是:mysql-community-libs-8.0.37-1.el7.x

    mysql是一款常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),常常被用于各類web應(yīng)用中,這篇文章主要給大家介紹了關(guān)于如何解決Linux安裝mysql報錯:失敗的軟件包是:mysql-community-libs-8.0.37-1.el7.x86_64?GPG的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • C++連接使用MySQL的方法

    C++連接使用MySQL的方法

    這篇文章主要為大家詳細介紹了C++連接使用MySQL的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • MySQL內(nèi)核探秘之主鍵與唯一鍵的深度解析以及設(shè)計哲學

    MySQL內(nèi)核探秘之主鍵與唯一鍵的深度解析以及設(shè)計哲學

    主鍵和唯一鍵都是用來保證MySQL數(shù)據(jù)表中數(shù)據(jù)完整性的約束,但它們在本質(zhì)和使用上存在一些關(guān)鍵區(qū)別,這篇文章主要介紹了MySQL內(nèi)核探秘之主鍵與唯一鍵的深度解析以及設(shè)計哲學的相關(guān)資料,需要的朋友可以參考下
    2026-04-04

最新評論

朝阳县| 那坡县| 姚安县| 雷州市| 邢台市| 紫云| 金坛市| 永安市| 江山市| 杨浦区| 永吉县| 九龙城区| 北票市| 广元市| 云浮市| 将乐县| 平武县| 河北省| 桂平市| 黄浦区| 晋城| 奎屯市| 通山县| 太谷县| 峡江县| 淮滨县| 永胜县| 扬中市| 且末县| 陆良县| 泊头市| 文登市| 祁阳县| 察隅县| 尖扎县| 太保市| 额敏县| 林州市| 老河口市| 开阳县| 名山县|