10、Docker Compose 安裝 MySQL

🐳 使用 Docker Compose 安裝 MySQL(含配置詳解與常見問題)

標簽:#DockerCompose #MySQL #數據庫部署 #后端開發 #運維入門 #配置詳解
適合讀者:開發者、DevOps、新手運維人員


📌 一、前言

在日常開發與部署中,我們經常需要快速搭建一個獨立的 MySQL 實例。相比手動安裝,使用 Docker Compose 能以最小成本完成部署、啟動、關閉、遷移等一整套操作。


🧱 二、目錄結構

docker-mysql/
├── docker-compose.yml
└── my.cnf             # 可選:自定義配置文件

?? 三、docker-compose.yml 配置詳解

version: "3.9"services:mysql:image: mysql:8.0container_name: mysql8restart: alwaysports:- "3306:3306"environment:MYSQL_ROOT_PASSWORD: root123456       # ? root用戶密碼(必填)MYSQL_DATABASE: demo_db               # ? 自動創建數據庫MYSQL_USER: dev_user                  # ? 創建新用戶MYSQL_PASSWORD: dev_pass              # ? 用戶密碼volumes:- ./data:/var/lib/mysql               # ? 數據持久化路徑- ./my.cnf:/etc/mysql/conf.d/my.cnf   # ? 可選:自定義配置networks:- mysql_netnetworks:mysql_net:driver: bridge

🔍 參數詳解:

配置項含義
image使用官方的 mysql:8.0 鏡像
container_name容器名稱
restart: always容器異常退出后自動重啟
ports主機:容器 端口映射,默認 MySQL 為 3306
environment配置 MySQL 初始參數(環境變量)
volumes掛載數據和配置,確保持久化
networks自定義網絡,支持多服務聯通

🧾 四、my.cnf 自定義配置(可選)

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

將其保存為 my.cnf 文件后自動生效,常用于統一字符集、SQL嚴格模式等。


🚀 五、啟動與使用

1?? 啟動容器

docker compose up -d

-d 表示后臺運行

2?? 查看運行狀態

docker ps

3?? 登錄 MySQL

docker exec -it mysql8 mysql -uroot -p

輸入 root123456 進入

在這里插入圖片描述


🧪 六、連接測試(使用客戶端)

在 Navicat 或 DBeaver 中添加新連接:

  • 主機地址:虛擬機ip
  • 端口:3306
  • 用戶名:dev_user
  • 密碼:dev_pass
  • 數據庫:demo_db

在這里插入圖片描述


? 七、常見問題處理

問題解決方式
容器啟動報錯 Can't connect to local MySQL server檢查端口是否被占用,或數據目錄權限問題
Access denied for user檢查環境變量用戶名/密碼是否一致
字符集亂碼使用 my.cnf 配置為 utf8mb4
Docker 數據未持久化確認 ./data 已正確掛載

🛠 八、最佳實踐建議

  • ? 使用 volumes 綁定宿主機數據,避免數據丟失
  • ? 啟用 mysql.cnf 進行統一配置管理
  • ? 推薦使用非 root 用戶連接數據庫
  • ? 配合 phpMyAdmin 或其他服務通過 Compose 一鍵啟動集群

📦 九、擴展:一鍵添加 phpMyAdmin(可選)

  phpmyadmin:image: phpmyadmin/phpmyadminrestart: alwaysports:- "8080:80"environment:PMA_HOST: mysql8depends_on:- mysqlnetworks:- mysql_net

🔍 參數詳解:

配置項含義
phpmyadmin官方 phpMyAdmin 鏡像
ports: "8080:80"主機8080端口映射到容器80端口
PMA_HOST: mysql8phpMyAdmin 連接數據庫主機名,應該與 mysql 服務名一致
depends_on: mysql啟動順序控制,先啟動 MySQL
networks: mysql_net需要保證和mysql在同一網絡

啟動后訪問 http://虛擬機ip:8080 登錄可視化管理頁面。
輸入mysql的用戶名和密碼登錄:root/root123456

在這里插入圖片描述
在這里插入圖片描述


📚 十、結語

