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

Docker搭建MySQL數(shù)據(jù)庫(kù)的完整步驟及報(bào)錯(cuò)解決

 更新時(shí)間:2025年07月31日 08:31:36   作者:代碼怪獸大作戰(zhàn)  
使用Docker部署MySQL數(shù)據(jù)庫(kù)是一種高效且便捷的方法,這篇文章主要介紹了Docker搭建MySQL數(shù)據(jù)庫(kù)的完整步驟及報(bào)錯(cuò)解決,文中通過(guò)代碼介紹介紹的非常詳細(xì),需要的朋友可以參考下

前言

在本篇文章中,我們將詳細(xì)介紹如何通過(guò) Docker 快速搭建一個(gè) MySQL 數(shù)據(jù)庫(kù)環(huán)境,并通過(guò)一些簡(jiǎn)單的配置來(lái)實(shí)現(xiàn)數(shù)據(jù)持久化、日志管理和定制化的配置文件。

一、準(zhǔn)備工作

首先,確保你的系統(tǒng)上已經(jīng)安裝了 Docker。

Linux上進(jìn)行Docker安裝有兩種方式:

  1. Docker自動(dòng)化安裝
  2. Docker手動(dòng)安裝

可以根據(jù)該文章的步驟進(jìn)行安裝:https://blog.csdn.net/weixin_44876263/article/details/136714078?spm=1001.2014.3001.5502

二、設(shè)置 MySQL 容器的目錄結(jié)構(gòu)

為了確保容器中的 MySQL 數(shù)據(jù)持久化并且能夠方便地訪(fǎng)問(wèn),我們需要在宿主機(jī)上創(chuàng)建一些本地目錄來(lái)掛載到 Docker 容器中。這里我們?cè)?/opt/docker/demo 路徑下創(chuàng)建 MySQL 相關(guān)的目錄,包括日志、數(shù)據(jù)和配置文件目錄。

# 安裝路徑
DIR="/opt/docker/demo"
DOCKER_NAME="docker-mysql"

# 創(chuàng)建目錄結(jié)構(gòu)
mkdir -p "$DIR/mysql/log"
mkdir -p "$DIR/mysql/data"
mkdir -p "$DIR/mysql/conf"

這里我們創(chuàng)建了以下幾個(gè)目錄:

  • log:存放 MySQL 容器的日志文件。
  • data:存放 MySQL 容器的數(shù)據(jù)文件。
  • conf:存放 MySQL 配置文件。

三、配置 MySQL 容器

接下來(lái),我們將使用 Docker 運(yùn)行一個(gè) MySQL 容器。Docker 提供了一個(gè)官方的 mysql:8.0 鏡像,我們將基于該鏡像來(lái)創(chuàng)建容器。

以下是啟動(dòng) MySQL 容器的命令:

docker run -d \
  --restart=always \
  --name "$DOCKER_NAME" \
  --network host \
  -v "$DIR/mysql/log:/var/log/mysql" \
  -v "$DIR/mysql/data:/var/lib/mysql" \
  -v "$DIR/mysql/conf:/etc/mysql/conf.d" \
  -e MYSQL_ROOT_PASSWORD=root \
  mysql:8.0

解釋各個(gè)參數(shù):

  • -d:后臺(tái)運(yùn)行容器。
  • --restart=always:容器在崩潰或機(jī)器重啟后會(huì)自動(dòng)重啟。
  • --name "$DOCKER_NAME":指定容器名稱(chēng)為 docker-mysql
  • --network host:將容器連接到宿主機(jī)的網(wǎng)絡(luò),以便外部可以訪(fǎng)問(wèn) MySQL 服務(wù)。
  • -v "$DIR/mysql/log:/var/log/mysql":將宿主機(jī)的日志目錄掛載到容器內(nèi)的日志目錄。
  • -v "$DIR/mysql/data:/var/lib/mysql":將宿主機(jī)的數(shù)據(jù)目錄掛載到容器的數(shù)據(jù)目錄,確保數(shù)據(jù)持久化。
  • -v "$DIR/mysql/conf:/etc/mysql/conf.d":將宿主機(jī)的配置文件目錄掛載到容器內(nèi)的配置目錄。
  • -e MYSQL_ROOT_PASSWORD=root:設(shè)置 MySQL 根用戶(hù)的密碼為 root。
  • mysql:8.0:使用官方的 MySQL 8.0 鏡像

