Docker啟動MySQL詳解

一、Docker啟動MySQL容器

在使用Docker啟動MySQL之前,我們需要先檢查本地是否已經有MySQL鏡像,如果沒有,需先下載。我們可以通過以下命令來檢查本地是否已有MySQL鏡像:

docker images | grep mysql

如果本地沒有MySQL鏡像,我們可以再終端中通過以下命令下載MySQL鏡像:

docker pull mysql

下載完成後,我們可以通過以下命令啟動MySQL容器:

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

這裡解釋一下各個參數的意義:

  • --name mysql 指定容器名稱為mysql,可以根據實際需要進行修改;
  • -p 3306:3306 端口映射,將容器中MySQL的3306端口映射到主機的3306端口;
  • -e MYSQL_ROOT_PASSWORD=123456 設置MySQL的root用戶的密碼為123456;
  • -d mysql 後台運行mysql鏡像。

啟動後,我們可以通過以下命令檢查容器是否已經啟動:

docker ps -a | grep mysql

如果返回結果中能看到mysql容器,說明已經成功啟動。

二、Docker訪問不到MySQL

在使用Docker啟動MySQL容器時,可能會遇到Docker容器無法訪問MySQL的情況。這時我們需要檢查以下兩方面:

  • 是否設置了正確的端口映射;
  • MySQL是否啟動。

如果端口映射正確,可以通過以下命令檢查MySQL是否正常啟動:

docker logs mysql | grep password

如果返回類似於以下結果,則說明MySQL已正常啟動:

2021-07-21T02:27:06.427867Z 1 [System] [MY-011011] [Server] mysqld: ready for connections. Version: '8.0.11'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server - GPL.
2021-07-21T02:27:06.460330Z 1 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.11).
2021-07-21T02:27:09.288095Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.11)  MySQL Community Server - GPL.

三、Docker啟動MySQL 8.0

如果需要啟動MySQL 8.0版本,可以通過以下命令啟動:

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0

四、Docker啟動MySQL立馬停止

有時候我們啟動MySQL容器後會立即停止,這很有可能是因為MySQL配置文件沒有正確設置。

我們可以通過以下命令來啟動MySQL,並指定一個本地的MySQL配置文件:

docker run --name mysql -p 3306:3306 -v /your-path/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql

通過該命令,我們將本地的一個my.cnf文件掛載到了容器的/etc/mysql/my.cnf路徑下,這樣就可以保證MySQL的配置文件正確設置。

五、Docker啟動MySQL鏡像命令

以下是常用的啟動MySQL鏡像命令:

# 拉取MySQL鏡像
docker pull mysql

# 啟動MySQL 5.7
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

# 啟動MySQL 8.0
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

# 啟動MySQL 5.7 並指定數據存放路徑
docker run -d --name mysql \
    -v /your-path/mysql/data:/var/lib/mysql \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:5.7

# 啟動MySQL 8.0 並指定數據存放路徑
docker run -d --name mysql \
    -v /your-path/mysql/data:/var/lib/mysql \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:8.0

六、Docker啟動MySQL容器時添加地址

有時候我們的MySQL需要綁定到指定的IP地址上,這時我們可以通過以下命令啟動MySQL容器:

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql --bind-address=0.0.0.0

這裡通過--bind-address=0.0.0.0參數綁定MySQL的IP地址為0.0.0.0,表示MySQL綁定所有的IP地址。

七、Docker啟動MySQL失敗

如果啟動MySQL失敗,我們可以先刪除已有的容器,然後再重新啟動,可以通過以下命令刪除容器:

docker rm -f mysql

然後再按照前面的步驟重新啟動即可。

八、Docker啟動MySQL指定配置文件

有時候我們需要在啟動MySQL容器時指定一個配置文件,這時我們可以通過以下命令啟動MySQL容器:

docker run --name mysql \
    -v /your-path/my.cnf:/etc/mysql/my.cnf \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql --defaults-file=/etc/mysql/my.cnf

這裡通過-v /your-path/my.cnf:/etc/mysql/my.cnf參數指定了MySQL的配置文件路徑,通過--defaults-file=/etc/mysql/my.cnf參數指定配置文件。

九、Docker啟動MySQL容器沒有權限

有時候我們在啟動MySQL容器時可能會出現權限問題,這時我們可以通過以下命令啟動容器,並將MySQL數據目錄和/config目錄權限都設置為777:

docker run --name mysql \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /your-path/data:/var/lib/mysql \
    -v /your-path/config/mysql:/etc/mysql/conf.d \
    -v /your-path/logs/mysql:/logs/mysql \
    -d mysql

# 設置數據目錄和/config目錄權限為777
docker exec mysql chmod 777 -R /var/lib/mysql
docker exec mysql chmod 777 -R /etc/mysql/conf.d

這裡我們通過docker exec命令進入到容器中,然後通過chmod命令設置目錄權限。

總結

本文從多個方面詳細闡述了Docker啟動MySQL的過程,包括:啟動MySQL容器、訪問不到MySQL、啟動MySQL 8.0、啟動MySQL立馬停止、指定MySQL配置文件、指定MySQL地址和啟動MySQL失敗等問題的解決方案。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/180042.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-22 05:10
下一篇 2024-11-22 05:10

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • docker-ce-18.03.1.ce-1.el7.centos.x86_64需要pigz這個依賴的解決方案

    當我們在linux centos系統中安裝docker-ce-18.03.1.ce-1.el7.centos.x86_64時,有時可能會遇到「nothing provides pi…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27
  • 如何解決Docker+k8s報錯413 Request Entity Too Large

    對於使用Docker容器和Kubernetes集群的開發人員,在處理HTTP請求時,常常會遇到413 Request Entity Too Large的報錯。這通常是由於請求的大小…

    編程 2025-04-27
  • docker-compose編寫用法介紹

    本文將詳細介紹docker-compose編寫的各個方面,包括語法、常見命令等等,旨在幫助讀者更好的了解如何使用docker-compose。 一、docker-compose的語…

    編程 2025-04-27
  • 如何使用MySQL字段去重

    本文將從多個方面為您詳細介紹如何使用MySQL字段去重並給出相應的代碼示例。 一、SELECT DISTINCT語句去重 MySQL提供了SELECT DISTINCT語句,通過在…

    編程 2025-04-27

發表回復

登錄後才能評論