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

Ubuntu下Docker部署MySQL數(shù)據(jù)持久化實戰(zhàn)

 更新時間:2026年07月14日 09:24:46   作者:Moshow鄭鍇  
本文介紹了在Ubuntu系統(tǒng)下通過Docker部署MySQL并實現(xiàn)數(shù)據(jù)持久化的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、問題引入:為什么需要數(shù)據(jù)持久化?

在用 Docker 跑 MySQL 時,很多新手會遇到一個棘手問題:容器重啟或刪除后,所有數(shù)據(jù)庫數(shù)據(jù)全沒了。

這是因為 MySQL 容器默認把數(shù)據(jù)存儲在容器內部的 /var/lib/mysql 目錄。而容器本身是“無狀態(tài)”的——刪除容器后,其中的所有數(shù)據(jù)也隨之消失。如果在部署時沒有做特殊配置,每次啟動容器都得重新建庫建表,數(shù)據(jù)無法延續(xù)。

解決方案也很直接:把 MySQL 的數(shù)據(jù)存儲目錄“遷”到宿主機(即 Ubuntu 系統(tǒng))的某個目錄下,通過 Docker 掛載的方式讓容器讀取外部數(shù)據(jù)。這樣,無論容器怎么折騰,數(shù)據(jù)都安安穩(wěn)穩(wěn)地留在宿主機上。本文會從零開始,詳細介紹如何在 Ubuntu 下用 Docker 部署 MySQL,并實現(xiàn)數(shù)據(jù)持久化。

前置準備:本文假設你的 Ubuntu 系統(tǒng)已經(jīng)安裝了 Docker。如果尚未安裝,可參考以下命令快速安裝:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl start docker && systemctl enable docker
docker -v   # 輸出版本號即成功

二、核心概念:兩種數(shù)據(jù)持久化方案

Docker 提供兩種主要的數(shù)據(jù)持久化方式:

綁定掛載(Bind Mount) —— 將宿主機的某個目錄“映射”到容器內的指定路徑。數(shù)據(jù)直接存放在你指定的宿主機目錄中,一目了然,便于管理和查看。下文主要采用這種方式。

命名卷(Named Volume) —— 由 Docker 管理的數(shù)據(jù)存儲卷,自動處理權限和存儲路徑,支持卷備份和遷移,適合正式生產環(huán)境。

兩者都能實現(xiàn)持久化,綁定掛載更直觀,下文將以此為基礎展開。

三、實戰(zhàn):在 Ubuntu 上部署持久化的 MySQL 容器

3.1 創(chuàng)建數(shù)據(jù)存儲目錄

在宿主機上創(chuàng)建一個目錄來存放 MySQL 數(shù)據(jù)(你可以根據(jù)需要自定義路徑):

sudo mkdir -p /data/mysql/{data,conf,logs}

這個命令會創(chuàng)建三個子目錄:

  • data → 存放 MySQL 實際的數(shù)據(jù)文件
  • conf → 存放自定義配置文件(可選)
  • logs → 存放日志文件

3.2 設置目錄權限(關鍵避坑點)

這是最容易踩坑的地方。MySQL 容器默認以 mysql 用戶(UID 和 GID 均為 999)運行,如果宿主機目錄的權限不匹配,MySQL 將無法寫入數(shù)據(jù),容器啟動時會報 Permission denied 錯誤。(優(yōu)選)

# 將目錄所有權交給 MySQL 容器使用的用戶(UID 999) 
sudo chown -R 999:999 /data/mysql

如果只是想快速測試,也可以臨時賦予 777 權限:

sudo chmod -R 777 /data/mysql

避坑提示忘記設置權限是導致 MySQL 容器啟動失敗的最常見原因之一。如果容器啟動后很快就退出了,用 docker logs <容器名> 查看日志,如果看到類似 Can't create/write to file '/var/lib/mysql/...' 的錯誤,十有八九是權限問題。

3.3 拉取 MySQL 鏡像

建議指定具體版本號,避免使用 latest 標簽導致意外的版本升級問題:

docker pull mysql:9.7.0

也可以到https://hub.docker.com/_/mysql 檢查mysql版本,右側可以選擇版本并獲得pull命令

3.4 啟動 MySQL 容器(綁定掛載方式)

docker run -d \
  --name mysql-persistent \
  --restart always \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root123 \
  -e TZ=Asia/Shanghai \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/conf:/etc/mysql/conf.d \
  -v /data/mysql/logs:/var/log/mysql \
  mysql:9.7.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci

【各參數(shù)說明】 :

  • -d:后臺運行
  • --name:給容器起個名字,方便管理
  • --restart always:容器退出時自動重啟,保證服務高可用
  • -p 3306:3306:端口映射,宿主機 3306 映射到容器 3306
  • -e MYSQL_ROOT_PASSWORD:設置 root 密碼(需包含大小寫+數(shù)字+特殊字符)
  • -e TZ=Asia/Shanghai:設置時區(qū)
  • -v:綁定掛載,格式為 宿主機路徑:容器內路徑
  • --character-set-server=utf8mb4:字符集,支持 emoji
  • --collation-server=utf8mb4_unicode_ci:排序規(guī)則

3.5 驗證結果

moshow@moshow-ubuntu:~/Downloads$ docker pull mysql:9.7.0
9.7.0: Pulling from library/mysql
9c6d3f438d99: Download complete 
b3e52f10da63: Download complete 
1dced004aaec: Pull complete 
8e3f19ed5e67: Pull complete 
69edacfaea72: Pull complete 
4f23ccd26206: Pull complete 
802b6dd0c6bd: Pull complete 
35300b480a58: Pull complete 
8ec50bfa3b7e: Pull complete 
5491a2a13e1b: Pull complete 
f74943462a4f: Pull complete 
e80b372994e5: Pull complete 
Digest: sha256:c11782aa2a96624c1efc121768641d96954faa136d6aa82751b032d8c426ffbc
Status: Downloaded newer image for mysql:9.7.0
docker.io/library/mysql:9.7.0
moshow@moshow-ubuntu:~/Downloads$ sudo mkdir -p /data/mysql/{data,conf,logs}
[sudo: authenticate] 密碼:          
moshow@moshow-ubuntu:~/Downloads$ sudo chown -R 999:999 /data/mysql
moshow@moshow-ubuntu:~/Downloads$ docker run -d \
  --name mysql-persistent \
  --restart always \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root123 \
  -e TZ=Asia/Shanghai \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/conf:/etc/mysql/conf.d \
  -v /data/mysql/logs:/var/log/mysql \
  mysql:9.7.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci
b8124dc936007b7b185bc999ee7d5949d412a23cd784cea8c5a8ca764d4ce8c7
moshow@moshow-ubuntu:~/Downloads$ docker images
                                                                                                           i Info →   U  In Use
IMAGE                ID             DISK USAGE   CONTENT SIZE   EXTRA
hello-world:latest   96498ffd522e       25.9kB         9.49kB    U   
mysql:9.7.0          c11782aa2a96        1.3GB          290MB    U   

四?一鍵安裝DBeaver

4.1 安裝dbeaver

moshow@moshow-ubuntu:~/Downloads$ sudo snap install dbeaver-ce --classic
[sudo: authenticate] 密碼:          
dbeaver-ce 26.1.0.202605311718 (來自 DBeaver (dbeaver-corp)) installed

4.2 建立連接

4.3?? Public Key Retrieval is not allowed錯誤快速修復,允許客戶端獲取公鑰 (推薦測試環(huán)境)

在不同客戶端中的設置方法:

4DBeaver / DataGrip等通用數(shù)據(jù)庫工具:找到連接設置,進入“驅動屬性”(Driver properties)頁面,修改allowPublicKeyRetrieval屬性(如果不存在請手動添加),并將值設為true。

MySQL CLI命令行客戶端:在連接命令中加入--get-server-public-key參數(shù),例如:

mysql -u your_username -p --get-server-public-key

Spring Boot (application.properties):在數(shù)據(jù)源URL中加入該參數(shù)。

spring.datasource.url=jdbc:mysql://localhost:3306/你的數(shù)據(jù)庫?useSSL=false&allowPublicKeyRetrieval=true