四、自定義 MySQL 配置

MySQL 的配置文件可以通過(guò)掛載宿主機(jī)的配置目錄到容器內(nèi)進(jìn)行自定義。你可以在 conf 目錄下創(chuàng)建一個(gè) custom.cnf 文件,配置 MySQL 的監(jiān)聽(tīng)端口等參數(shù)。

例如,我們可以設(shè)置 MySQL 監(jiān)聽(tīng)的端口為 3307,而不是默認(rèn)的 3306,或設(shè)置時(shí)區(qū) +08:00。只需要在 custom.cnf 中添加如下配置:

[mysqld] 

port = 3307
default-time-zone = '+08:00'

然后,確保該文件掛載到容器內(nèi)的正確位置(/etc/mysql/conf.d/)。

五、端口配置:Host 網(wǎng)絡(luò)模式 vs Port 映射模式

在 Docker 中,容器的網(wǎng)絡(luò)配置和端口管理是非常重要的。對(duì)于 MySQL 容器,有兩種常見(jiàn)的端口配置方式:

  1. Host 網(wǎng)絡(luò)模式

    在 Docker 中使用 --network host 選項(xiàng)時(shí),容器會(huì)直接使用宿主機(jī)的網(wǎng)絡(luò)棧,這意味著容器將使用宿主機(jī)的 IP 地址和端口。

    當(dāng)你使用 Host 網(wǎng)絡(luò)模式時(shí),容器中的 MySQL 服務(wù)將直接暴露在宿主機(jī)的默認(rèn)端口(如 3306)。無(wú)需進(jìn)行端口映射,MySQL 容器將與宿主機(jī)共享網(wǎng)絡(luò)接口。

    配置命令:

    docker run -d \
      --restart=always \
      --name "$DOCKER_NAME" \
      --network host \
      -v "$DIR/mysql/log:/var/log/mysql" \
      -v "$DIR/mysql/data:/var/lib/mysql" \
      -v "$DIR/mysql/conf:/etc/mysql/conf.d" \
      -e MYSQL_ROOT_PASSWORD=root \
      mysql:8.0
    
    • 優(yōu)點(diǎn)
      • 容器共享宿主機(jī)的網(wǎng)絡(luò),性能較高。
      • 無(wú)需顯式端口映射,容器與宿主機(jī)共享相同的網(wǎng)絡(luò)。
    • 缺點(diǎn)
      • 容器與宿主機(jī)的網(wǎng)絡(luò)完全共享,可能會(huì)有端口沖突,尤其是多個(gè)容器或服務(wù)同時(shí)運(yùn)行時(shí)。
      • 容器的端口與宿主機(jī)端口相同,可能存在安全隱患。
  2. Port 映射模式

    如果你希望對(duì)容器的端口進(jìn)行靈活配置,可以使用 -p 參數(shù)將容器的端口映射到宿主機(jī)的特定端口。通過(guò)這種方式,你可以將容器內(nèi)的 MySQL 端口(默認(rèn)為 3306)映射到宿主機(jī)上的另一個(gè)端口。

    例如,將容器內(nèi)的 3306 端口映射到宿主機(jī)的 3307 端口:

    配置命令:

    docker run -d \
      --restart=always \
      --name "$DOCKER_NAME" \
      -p 3307:3306 \
      -v "$DIR/mysql/log:/var/log/mysql" \
      -v "$DIR/mysql/data:/var/lib/mysql" \
      -v "$DIR/mysql/conf:/etc/mysql/conf.d" \
      -e MYSQL_ROOT_PASSWORD=root \
      mysql:8.0
    
    
    • 優(yōu)點(diǎn)
      • 容器端口與宿主機(jī)端口不同,可以避免端口沖突。
      • 容器與宿主機(jī)之間有更好的網(wǎng)絡(luò)隔離性。
      • 支持多個(gè)容器映射到宿主機(jī)不同的端口,適合多容器環(huán)境。
    • 缺點(diǎn)
      • 可能會(huì)導(dǎo)致稍微的性能損失,因?yàn)樾枰M(jìn)行額外的端口映射。
      • 需要手動(dòng)管理和指定端口映射。

六、檢查 MySQL 容器狀態(tài)

容器啟動(dòng)后,你可以通過(guò)以下命令檢查容器是否正常運(yùn)行:

docker ps

