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

使用Docker安裝并啟動(dòng)MySQL從零到實(shí)戰(zhàn)的完整指南

 更新時(shí)間:2025年11月13日 09:00:07   作者:Cz_mooo  
在使用Docker進(jìn)行應(yīng)用程序開發(fā)和部署時(shí),MySQL作為一個(gè)常用的數(shù)據(jù)庫管理系統(tǒng),經(jīng)常被使用,這篇文章主要介紹了使用Docker安裝并啟動(dòng)MySQL的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

MySQL 是目前最流行的關(guān)系型數(shù)據(jù)庫之一,廣泛應(yīng)用于各類應(yīng)用系統(tǒng)中。使用 Docker 部署 MySQL 可以極大簡化環(huán)境配置,保證開發(fā)、測試和生產(chǎn)環(huán)境的一致性。本文將詳細(xì)介紹如何使用 Docker 安裝、配置和管理 MySQL 容器,適合初學(xué)者快速上手。

一、準(zhǔn)備工作:安裝 Docker 環(huán)境

在開始之前,請確保你的系統(tǒng)已經(jīng)安裝了 Docker。如果尚未安裝,可以按照以下步驟操作:

1. 安裝 Docker(以 Ubuntu 為例)

bash

# 更新系統(tǒng)包索引
sudo apt-get update

# 安裝必要的依賴包
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 添加Docker官方GPG密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 設(shè)置Docker穩(wěn)定版?zhèn)}庫
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安裝Docker引擎
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# 啟動(dòng)Docker服務(wù)并設(shè)置開機(jī)自啟
sudo systemctl start docker
sudo systemctl enable docker

# 驗(yàn)證Docker是否安裝成功
sudo docker --version

2. 安裝 Docker(以 CentOS 為例)

bash

# 更新系統(tǒng)包
sudo yum update -y

# 安裝Docker依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker軟件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安裝Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 啟動(dòng)Docker服務(wù)并設(shè)置開機(jī)自啟
sudo systemctl start docker
sudo systemctl enable docker

# 驗(yàn)證Docker是否安裝成功
sudo docker --version

3. 非 root 用戶配置(可選)

為了避免每次使用docker命令都需要sudo權(quán)限,可以將當(dāng)前用戶添加到docker用戶組:

bash

sudo usermod -aG docker $USER
# 生效配置(需要重新登錄)
newgrp docker

二、Docker 安裝 MySQL:兩種常用方式

方式 1:快速啟動(dòng)默認(rèn)配置的 MySQL

如果只需要臨時(shí)使用 MySQL 進(jìn)行測試,最簡單的方式是直接運(yùn)行官方鏡像:

bash

docker run --name mysql-test -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:latest

參數(shù)說明:

  • --name mysql-test:給容器命名為mysql-test
  • -e MYSQL_ROOT_PASSWORD=root:設(shè)置 root 用戶密碼為 root
  • -p 3306:3306:將主機(jī)的 3306 端口映射到容器的 3306 端口
  • -d:后臺(tái)運(yùn)行容器
  • mysql:latest:使用最新版本的 MySQL 官方鏡像

方式 2:自定義配置啟動(dòng) MySQL(推薦生產(chǎn)環(huán)境)

對于實(shí)際生產(chǎn)環(huán)境,我們需要自定義 MySQL 配置,并確保數(shù)據(jù)持久化到主機(jī),避免容器刪除后數(shù)據(jù)丟失。

步驟 1:創(chuàng)建配置文件和數(shù)據(jù)目錄

bash

# 創(chuàng)建存放MySQL配置、數(shù)據(jù)和日志的目錄
mkdir -p /opt/mysql/{conf,data,logs}

# 設(shè)置目錄權(quán)限(確保容器內(nèi)用戶可以讀寫)
sudo chmod -R 777 /opt/mysql

步驟 2:編寫 MySQL 配置文件

創(chuàng)建并編輯 MySQL 配置文件:

bash

vi /opt/mysql/conf/my.cnf

添加以下基礎(chǔ)配置(可根據(jù)需求調(diào)整):

ini

[mysqld]
# 數(shù)據(jù)庫默認(rèn)字符集
character-set-server=utf8mb4
# 數(shù)據(jù)庫字符集對應(yīng)一些排序等規(guī)則,注意要和character-set-server對應(yīng)
collation-server=utf8mb4_unicode_ci
# 服務(wù)端口號(hào)
port=3306
# 數(shù)據(jù)庫存儲(chǔ)路徑(容器內(nèi)路徑)
datadir=/var/lib/mysql
# 日志文件路徑(容器內(nèi)路徑)
log-error=/var/log/mysql/error.log
# 允許最大連接數(shù)
max_connections=1000
# SQL模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
# 客戶端默認(rèn)字符集
default-character-set=utf8mb4

[mysql]
# MySQL客戶端默認(rèn)字符集
default-character-set=utf8mb4

步驟 3:啟動(dòng) MySQL 容器

bash

docker run -d \
  --name mysql \
  --restart=always \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_secure_password \
  -e TZ=Asia/Shanghai \
  -v /opt/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
  -v /opt/mysql/data:/var/lib/mysql \
  -v /opt/mysql/logs:/var/log/mysql \
  mysql:8.0

參數(shù)詳解:

  • --name mysql:容器名稱為 mysql
  • --restart=always:容器退出時(shí)自動(dòng)重啟
  • -p 3306:3306:端口映射,主機(jī)端口:容器端口
  • -e MYSQL_ROOT_PASSWORD=your_secure_password:設(shè)置 root 用戶密碼
  • -e TZ=Asia/Shanghai:設(shè)置時(shí)區(qū)為上海
  • -v /opt/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf:掛載配置文件
  • -v /opt/mysql/data:/var/lib/mysql:掛載數(shù)據(jù)目錄,實(shí)現(xiàn)數(shù)據(jù)持久化
  • -v /opt/mysql/logs:/var/log/mysql:掛載日志目錄
  • mysql:8.0:使用 MySQL 8.0 版本(生產(chǎn)環(huán)境建議指定具體版本)

三、驗(yàn)證 MySQL 容器是否正常運(yùn)行

1. 查看容器狀態(tài)

bash

# 查看容器運(yùn)行狀態(tài)
docker ps | grep mysql

# 查看容器詳細(xì)日志
docker logs mysql

如果看到類似ready for connections的日志,說明 MySQL 啟動(dòng)成功。

2. 連接 MySQL 進(jìn)行測試

bash

# 進(jìn)入MySQL容器
docker exec -it mysql mysql -u root -p

# 輸入密碼后,測試創(chuàng)建數(shù)據(jù)庫和表
mysql> CREATE DATABASE testdb;
mysql> USE testdb;
mysql> CREATE TABLE users (id INT, name VARCHAR(50));
mysql> INSERT INTO users VALUES (1, 'Docker MySQL');
mysql> SELECT * FROM users;

如果能正常執(zhí)行以上 SQL 命令,說明 MySQL 工作正常。

四、MySQL 容器管理常用命令

1. 基本操作

bash

# 啟動(dòng)已停止的MySQL容器
docker start mysql

# 停止運(yùn)行中的MySQL容器
docker stop mysql

# 重啟MySQL容器
docker restart mysql

# 查看容器詳細(xì)信息
docker inspect mysql

2. 配置文件更新

當(dāng)需要修改 MySQL 配置時(shí),只需更新主機(jī)上的/opt/mysql/conf/my.cnf文件,然后重啟容器即可:

bash

# 編輯配置文件
vi /opt/mysql/conf/my.cnf

# 重啟容器使配置生效
docker restart mysql

3. 升級 MySQL 版本

bash

# 1. 停止并備份當(dāng)前容器數(shù)據(jù)(關(guān)鍵步驟)
docker stop mysql
sudo cp -r /opt/mysql/data /opt/mysql/data_backup

# 2. 刪除當(dāng)前容器
docker rm mysql

# 3. 拉取新版本鏡像
docker pull mysql:8.0.33  # 替換為目標(biāo)版本

# 4. 使用相同命令啟動(dòng)新容器
docker run -d \
  --name mysql \
  --restart=always \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_secure_password \
  -e TZ=Asia/Shanghai \
  -v /opt/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
  -v /opt/mysql/data:/var/lib/mysql \
  -v /opt/mysql/logs:/var/log/mysql \
  mysql:8.0.33  # 使用新拉取的版本

五、安全最佳實(shí)踐

  • 設(shè)置強(qiáng)密碼:務(wù)必為 root 用戶設(shè)置復(fù)雜密碼,避免使用簡單密碼
  • 限制網(wǎng)絡(luò)訪問:生產(chǎn)環(huán)境建議通過防火墻限制 3306 端口的訪問來源
  • 使用固定版本鏡像:避免使用latest標(biāo)簽,應(yīng)指定具體版本(如mysql:8.0.33
  • 定期備份數(shù)據(jù):雖然數(shù)據(jù)已持久化到主機(jī),仍建議定期備份/opt/mysql/data目錄
  • 最小權(quán)限原則:運(yùn)行容器時(shí)可考慮添加--user參數(shù)指定非 root 用戶運(yùn)行
  • 啟用 SSL 連接:生產(chǎn)環(huán)境應(yīng)配置 MySQL 使用 SSL 加密客戶端連接
  • 定期更新鏡像:及時(shí)更新 MySQL 鏡像以獲取安全補(bǔ)丁

六、常見問題解決

1. 容器啟動(dòng)后立即退出

檢查日志定位問題:

bash

docker logs mysql

常見原因:配置文件錯(cuò)誤、目錄權(quán)限不足(可嘗試調(diào)整/opt/mysql目錄權(quán)限)

2. 無法遠(yuǎn)程連接 MySQL

  • 檢查主機(jī)防火墻是否開放 3306 端口
  • 確認(rèn) MySQL 用戶是否允許遠(yuǎn)程連接(默認(rèn) root 用戶只允許本地連接):

    sql

    -- 進(jìn)入MySQL后執(zhí)行
    use mysql;
    update user set host = '%' where user = 'root';
    flush privileges;
    

3. 數(shù)據(jù)持久化失敗

  • 確認(rèn)掛載目錄權(quán)限正確
  • 檢查日志文件是否有相關(guān)錯(cuò)誤信息
  • 確保啟動(dòng)命令中的數(shù)據(jù)目錄掛載正確

4. 中文亂碼問題

  • 確保配置文件中已正確設(shè)置character-set-server=utf8mb4
  • 新建數(shù)據(jù)庫和表時(shí)指定字符集:

    sql

    CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

總結(jié)

通過 Docker 安裝和管理 MySQL 可以顯著簡化部署流程,提高環(huán)境一致性。本文介紹的方法既適用于開發(fā)測試環(huán)境,也可通過適當(dāng)調(diào)整配置應(yīng)用于生產(chǎn)環(huán)境。核心在于理解數(shù)據(jù)持久化的實(shí)現(xiàn)方式和容器與主機(jī)的交互機(jī)制,以便更好地管理和維護(hù) MySQL 服務(wù)。

到此這篇關(guān)于使用Docker安裝并啟動(dòng)MySQL的文章就介紹到這了,更多相關(guān)Docker安裝啟動(dòng)MySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql數(shù)據(jù)庫sql優(yōu)化原則(經(jīng)驗(yàn)總結(jié))

    mysql數(shù)據(jù)庫sql優(yōu)化原則(經(jīng)驗(yàn)總結(jié))

    這里的原則 只是針對mysql數(shù)據(jù)庫,其他的數(shù)據(jù)庫 某些是殊途同歸,某些還是存在差異。我總結(jié)的也是mysql普遍的規(guī)則,對于某些特殊情況得特殊對待。在構(gòu)造sql語句的時(shí)候養(yǎng)成良好的習(xí)慣
    2014-03-03
  • MySQL中的redo log和undo log日志詳解

    MySQL中的redo log和undo log日志詳解

    MySQL日志系統(tǒng)中最重要的日志為重做日志redo log和歸檔日志bin log,后者為MySQL Server層的日志,前者為InnoDB存儲(chǔ)引擎層的日志。今天通過本文給大家介紹MySQL中的redo log和undo log日志,感興趣的朋友一起看看吧
    2021-07-07
  • Mac下忘記mysql密碼重新設(shè)置密碼的圖文教程

    Mac下忘記mysql密碼重新設(shè)置密碼的圖文教程

    這篇文章主要介紹了Mac下忘記mysql密碼重新設(shè)置密碼的教程,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • 綠色版mysql注冊卸載服務(wù)方法

    綠色版mysql注冊卸載服務(wù)方法

    如果直接用綠色版的mysql,則下載后解壓,只需對目錄下的my.ini文件的basedir(mysql的基本目錄)和datadir(mysql數(shù)據(jù)目錄)指定就可以,如下所示。
    2013-06-06
  • MySQL數(shù)據(jù)庫索引優(yōu)化及應(yīng)用

    MySQL數(shù)據(jù)庫索引優(yōu)化及應(yīng)用

    本文詳細(xì)介紹了MySQL數(shù)據(jù)庫索引的基本概念、優(yōu)缺點(diǎn)、常見類型、使用策略、優(yōu)化技巧以及查看和分析索引使用情況的方法,通過這些內(nèi)容,讀者可以更好地理解和使用索引來優(yōu)化MySQL數(shù)據(jù)庫的性能,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • 關(guān)于mysql中string和number的轉(zhuǎn)換問題

    關(guān)于mysql中string和number的轉(zhuǎn)換問題

    這篇文章主要介紹了關(guān)于mysql中string和number的轉(zhuǎn)換問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • MySQL 5.7開啟并查看biglog的詳細(xì)教程

    MySQL 5.7開啟并查看biglog的詳細(xì)教程

    binlog 就是binary log,二進(jìn)制日志文件,這個(gè)文件記錄了MySQL所有的DML操作,通過binlog日志我們可以做數(shù)據(jù)恢復(fù),增量備份,主主復(fù)制和主從復(fù)制等等,本文給大家介紹了MySQL 5.7開啟并查看biglog的詳細(xì)教程,需要的朋友可以參考下
    2024-03-03
  • MySQL三大日志之binlog、redoLog、undoLog詳細(xì)講解

    MySQL三大日志之binlog、redoLog、undoLog詳細(xì)講解

    這篇文章主要介紹了MySQL三大日志之binlog、redoLog、undoLog的相關(guān)資料,,binlog是MySQL服務(wù)層的日志,記錄數(shù)據(jù)庫執(zhí)行的寫入性操作,redoLog是InnoDB存儲(chǔ)引擎層的日志,記錄數(shù)據(jù)頁的變更,undoLog也是InnoDB存儲(chǔ)引擎層的日志,記錄數(shù)據(jù)的邏輯變化,需要的朋友可以參考下
    2025-02-02
  • Mysql更換MyISAM存儲(chǔ)引擎為Innodb的操作記錄總結(jié)

    Mysql更換MyISAM存儲(chǔ)引擎為Innodb的操作記錄總結(jié)

    下面小編就為大家?guī)硪黄狹ysql更換MyISAM存儲(chǔ)引擎為Innodb的操作記錄總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL中BIGINT數(shù)據(jù)類型如何存儲(chǔ)整數(shù)值

    MySQL中BIGINT數(shù)據(jù)類型如何存儲(chǔ)整數(shù)值

    mysql數(shù)據(jù)庫設(shè)計(jì),其中對于數(shù)據(jù)性能優(yōu)化,字段類型考慮很重要,下面這篇文章主要給大家介紹了關(guān)于MySQL中BIGINT數(shù)據(jù)類型如何存儲(chǔ)整數(shù)值的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10

最新評論

平利县| 增城市| 长寿区| 黔西县| 榆树市| 井冈山市| 珠海市| 黔东| 海淀区| 瓮安县| 永德县| 翼城县| 防城港市| 文水县| 海盐县| 云浮市| 道真| 建瓯市| 宝兴县| 平山县| 克东县| 科技| 江山市| 额济纳旗| 衡阳县| 邻水| 色达县| 民勤县| 汉阴县| 衡南县| 梨树县| 永年县| 深水埗区| 汾西县| 隆林| 宣武区| 大冶市| 贺州市| 武胜县| 平山县| 临沂市|