[mysql/docker] 基於Docker安裝MYSQL

千千寰宇發表於2024-03-16

0 序

  • 雖然關於 mysql 安裝的教程,先前已寫過很多期了(參見如下列表),但這期的安裝教程所依賴的環境還是大有不同的————基於 docker 環境。
  • [資料庫] MySQL之資料庫備份與升級:MySQL Percona(RPM) 5.7.24-27 升級到 5.7.31-34 - 部落格園/千千寰宇
  • [資料庫] Windows:安裝MySQL[解壓版的安裝/解除安裝] - 部落格園/千千寰宇
  • [資料庫] Ubuntu Linux之搭建遠端資料庫MySQL(全過程) - 部落格園/千千寰宇
  • docker / k8s 虛擬化/容器技術 的出現,大大提升了安裝部署的效率。與環境的解耦,以此成倍數地提升軟體交付/軟體部署的效率,是它最大的功績。

  • 好了,進入正題。

  • os : centos 7

這一點,無需關心,因為絕大多數情況下, docker 映象的使用者可以不太關心外部依賴(包括:作業系統)

  • docker 版本 : 25.0.3

不懂 docker 的同志,請參見:

  • [Docker] 基於CENTOS7安裝Docker環境 - 部落格園/千千寰宇
  • [Docker] Docker 基礎教程(概念/原理/基礎操作) - 部落格園/千千寰宇
  • [Docker] Docker Compose 基礎教程(概念/基礎操作) - 部落格園/千千寰宇
  • mysql 映象 : 5.7

2 安裝步驟

Step1 安裝 docker 環境

可參見本文

  • [Docker] 基於CENTOS7安裝Docker環境 - 部落格園/千千寰宇
  • 安裝 docker 映象
yum -y update

yum remove docker  docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum list docker-ce --showduplicates | sort -r
yum -y install docker-ce-25.0.3-1.el7
  • 檢視 docker 版本
docker version

  • 啟動/檢視/開機自啟動 docker 程序
systemctl start docker
systemctl status docker

# 開機自啟動
systemctl enable docker

Step2 安裝 mysql 映象/容器 | 基於 docker

  • 下載映象
docker pull mysql:5.7
# docker pull mysql:8

  • 檢視(下載的)映象
docker images

  • 建立資料儲存目錄

此舉是為了避免mysql映象停止執行後資料丟失,做到存算分離

  • /data/mysql/log:/var/log/mysql
  • /data/mysql/data:/var/lib/mysql
  • /data/mysql/conf.d:/etc/mysql/conf.d
  • /data/mysql/my.cnf:/etc/my.cnf
mkdir -p /data/mysql/log
mkdir -p /data/mysql/data
mkdir -p /data/mysql/conf.d
touch /data/mysql/my.cnf

ls /data/mysql
  • 設定 mysql root 使用者密碼
MYSQL_ROOT_PASSWORD=123456

echo ${MYSQL_ROOT_PASSWORD}
  • 建立、並啟動容器
docker run --name mysql \
--restart=always \
-p 3306:3306 \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf.d:/etc/mysql/conf.d \
-v /data/mysql/my.cnf:/etc/my.cnf \
-e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
-d mysql:5.7

注:第1個 3306 埠:是指宿主機的對映埠
注:第2個 3306 埠:是指容器的被對映埠

  • 檢視容器
docker ps -a

netstat -lntp | grep -i 3306

Step3 測驗:在宿主機中執行 mysql 容器 的 命令

  • 方法1
docker exec -it mysql bash
> mysql -uroot -p${MYSQL_ROOT_PASSWORD} --port=3306 -h127.0.0.1 -e 'show databases;'
> exit

注: MYSQL_ROOT_PASSWORD 也是 mysql container 的內建環境變數

  • 方法2:
docker exec -it mysql sh -c "mysql -uroot -p${MYSQL_ROOT_PASSWORD} --port=3306 -h127.0.0.1 -e 'show databases;'"

X 參考文獻/推薦文獻

  • Docker / Docker Compose
  • [Docker] 基於CENTOS7安裝Docker環境 - 部落格園/千千寰宇
  • [Docker] Docker 基礎教程(概念/原理/基礎操作) - 部落格園/千千寰宇
  • [Docker] Docker Compose 基礎教程(概念/基礎操作) - 部落格園/千千寰宇
  • [Docker] 基於CENTOS7的Docker版本升級 - 部落格園/千千寰宇
  • mysql 安裝教程
  • [資料庫] MySQL之資料庫備份與升級:MySQL Percona(RPM) 5.7.24-27 升級到 5.7.31-34 - 部落格園/千千寰宇
  • [資料庫] Windows:安裝MySQL[解壓版的安裝/解除安裝] - 部落格園/千千寰宇
  • [資料庫] Ubuntu Linux之搭建遠端資料庫MySQL(全過程) - 部落格園/千千寰宇
  • mysql 使用
  • [資料庫] MySQL之資料庫管理篇 - 部落格園/千千寰宇
  • [資料庫]MySQL之SQL查詢 - 部落格園/千千寰宇
  • [資料庫]MYSQL之儲存過程 - 部落格園/千千寰宇
  • Docker安裝MySQL資料庫 - 騰訊雲/程式設計師雲帆哥
  • 其他
  • [Docker] Docker之搭建部落格系統Solo - 部落格園/千千寰宇

相關文章