該命令會(huì)列出所有正在運(yùn)行的容器。如果你的 MySQL 容器沒(méi)有出現(xiàn)在列表中,可以通過(guò)查看容器日志來(lái)排查問(wèn)題:

docker logs docker-mysql

七、連接到 MySQL 容器

如果你需要連接到容器內(nèi)的 MySQL 數(shù)據(jù)庫(kù),可以使用 docker exec 命令進(jìn)入容器并使用 mysql 客戶(hù)端進(jìn)行連接:

docker exec -it docker-mysql mysql -u root -p

輸入密碼后,你將進(jìn)入 MySQL 提示符,可以執(zhí)行 SQL 查詢(xún)等操作。

八、備份與恢復(fù)

為了確保數(shù)據(jù)的安全性,你可以定期備份 MySQL 數(shù)據(jù)。因?yàn)閿?shù)據(jù)已經(jīng)掛載到宿主機(jī)目錄 $DIR/mysql/data,所以你可以直接備份該目錄中的數(shù)據(jù)文件。

例如,你可以使用 tar 命令將數(shù)據(jù)目錄打包備份:

tar -czvf mysql_backup.tar.gz -C "$DIR/mysql" data

恢復(fù)時(shí),只需要將備份文件解壓到相應(yīng)的目錄即可。

九、報(bào)錯(cuò)問(wèn)題

在使用 Docker 安裝 MySQL 后,容器啟動(dòng)失敗。查看日志后發(fā)現(xiàn)如下錯(cuò)誤信息:

Fatal glibc error: CPU does not support x86-64-v2

經(jīng)過(guò)排查,這是由于所使用的 MySQL 鏡像(如 mysql:8.0)基于較新的 glibc 編譯,要求宿主機(jī) CPU 支持 x86-64-v2 指令集。而一些老舊物理機(jī)或低配置云主機(jī)并不具備這些新指令集,導(dǎo)致容器無(wú)法啟動(dòng)并反復(fù)重啟。

解決方案:

更換為兼容舊 CPU 架構(gòu)的 MySQL 鏡像版本。例如使用下列鏡像即可成功運(yùn)行:

mysql:8.4.0-oraclelinux8

該鏡像基于 Oracle Linux 構(gòu)建,對(duì)老舊 CPU 有更好的兼容性。替換后容器可正常啟動(dòng),問(wèn)題順利解決。

總結(jié)

通過(guò) Docker 搭建 MySQL 數(shù)據(jù)庫(kù)環(huán)境非常簡(jiǎn)單,并且能夠通過(guò)掛載宿主機(jī)目錄的方式實(shí)現(xiàn)數(shù)據(jù)持久化和日志管理。通過(guò)修改容器內(nèi)的配置文件,你還可以自定義 MySQL 的參數(shù),例如監(jiān)聽(tīng)端口等。

Docker 提供了兩種常見(jiàn)的端口配置方式:Host 網(wǎng)絡(luò)模式Port 映射模式。選擇哪種方式取決于你的需求:

  • Host 網(wǎng)絡(luò)模式:適用于需要高性能、直接使用宿主機(jī)網(wǎng)絡(luò)的場(chǎng)景。
  • Port 映射模式:適用于需要靈活配置端口、避免端口沖突或需要更好網(wǎng)絡(luò)隔離的場(chǎng)景。

無(wú)論選擇哪種方式,Docker 都能夠通過(guò)簡(jiǎn)單的配置幫助你快速搭建 MySQL 數(shù)據(jù)庫(kù),并且根據(jù)你的需求進(jìn)行靈活的端口管理。

到此這篇關(guān)于Docker搭建MySQL數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)Docker搭建MySQL數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 教會(huì)你完全搞定MySQL數(shù)據(jù)庫(kù) 輕松八句話(huà)

    教會(huì)你完全搞定MySQL數(shù)據(jù)庫(kù) 輕松八句話(huà)

    只要掌握下面的方法,就基本上能搞定mysql數(shù)據(jù)庫(kù)。
    2010-09-09
  • MySQL日志的詳細(xì)分析實(shí)例

    MySQL日志的詳細(xì)分析實(shí)例

    MySQL日志記錄了MySQL數(shù)據(jù)庫(kù)日常操作和錯(cuò)誤信息,下面這篇文章主要給大家介紹了關(guān)于MySQL日志的詳細(xì)分析,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 在MySQL中創(chuàng)建實(shí)現(xiàn)自增的序列(Sequence)的教程

    在MySQL中創(chuàng)建實(shí)現(xiàn)自增的序列(Sequence)的教程

    這篇文章主要介紹了在MySQL中創(chuàng)建實(shí)現(xiàn)自增的序列(Sequence)的教程,分別列舉了兩個(gè)實(shí)例并簡(jiǎn)單討論了一些限制因素,需要的朋友可以參考下
    2015-12-12
  • mysql “ Every derived table must have its own alias”出現(xiàn)錯(cuò)誤解決辦法

    mysql “ Every derived table must have its own alias”出現(xiàn)錯(cuò)誤解決辦法

    這篇文章主要介紹了mysql “ Every derived table must have its own alias”出現(xiàn)錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Centos?7.9安裝MySQL8.0.32的詳細(xì)教程

    Centos?7.9安裝MySQL8.0.32的詳細(xì)教程

    這篇文章主要介紹了Centos7.9安裝MySQL8.0.32的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 可視化工具navicat怎么連接到mysql數(shù)據(jù)庫(kù)的教程(圖文)

    可視化工具navicat怎么連接到mysql數(shù)據(jù)庫(kù)的教程(圖文)

    Navicat是一款強(qiáng)大的數(shù)據(jù)庫(kù)管理工具,支持多種數(shù)據(jù)庫(kù)系統(tǒng)如MySQL、Oracle等,通過(guò)簡(jiǎn)單的操作步驟,用戶(hù)可以輕松連接數(shù)據(jù)庫(kù):選擇數(shù)據(jù)庫(kù)類(lèi)型,填寫(xiě)連接名和密碼,測(cè)試連接,新建數(shù)據(jù)庫(kù)并設(shè)定相關(guān)連接信息,該教程詳細(xì)介紹了使用Navicat連接和新建數(shù)據(jù)庫(kù)的過(guò)程,
    2026-01-01
  • 一文搞懂MySQL?數(shù)據(jù)庫(kù)意向鎖

    一文搞懂MySQL?數(shù)據(jù)庫(kù)意向鎖

    意向鎖是InnoDB的多粒度鎖機(jī)制中的一種關(guān)鍵機(jī)制,用于聲明事務(wù)將對(duì)表中的某些行加行鎖,從而在加表鎖時(shí)避免掃描所有行鎖,是InnoDB自動(dòng)維護(hù)的表級(jí)鎖,本文給大家介紹MySQL數(shù)據(jù)庫(kù)意向鎖,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • mysql8.0.20下載安裝及遇到的問(wèn)題(圖文詳解)

    mysql8.0.20下載安裝及遇到的問(wèn)題(圖文詳解)

    這篇文章主要介紹了mysql8.0.20下載安裝及遇到的問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • MySQL不可忽視的數(shù)據(jù)庫(kù)約束(維護(hù)數(shù)據(jù)秩序)

    MySQL不可忽視的數(shù)據(jù)庫(kù)約束(維護(hù)數(shù)據(jù)秩序)

    數(shù)據(jù)庫(kù)約束是數(shù)據(jù)庫(kù)管理中不可或缺的一部分,它們?cè)诰S護(hù)數(shù)據(jù)秩序、保證數(shù)據(jù)完整性和一致性方面發(fā)揮著重要作用,本文給大家介紹MySQL不可忽視的數(shù)據(jù)庫(kù)約束,感興趣的朋友一起看看吧
    2025-05-05
  • Docker中如何修改mysql8默認(rèn)加密方式

    Docker中如何修改mysql8默認(rèn)加密方式

    這篇文章主要給大家介紹了關(guān)于Docker中如何修改mysql8默認(rèn)加密方式的相關(guān)資料,文中大概介紹了docker啟動(dòng)命令中添加額外參數(shù)、mysql啟動(dòng)后使用sql修改以及啟動(dòng)前掛載修改好的配置文件等方法,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

屏山县| 资中县| 东光县| 荥阳市| 平安县| 洱源县| 台江县| 盐亭县| 娄烦县| 扬州市| 滨海县| 淮阳县| 东乌| 大宁县| 宁夏| 雅安市| 太保市| 松滋市| 东台市| 宜阳县| 嵩明县| 贞丰县| 石泉县| 乌恰县| 玉山县| 南安市| 宁安市| 大名县| 嘉兴市| 吉林省| 北海市| 余江县| 壶关县| 榕江县| 文登市| 兴仁县| 宁波市| 名山县| 沈阳市| 云阳县| 台北市|