如何在 Linux 中使用 Docker安裝MySQL

2021-12-31 運維漫談

如果您是 MySQL 的新手或希望快速輕鬆地安裝 MySQL 資料庫的人,那麼本文適合您,在本文中,我們將學習如何在 Linux 中使用 Docker 和 Docker compose 設置 MySQL。

讓我們首先設置 docker 環境來啟動 MySQL 容器。

1. 安裝 Docker

在啟動 MySQL docker 容器之前,您需要在您的機器上安裝 docker 和 docker-compose。

您還可以參考下面給出的官方 Docker 文檔連結,了解如何設置 Docker 和 Docker compose。

https://docs.docker.com/engine/install/
https://docs.docker.com/compose/install/

您可以運行以下命令來檢查您正在運行的 docker 和 docker-compose 版本。

$ docker --version
Docker version 20.10.11, build dea9396

$ docker-compose --version
docker-compose version 1.29.2, build unknown

2. 下載 MySQL Docker 鏡像

前往Docker Hub獲取MySQL docker 鏡像。重要的是您必須決定要運行的 MySQL 版本。

運行以下命令將 MySQL 映像從 docker hub 拉到您的機器上。

$ docker pull mysql:latest

注意:沒有必要使用標籤「 latest」,默認情況下它會拉取最新的圖像。

要檢查圖像是否在本地可用,您可以運行以下命令:

$ docker images mysql

示例輸出:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        latest    b05128b000dd   12 days ago   516MB

現在圖像已準備好啟動容器。您也可以跳過此步驟並運行「 docker run」命令,如下一節所示,如果本地不可用,它將拉取映像。

3. 啟動 MySQL 容器

運行以下命令來啟動 MySQL docker 容器:

$ docker run --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e "MYSQL_ROOT_PASSWORD=temp123" mysql

讓我們分解上面的命令,看看每個標誌的作用。

--name→ 為您的容器命名。如果您未指定此標誌,docker 將分配一些隨機生成的名稱。

-p→ 埠映射。MySQL 將偵聽埠,3306因此我們將埠 ( 3306→ 3306) 從您的主機映射到 docker 容器。主機埠不必是3306,它可以是任何可用的。

netstat在您的本地機器上運行以下命令以檢查容器啟動後映射的埠是否正在偵聽。

$ netstat -tlnup | grep -i 3306

示例輸出:

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 168870/docker-proxy 
tcp6 0 0 :::3306 :::* LISTEN 168878/docker-proxy 

-v→ 將卷附加到容器。docker 的默認行為是一旦容器被移除就不會持久化數據,因此您將丟失所有數據。

為了創建持久存儲,我創建了名為「 mysql_volume」的卷。MySQL 將數據存儲在/var/lib/mysql/容器內,並在此處映射到 localhost 目錄/var/lib/docker/volumes/mysql_volume1/_data,因此您的數據將是持久的。

-d→ 將以分離模式啟動和運行容器。如果省略該-d標誌,那麼您將在終端中看到容器啟動日誌,您必須打開一個新的終端會話才能連接到容器。

-e→ 環境變量。您必須使用以下任一參數設置 mysql root 用戶密碼。

MYSQL_ROOT_PASSWORD → 使用此環境變量設置您自己的密碼。

MYSQL_ALLOW_EMPTY_PASSWORD→ 將設置空白或空密碼。你必須設置MYSQL_ALLOW_EMPTY_PASSWORD=1.

MYSQL_RANDOM_ROOT_PASSWORD→ 容器啟動時會生成隨機密碼。您必須設置MYSQL_RANDOM_ROOT_PASSWORD=1生成隨機密碼。

如果跳過此步驟,則會引發如下所示的錯誤。

4. 檢查 MySQL 容器狀態

您可以使用以下命令檢查啟動的容器狀態:

$ docker ps

示例輸出:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
e1fb895f6f0f   mysql     "docker-entrypoint.s..."   3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

5.連接到MySQL資料庫

運行以下命令連接到 MySQL 容器。

$ docker exec -it mysql bash

root通過運行以下命令以用戶身份連接到 MySQL 資料庫。就我而言,我已經通過MYSQL_ROOT_PASSWORD.

$ mysql -u root -p

如果您MYSQL_RANDOM_ROOT_PASSWORD=1在啟動容器時使用過,那麼您可以從日誌中獲取自動生成的密碼。

$ docker logs

$ docker logs mysql

自動生成的root密碼會很長,不需要記住。您可以通過運行以下查詢來重置 root 密碼。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysqlpassword';

將密碼「mysqlpassword」替換為您自己的密碼。您還可以創建自己的用戶並根據需要授予他權限。

6. 加載樣本數據

設置 mysql 的主要目的是加載一些數據並對其運行查詢。有幾種方法可以加載數據。我有一個名為「 load_data.sql」的示例文件,其中包含以下查詢。

如果不存在足球,則創建資料庫;

CREATE DATABASE IF NOT EXISTS football;

USE football;

