Docker下MySQL的安裝


1 概述

本文講述了如何利用Docker去安裝MySQL,以及MySQL自定義配置文件的相關設置。

2 安裝Docker

首先安裝Docker並開啟服務:

systemctl start docker

如果沒有添加國內源的話建議添加一下,新增/修改/etc/docker/daemon.json,添加如下內容:

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

這里用的是網易的源,其他源如下:

  • Docker中國區官方鏡像:https://registry.docker-cn.com
  • ustchttps://docker.mirrors.ustc.edu.cn
  • 中科大:https://docker.mirrors.ustc.edu.cn
  • 阿里雲:每個人不同,需要到阿里雲容器服務創建,具體請查看文檔

3 拉取MySQL鏡像

docker pull mysql:latest

權限不夠請加sudo,另外這一步需要一點時間,請耐心等待。

拉取完成后可以查看鏡像:

docker images

在這里插入圖片描述

4 運行容器

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

參數說明:

  • -i:以交互模式運行,通常配合-t
  • -t:為容器重新分配一個偽輸入終端,通常配合-i
  • -d:后台運行容器
  • -p:端口映射,格式為主機端口:容器端口
  • -e:設置環境變量,這里設置的是root密碼
  • --name:設置容器別名

在這里插入圖片描述

運行之后會返回一個容器ID

5 測試

先查看運行狀態:

docker ps 

在這里插入圖片描述

接着連接到容器的偽終端上:

docker exec -it mysql-latest /bin/bash

其中mysql-latest是執行運行命令時創建的別名,同時使用mysql測試連接:

mysql -u root -p

輸入環境變量傳遞的root密碼后就可以連接上MySQL了:

在這里插入圖片描述

也可以在IDEA中添加MySQL數據源並測試連接:

在這里插入圖片描述

6 配置文件

一般來說僅僅安裝完MySQL是不夠的,還需要自定義一些配置文件,自定義配置文件有兩種方法,一種是進入容器並修改里面的my.cnf,另一種是容器啟動的時候使用-v參數掛載配置文件的目錄。

6.1 容器內修改

首先進入容器:

docker exec -it mysql-latest /bin/bash

請把mysql-latest修改為對應的容器別名,進入后可以通過

mysql --help | grep my.cnf

查看配置文件的位置:

在這里插入圖片描述

這幾個文件存在讀取順序,可以使用

mysqld --verbose --help --pid-file=/var/run/mysqld/mysqld.pid | grep -A 1 "Default options"

查看:

在這里插入圖片描述

這里修改的是/etc/mysql/my.cnf,但是。。。

在這里插入圖片描述

沒有vim?關系不大先用vi將就一下:

在這里插入圖片描述

當時就人傻了居然vi都沒有,行,關系不大,安裝就行了:

在這里插入圖片描述

這都什么玩意。。。包都搜不到。。。

查看了一下系統的版本,是Debian 10

在這里插入圖片描述

於是就找了對應的源:

deb http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb http://mirrors.aliyun.com/debian-security buster/updates main
deb-src http://mirrors.aliyun.com/debian-security buster/updates main
deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib

先備份:

cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后修改添加即可:

vim /etc/apt/sources.list

但是沒有這個命令。。。

沒辦法了手動echo添加:

echo deb http://mirrors.aliyun.com/debian/ buster main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib deb http://mirrors.aliyun.com/debian-security buster/updates main deb-src http://mirrors.aliyun.com/debian-security buster/updates main deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib > sources.list

在這里插入圖片描述

然后更新:

apt update
apt upgrade

安裝vim

apt install vim

接着修改配置文件即可:

vim /etc/mysql/my.cnf

下面是示例常用參數:

[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

6.2 運行容器時掛載

先查看一下原來容器的字符集:

show variables like '%character%';

在這里插入圖片描述

未修改之前的字符集如圖,下面使用-v參數掛載配置文件目錄並對字符集進行修改,首先先把原來的容器停止掉,以免端口占用:

docker stop mysql-latest

接着在宿主機目錄/etc/mysql下創建一個配置文件my.cnf

vim /etc/mysql/my.cnf
# 添加如下內容
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

重新創建並運行容器,並同時掛載目錄:

docker run -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /etc/mysql:/etc/mysql/conf.d --name mysql mysql

其中-v參數是掛載宿主機的一個目錄,把宿主機的一個目錄掛載到容器上,注意需要修改--name,不允許重復。

根據官網文檔(鏈接戳這里),默認的配置文件位置為/etc/mysql/my.cnf,自定義的配置文件位置可以為/etc/mysql/conf.d/etc/mysql/mysql.conf.d,因此將宿主機的/etc/mysql掛載到容器的/etc/mysql/conf.dMySQL會自動合並默認的配置文件/etc/mysql/my.cnf與自定義的配置文件(這里是/etc/mysql/conf.d/my.cnf)。

在這里插入圖片描述

再次進入容器查看字符集:

在這里插入圖片描述

可以看到字符集被修改為了utf8bm4

7 參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM