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

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

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

前言

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

單容器運(yùn)行 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

要點(diǎn):

  • MYSQL_ROOT_PASSWORD:必填,root 密碼。
  • MYSQL_DATABASE:容器首次啟動(dòng)時(shí)創(chuàng)建的數(shù)據(jù)庫(kù)名。
  • MYSQL_USER / MYSQL_PASSWORD:可選,創(chuàng)建普通用戶及密碼;該用戶默認(rèn)對(duì) MYSQL_DATABASE 有權(quán)限。
  • -v mysql_data:/var/lib/mysql:把數(shù)據(jù)目錄掛載到命名卷 mysql_data,容器刪除后卷仍在,下次用同一卷可保留數(shù)據(jù)。
  • -p 3306:3306:僅本機(jī)或內(nèi)網(wǎng)訪問(wèn)時(shí)可去掉 -p,避免 3306 對(duì)公網(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"   # 僅本機(jī)訪問(wèn)時(shí)可改為 "127.0.0.1:3306:3306" 或不暴露
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  mysql_data:

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

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

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

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

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

若需統(tǒng)一字符集和時(shí)區(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 掛載進(jìn)容器。時(shí)區(qū)可在應(yīng)用連接串中設(shè)置 ?connectionTimeZone=Asia/Shanghai,或在 MySQL 內(nèi)設(shè)置 time_zone。

健康檢查

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

小結(jié)

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

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

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

相關(guān)文章

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

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

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

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

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

    MySQL 表新增字段時(shí)報(bào)丟失連接錯(cuò)誤

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

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

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

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

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

    MySQL中日期比較時(shí)遇到的編碼問(wèn)題解決辦法

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

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

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

    解決Linux安裝mysql報(bào)錯(cuò):失敗的軟件包是:mysql-community-libs-8.0.37-1.el7.x

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

    C++連接使用MySQL的方法

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

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

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

最新評(píng)論

礼泉县| 涟源市| 新蔡县| 平原县| 横峰县| 浦北县| 和龙市| 大新县| 湖北省| 南丰县| 黔西县| 库尔勒市| 祁连县| 宁武县| 得荣县| 富宁县| 十堰市| 西峡县| 蒲江县| 曲阳县| 绵阳市| 安新县| 台南市| 南陵县| 睢宁县| 城固县| 东明县| 沈阳市| 望奎县| 襄樊市| 石泉县| 中宁县| 柯坪县| 平凉市| 贵港市| 灌阳县| 巴楚县| 大港区| 新郑市| 修水县| 通山县|