?? 安全提醒
此方法僅適用于本地開發(fā)或內網(wǎng)測試等受信任的網(wǎng)絡環(huán)境。因為它允許在不驗證服務器身份的情況下獲取公鑰,理論上存在被中間人攻擊竊取密碼的風險。對于生產環(huán)境,請務必參考解決方案三。

4.4 測試連接

到此這篇關于Ubuntu下Docker部署MySQL數(shù)據(jù)持久化實戰(zhàn)的文章就介紹到這了,更多相關Docker部署MySQL數(shù)據(jù)持久化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 阿里云服務器部署?Docker?Swarm集群

    阿里云服務器部署?Docker?Swarm集群

    這篇文章主要介紹了阿里云服務器部署?Docker?Swarm集群,Docker Swarm 的作用就是用來管理Docker集群的平臺,本文給大家介紹了Docker Swarm的基本概念和Docker Swarm 和 k8s的區(qū)別,需要的朋友可以參考下
    2022-07-07
  • Docker容器部署前端Vue服務(小白教程)

    Docker容器部署前端Vue服務(小白教程)

    本文主要介紹了Docker容器部署前端Vue服務,文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 關于nacos-docker單機版詳解

    關于nacos-docker單機版詳解

    本文詳解Nacos Docker單機版部署,涵蓋運行容器、開放8848端口及訪問測試,分享個人經(jīng)驗,供讀者參考并支持腳本之家
    2025-08-08
  • 淺談docker --privileged=true參數(shù)作用

    淺談docker --privileged=true參數(shù)作用

    這篇文章主要介紹了淺談docker --privileged=true參數(shù)作用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Docker Machine深入學習

    Docker Machine深入學習

    Docker與Docker Machine 的區(qū)別?又如當我們執(zhí)行docker-machine create命令時,Docker Machine都做了些什么?這篇文章都會告訴大家,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Docker安裝MySQL及授權遠程訪問的詳細教程

    Docker安裝MySQL及授權遠程訪問的詳細教程

    Docker是一種流行的容器化平臺,可以簡化應用程序的部署和管理,下面這篇文章主要給大家介紹了關于Docker安裝MySQL及授權遠程訪問的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • CentOS7 PostgreSQL安裝、配置、使用詳解

    CentOS7 PostgreSQL安裝、配置、使用詳解

    這篇文章主要介紹了CentOS7 PostgreSQL安裝、配置、使用詳解的相關資料,需要的朋友可以參考下
    2016-11-11
  • Docker實現(xiàn)雙容器部署的方法步驟

    Docker實現(xiàn)雙容器部署的方法步驟

    本文介紹了Docker和DockerCompose實現(xiàn)雙容器部署,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • Docker網(wǎng)絡沖突排查與解決方案的完整指南

    Docker網(wǎng)絡沖突排查與解決方案的完整指南

    在微服務和容器化部署的時代,Docker已經(jīng)成為開發(fā)者和運維人員的日常工具,本文將帶你深入了解Docker網(wǎng)絡沖突的原因、排查方法和解決方案,并提供多個實際案例,希望對大家有所幫助
    2026-04-04
  • Docker 設置代理的三種方法(2025年06月03日親測可用)

    Docker 設置代理的三種方法(2025年06月03日親測可用)

    在Docker中設置代理是非常常見的需求,本文將介紹三種配置Docker使用代理的常見方法,包括通過配置鏡像加速器、通過配置HTTP/HTTPS代理及通過配置代理,感興趣的可以了解一下
    2025-09-09

最新評論

高雄县| 武宣县| 黎川县| 通渭县| 惠安县| 房产| 什邡市| 读书| 确山县| 嘉善县| 青田县| 屏南县| 濉溪县| 怀来县| 南澳县| 廊坊市| 炉霍县| 洛扎县| 万载县| 江门市| 平湖市| 六枝特区| 偏关县| 福州市| 洪雅县| 博兴县| 股票| 南投市| 靖远县| 岳阳市| 个旧市| 剑河县| 晋中市| 德江县| 黎川县| 莱州市| 巫山县| 广宁县| 岗巴县| 图们市| 修文县|