0 序

  • 虽然关于 mysql 安装的教程,先前已写过很多期了(参见如下列表),但这期的安装教程所依赖的环境还是大有不同的————基于 docker 环境。
  • docker / k8s 虚拟化/容器技术 的出现,大大提升了安装部署的效率。与环境的解耦,以此成倍数地提升软件交付/软件部署的效率,是它最大的功绩。

  • 好了,进入正题。

  • os : centos 7

这一点,无需关心,因为绝大多数情况下, docker 镜像的使用者可以不太关心外部依赖(包括:操作系统)

  • docker 版本 : 25.0.3

不懂 docker 的同志,请参见:

  • mysql 镜像 : 5.7

2 安装步骤

Step1 安装 docker | 基于 centos 7

可参见本文

  • 安装 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 | 基于 centos 7 + docker 25.0.3

  • 下载镜像
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
  • mysql 安装教程
  • mysql 使用
  • 其他

[mysql/docker] 基于Docker安装MYSQL的更多相关文章

  1. Docker——基于Docker安装Drupal博客系统

    Docker--基于Docker安装Drupal博客系统 向脚本文件追加内容 cat << EOF > build.sh #设置主机名 hostnamectl set-hostnam ...

  2. debian系列下c++调用mysql, linux下面安装mysql.h文件

    mysql.h的报错还没有解决,你们不用看了,等我解决了吧还不知道什么时候 先用c吧 #include <stdio.h> #include <stdlib.h> #inclu ...

  3. docker - 容器里安装mysql

    在docker中安装mysql ubuntu官方镜像是精简的ubuntu系统,很多软件和库没有安装,所以直接安装mysql的话依赖较多,建议直接从源码编译安装mysql 通过命令行安装 先启动一个容器 ...

  4. docker学习4-docker安装mysql环境

    前言 docker安装mysql环境非常方便,简单的几步操作就可以了 拉取mysql镜像 先拉取mysql的镜像,可以在docker的镜像仓库找到不同TAG标签的版本https://hub.docke ...

  5. Docker通过挂载安装mysql

    一.安装 mkdir -p ./docker/mysql cd docker/ cd mysql/ mkdir conf mkdir data mkdir logs  mkdir mysql-file ...

  6. Docker容器手动安装mysql(国内镜像)

    Docker手动安装mysql 1.创建centos镜像的容器 [root@localhost Tools]# docker run -i -d -h zabbix --name zabbix -p ...

  7. Docker学习之安装mysql

    1.从Docker检索mysql镜像 指令: docker search mysql 2.镜像下载 指令: docker pull mysql:5.7.19 3.查看本地镜像列表 指令: docker ...

  8. 使用docker 基于centos7制作mysql镜像

    说明:由于业务需要使用centos7.6+mysql5.7+jdk8以及其他的java程序,本想在网上找一个现成的,发现镜像都不适合我. 一.yum方式安装mysql 1.编写dockerfile文件 ...

  9. 基于镜像安装mysql

    准备目录 cd /opt mkdir -p mysql/data mysql/logs mysql/conf 查找MySql镜像版本 docker search mysql 安装指定版本的mysql镜 ...

  10. Flask+Mysql搭建网站之安装Mysql

    安装Mysql # sudo apt-get install mysql-server 安装过程需要输入root密码,这个密码是mysql 的root密码,之后连接mysql会用到,这个要记住. 安装 ...

随机推荐

  1. 一个关于用netty的小错误反思

    一个关于用netty的小认知 在使用netty时,观看了黑马的netty网课,没想就直接用他的依赖了 依赖如下 <dependency> <groupId>io.netty&l ...

  2. Linux-Shell 小数运算,四舍五入

    在shell中做小数运算,可以借助bc 或者awk工具 一.使用bc做小数运算,scale指定小数点位数 1.加法运算(scale参数无效) #echo "5.999 + 5.001&quo ...

  3. Linux-wget命令使用及参数详解

    wget简介 Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTT ...

  4. Python Rich:美化终端显示效果

    Rich库的功能就像它的名字一样,使Python编程更加丰富(rich),它帮助开发者在控制台(命令行)输出中创建丰富.多彩和具有格式化的文本. 本篇总结了如何使用Rich库让我们的命令行工具更加美观 ...

  5. 机器学习基础06DAY

    模型检验-交叉验证 一般在进行模型的测试时,我们会将数据分为训练集和测试集.在给定的样本空间中,拿出大部分样本作为训练集来训练模型,剩余的小部分样本使用刚建立的模型进行预测. 训练集与测试集 训练集与 ...

  6. BZOJ3156 防御准备 题解

    原题 令 \(S_{i} =\sum\limits_{j=1}^{i}j\) , \(f_{i}\) 为处理到第 \(i\) 个位置放置守卫塔的最小花费. 观察题意,容易得到在\((1 \le j \ ...

  7. NC20272 [SCOI2009]生日快乐

    题目链接 题目 题目描述 windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕.现在包括windy ,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积 ...

  8. C++ 多线程的错误和如何避免(7)

    要以相同顺序获取多个锁 多线程在加锁解锁时,可能会出现死锁问题,比如, 线程 1 在加锁 mutex A 后,继续尝试获取 mutex B,而 mutex B 已经被线程 2 获取,而线程 2 在等待 ...

  9. Miniconda安装和使用

    Miniconda概述 Miniconda是什么? 要解释Miniconda是什么,先要弄清楚什么是Anaconda,它们之间的关系是什么? 而要知道Anaconda是什么,最先要明白的是搞清楚什么是 ...

  10. 看看 ChatGPT 给的前端面试题

    以下是一些可能出现在中国互联网公司前端开发工程师面试中的题目: 解释一下 CSS 盒模型,并说明其中的各个部分. 请解释一下响应式设计是什么,以及你是如何实现响应式设计的. 什么是跨域资源共享(COR ...