使用 Docker Compose 部署 MySQL 極大簡化了環境配置和版本控制,不論是本地開發、測試還是 CI/CD 環境搭建,都能快速、高效、可靠地完成數據庫部署任務。

👍 如果你覺得本文對你有幫助,歡迎 點贊 + 收藏 + 關注我,后續將持續更新更多 Docker、MySQL、SpringBoot 等技術實戰文章!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91569.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91569.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91569.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Dynamic A(D)算法深度剖析:動態環境下的路徑規劃革新

Dynamic A*(D*)算法深度剖析:動態環境下的路徑規劃革新 文章目錄 Dynamic A*(D*)算法深度剖析:動態環境下的路徑規劃革新 1. 引言:動態路徑規劃的核心挑戰與解決方案 1.1 動態環境的本質特征 1.2 D * 算法的誕生與核心價值 2. D * 算法核心原理深度解析 2.1 反向搜索機制…

前端框架Vue3(四)——組件通信及其他API

組件通信組件關系傳遞方式父傳子1. props2. v-model3. $refs4. 默認插槽、具名插槽子傳父1.props2.自定義事件3.v-model4.parent5.作用域插槽祖傳孫、孫傳祖1.$attrs2.provide、inject兄弟間、任意組件間1.mitt2.pinia【props】 概述:props是使用頻率最高的一種通信…

07【C++ 初階】類和對象(中篇) --- 類的默認成員函數

文章目錄前言類的6個默認成員函數1.構造函數1.1 構造函數特性1.1.1 函數名與類名相同1.1.2 無返回值1.1.3 對象實例化時編譯器自動調用對應的構造函數1.1.4 構造函數可以重載1.1.5 默認構造只能有一個1.1.6 默認構造的必要性1.2 構造函數的初始化列表2.析構函數2.1 析構函數特性…

第二次CISSP考試通過!

今天我終于臨時通過了 CISSP 考試!這第二次的精神壓力一點也不比第一次小。我在第 101 道題 時通過,還剩大約 30 分鐘。我當時真的以為自己又要像上次那樣時間不夠了。第一次考試的失敗經歷:第一次考試是我剛參加完為期 5 天的強化 Boot Camp…

USRP捕獲手機/路由器數據傳輸信號波形(上)

目錄: USRP捕獲手機/路由器數據傳輸信號波形(上) USRP捕獲手機/路由器數據傳輸信號波形(中) USRP捕獲手機/路由器數據傳輸信號波形(下) 一、前期準備 1.1 場景與系統 手機、路由器與天線的…

基于STM32F103的FM1702驅動程序

基于STM32F103微控制器與復旦微電子FM1702SL射頻讀卡芯片的驅動開發方案,整合了硬件配置、寄存器操作和通信協議實現:一、硬件連接設計 1. 管腳映射表FM1702SL引腳STM32F103引腳功能說明VDD3.3V電源輸入GNDGND地線SCKPA5(SPI1_SCK)SPI時鐘MISOPA6(SPI1_M…

京東商品評論API指南

一、引言京東商品評論API(JD.item_review)是京東開放平臺提供的重要接口,允許開發者獲取商品的詳細評論數據。通過該接口可以獲取包括評論內容、評分、評論時間、用戶昵稱等信息,為商品分析、用戶行為研究等提供數據支持?。二、接口概述1. 接口基本信息…

網絡編程概述與UDP編程

一、 網絡編程概述 1.1 概述 在現代軟件開發與系統交互場景里,基于 Socket 的網絡多進程通信占據核心地位,其適用場景廣泛且深入到各類數字化交互中: 直播場景:主播端通過 Socket 建立的網絡連接,將音視頻流以數據包…

新手教程:用外部 PostgreSQL 和 Zookeeper 啟動 Dolphinscheduler

本文將帶你一步步通過外部PostgreSQL和Zookeeper來啟動Apache DolphinScheduler。無論你是新手還是有經驗的開發者,都能輕松跟著這些步驟在Linux/Unix環境中完成安裝和配置。除了常見的安裝步驟,我們還會分享一些集群部署的技巧,讓你輕松擴展…

安寶特案例丨AR+AI賦能軌道交通制造:破解人工裝配難題的創新實踐

在軌道交通裝備制造領域,小批量、多品種的生產特性與高度依賴人工經驗的作業模式長期并存,導致效率瓶頸與質量隱患并存。安寶特通過AR(增強現實)AI(人工智能)技術融合,在螺栓緊固、內飾裝配、制…

基于LSTM-GRU混合網絡的動態解析:美聯儲維穩政策與黃金單日跌1.5%的非線性關聯

摘要:本文通過構建多因子量化模型,結合自然語言處理(NLP)技術對美聯儲政策文本進行情緒分析,解析經濟數據、市場情緒及宏觀環境對黃金價格的復合影響機制。研究基于LSTM時間序列預測框架,驗證關鍵事件對金價…

RabbitMQ消息確認機制有幾個confirm?

RabbitMQ 的消息確認機制中,“confirm” 這個詞主要出現在兩個關鍵環節,對應兩種確認:? 兩種 confirm(確認)機制確認類型觸發方說明Publisher Confirm(生產者確認)生產者 → Broker消息是否成功…

vue項目啟動時因內存不足啟動失敗

可以使用increase-memory-limit跟npm install cross-env插件npm install increase-memory-limit npm install cross-env安裝后需要在package.json文件中加入如下代碼"scripts": {"fix-memory-limit": "cross-env LIMIT3072 increase-memory-limit&quo…

WEditor:高效的移動端UI自動化腳本可視化編輯器

WEditor:高效的移動端UI自動化腳本可視化編輯器前言一、核心特性與優勢1. 可視化操作,降低門檻2. 跨平臺支持3. 豐富的控件層級展示4. 快捷鍵高效操作5. 開源可擴展二、安裝與環境配置1. 環境準備Android 設備用戶需額外準備ADB 安裝與配置步驟2. 安裝依…

面試高頻題 力扣 283.移動零 雙指針技巧 原地修改 順序保持 C++解題思路 每日一題

目錄零、題目描述一、為什么這道題值得你花幾分鐘看懂?二、題目拆解:提取其中的關鍵點三、明確思路:雙指針的巧妙配合四、算法實現:雙指針的代碼演繹五、C代碼實現:一步步拆解代碼拆解時間復雜度和空間復雜度六、實現過…

arrch64架構下調用pyvista報錯

arrch64架構下調用pyvista報錯 問題 python編程使用到了pyvista&#xff0c;使用conda新建了環境&#xff0c;但是使用的時候報錯 Traceback (most recent call last):File "/home/ztl/MGGBSAR/src/trans_las_3D.py", line 16, in <module>import pyvista as p…

功能強大編輯器

時間限制&#xff1a;1秒 內存限制&#xff1a;128M題目描述你要幫助小可創造一個超級數字編輯器&#xff01;編輯器依舊運行在Linux下&#xff0c;因此你只能通過指令去操控他。指令有五種&#xff1a; In X 表示在光標左側插入一個數字 Del 表示刪除光標左側一個數字 …

【力扣】面試經典150題總結01-數組/字符串

1.合并兩個有序數組&#xff08;簡單&#xff09;要求直接在num1上操作&#xff0c;已經預留了空間&#xff0c;所以直接倒著從大到小插入。當其中一個數組遍歷完&#xff0c;就把另一個數組剩余的部分插入。2.移除元素&#xff08;簡單&#xff09;要求原地移除數組中所有val元…

基于 Hadoop 生態圈的數據倉庫實踐 —— OLAP 與數據可視化(一)

目錄 一、OLAP 與 Impala 簡介 1. OLAP 簡介 2. Impala 簡介 &#xff08;1&#xff09;Impala 是什么 &#xff08;2&#xff09;為什么要使用 Impala &#xff08;3&#xff09;適合 Impala 的使用場景 &#xff08;4&#xff09;Impala 架構 &#xff08;5&#xff…

PyTorch L2范數詳解與應用

torch.norm 是什么 torch.norm(dot_product, p=2, dim=-1) 是 PyTorch 中用于計算張量 L2 范數的函數, 1. 各參數解析 dot_product:輸入張量,在代碼中形狀為 [batch_size, seq_len](每個元素是 token 隱藏狀態與關注向量的點積)。 p=2:指定計算L2 范數(歐幾里得范數)…