CREATE TABLE IF NOT EXISTS players (
    player_name     VARCHAR(16)     NOT NULL,
    player_age      INT             NOT NULL,
    player_club     VARCHAR(16)     NOT NULL,
    player_country  VARCHAR(16)     NOT NULL
);

INSERT INTO players VALUES ("Messi",34,"PSG","Argentina");
INSERT INTO players VALUES ("Ronaldo",36,"MANU","Portugal");
INSERT INTO players VALUES ("Neymar",29,"PSG","Brazil");
INSERT INTO players VALUES ("Kane",28,"SPURS","England");
INSERT INTO players VALUES ("E Hazard",30,"MADRID","Belgium");

第一種方法是使用「 docker cp」命令將數據從本地機器複製到 docker 容器。

$ docker cp load_data.sql mysql:/tmp

$ docker exec -it mysql bash

$ ls -l /tmp/

現在您可以連接到 mysql 客戶端並運行 source 命令或將文件重定向到 mysql 客戶端。

$ mysql -u root -p

mysql> source /tmp/load_data.sql

或者

$ mysql -u root -p < /tmp/load_data.sql

連接到資料庫並查詢您的表。

$ mysql -u root -p

mysql> show databases;

mysql> use football;

mysql> show tables;

mysql> select * from players;

第二種方法是.sql在運行docker exec命令時重定向文件。

$ docker exec -i mysql mysql -u root -p < load_data.sql

7. 使用 Docker-Compose 設置 MySQL 容器

docker run您可以使用docker-compose快速啟動容器,而不是拉取鏡像並運行命令。當您要創建多個容器時,Docker-compose 最適合。

創建一個名為docker-compose.yml或docker-compose.yaml文件的文件。複製並粘貼以下 yaml 代碼。

version: '3.8'
services:
  database:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: temp1234
    ports:
      - "3306:3306"
    volumes:
      - mysql_volume:/var/lib/mysql
volumes:
  mysql_compose_volume:

現在運行以下命令,這將啟動 MySQL docker 容器。

$ docker-compose up

運行以下命令以使用 docker-compose 檢查已啟動容器的狀態:

$ docker-compose ps

示例輸出:

Name              Command             State                          Ports                       
--
mysql   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp

8. 使用 MySQL Workbench 連接到 MySQL 資料庫

到目前為止,我們已經看到了如何從容器內部使用 mysql 客戶端連接到資料庫。您還可以使用任何 GUI 客戶端(如 mysql workbench、dbeaver、Heidi SQL 等)連接到資料庫。

無論您使用什麼 GUI 客戶端,都要注意的重要一點是,啟動容器時映射的埠是什麼。

就我而言,我已經映射了localhost ( 3306) ->容器( 3306)。所以如果我必須建立到資料庫的連接,我必須連接到localhost:3306或127.0.01:3306。

我使用 MySQL Workbench 作為我的 GUI 客戶端,如果您還沒有在您的機器上安裝 MySQL Workbench,那麼您可以使用以下說明進行安裝。

8.1. 在 Linux 中安裝 MySQL Workbench

導航到官方站點下載包文件,您必須選擇您的作業系統才能下載.deb或.rpm文件。

在下一步中,它會要求您登錄或註冊,您可以通過單擊「不,謝謝,只需開始我的下載」選項跳過登錄或註冊。

在基於 Debian 的系統上,安裝 MySQL Workbench,如下所示:

$ cd <path to downloaded .deb file>

$ sudo apt install ./mysql-workbench-community_8.0.27-1ubuntu21.04_amd64.deb

在基於 RHEL 的系統上,安裝 MySQL Workbench,如下所示:

$ cd <path to downloaded .rpm file>

$ sudo dnf localinstall ./mysql-workbench-community-8.0.27-1.el8.x86_64.rpm

安裝完成後,您可以從菜單或破折號啟動 mysql 工作檯。

8.2. 連接到 MySQL 資料庫

連接到在 docker 容器內運行的資料庫,您應該嘗試連接到localhost:3306或localhost:取決於您的容器的設置方式。

在連接到資料庫之前,您可以按「測試連接」來檢查 MySQL Workbench 是否能夠成功連接到資料庫實例。

現在您可以開始針對您創建的表運行查詢。

9. 結論

在本文中,我們簡要了解了如何在 docker 中啟動 MySQL 容器的使用docker run和docker-compose方法,如果你想設置 MySQL 用於測試或學習目的,Docker 就足夠了。

相關焦點

  • 技術譯文 | 使用 Docker 安裝 MySQL
    /在工作中,我經常需要安裝特定版本的 MySQL,MariaDB 或 Percona 來運行一些實驗,例如:檢查版本差異或是提供測試說明。此博客系列將闡述如何使用 Docker 安裝 MySQL,MariaDB 或 Percona。這篇文章是第一篇,重點是 MySQL。Docker 的優點在於它可以非常輕鬆地安裝最新的 MySQL 版本以及任何其他版本,但往往與典型的生產安裝不匹配。當您需要簡單的單個實例時,Docker 的確很方便。如果您正在研究一些與複製相關的行為,那麼則不一定適合。
  • Docker安裝mysql,nginx
  • Docker MySQL 使用
    Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
  • docker安裝mysql
    [OK]tutum/mysql Base docker image to run a MySQL database se… 35 linuxserver/mysql A Mysql container, brought to you by LinuxSe
  • 如何在Linux系統中安裝Docker?
    Docker 的過程,安裝docker只是小菜一碟,你只需要運行幾條命令就大功告成了! linux-image-extra-$(uname -r) linux-image-extra-virtual按「y」繼續:
  • Ubuntu16.04使用docker安裝MySQL(詳細)
    總是在登錄時遇到以下錯誤:$ mysql -u root -pERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)不管自己是完全卸載後重新使用安裝包安裝,還是使用apt-get install安裝,
  • 使用Docker安裝MySQL
    在使用、學習MySQL的時候我們需要下載不同的版本的MySQL ,之前我們可以使用sandbox 快速搭建單節點或者一主多從的資料庫。
  • Docker下MySQL的安裝
    概述本文講述了如何利用Docker去安裝MySQL,以及MySQL自定義配置文件的相關設置。安裝Docker首先安裝Docker並開啟服務:systemctl start docker如果沒有添加國內源的話建議添加一下,新增/修改/etc/docker/daemon.json,添加如下內容:
  • docker|docker安裝mysql資料庫
    安裝資料庫說明,本文DEMO示例僅適用於本機開發環境,不適用線上生產環境使用命令 docker ps 如有以下輸出,則是已安裝docker如沒有安裝,可參考docker官網,windows/mac 直接下載安裝包安裝就可以了下載地址: https://www.docker.com/products/docker-desktop安裝Mysql的命令
  • Docker下安裝MySQL
    docker run -e MYSQL_ROOT_PASSWORD=123456  -p 3306:3306  \-v /home/xxljobwork:/home/xxljobwork mysql  --character-set-server
  • 如何在Linux下使用docker搭建LNMP環境
    最近在使用docker的過程中遇到了許許多多的坑。首次使用它也是浪費了大量的精力。今天我們來簡單說下如何用它搭建一個LNMP環境吧,遇到的坑和解決方法我也會寫到裡面。。            最近也是想構思一個小項目玩玩,首先就是環境的選擇,因為我是在個人電腦上測試環境等等,首先考慮的就是資源利用的問題,例如分布式,集群等等。
  • Docker 使用 MySQL
    在 Docker 下部署 MySQL        在 Docker 下部署 MySQL 是很方便的,通過幾條命令就可以輕輕鬆鬆的下載鏡像並完成安裝部署。:latestdocker.io/library/mysql:latest         上面的命令是拉取最新的MySQL鏡像。
  • CentOS下安裝Docker及中間件
    使用官方源地址(比較慢)sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo使用國內的阿里雲源
  • 微服務中的容器技術---Docker(一),Docker的安裝和使用
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo> sed -i 's#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo> yum install docker-ce
  • 如何在Ubuntu中安裝Docker和運行 Docker容器
    Docker使用容器可以更輕鬆地創建,部署和運行應用程式。使用容器,開發人員(和系統管理員)可以使用運行應用程式所需的一切來打包應用程式 - 代碼,運行時,庫,環境變量和配置文件,並將它們作為一個包發送出去。 是的,真是太好了!在本文中,我們將向您展示如何安裝Docker CE(Community Edition),在Ubuntu發行版上創建和運行Docker容器。
  • Win10下安裝Docker集成Mysql(一)
    Docker默認IP位址為192.168.99.100三、Docker下安裝Mysql$ docker pull mysql #在docker下載並安裝鏡像命令(這裡是mysql)       Latest獲取mysql最後一個版本信息。下載完成後可以使用$ docker images來查看已獲取的鏡像文件。
  • Docker的介紹與安裝(基於centos)
    官方介紹    Docker是基於Go語言,並遵從 Apache2.0
  • docker在centos7中的安裝與使用
    安裝docker1.dockeryum install docker安裝完成後啟動dockerservice docker start4.查看版本:[root@localhost ~]# docker versionClient:Version: 1.12.6API version: 1.24
  • Linux安裝Docker與Docker常用命令
    容器是完全使用沙箱機制,相互之間不會有任何接口。前提條件在Linux上安裝Docker要求內核大於3.1,另外OpenVZ虛擬化不支持Docker查看Linux內核方法如下:#查看Linux內核版本uanme -r使用virt-what查看虛擬化架構:#CentOS安裝virt-whatyum -y install virt-what
  • 一文精通雲服務安裝JDK11/Mysql/Nginx/Docker/Compose/Node/Git/Rocketmq容器編排
    比如Docker是基於Linux 64bit的,無法在32bit的linux/Windows/unix環境下使用2、安裝依次運行以下命令添加yum源。>我們使用 Docker 的時候,定義 Dockerfile 文件,然後使用 docker build、docker run 等命令操作容器。