Docker安装MySQL5.7

Docker安装MySQL5.7

一、拉取MySQL5.7镜像

bash 复制代码
$ docker pull mysql:5.7
# 等待镜像拉取完成
$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
mysql        5.7       5107333e08a8   5 months ago   501MB

二、快速启动一个MySQL容器

bash 复制代码
$ docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

$ docker ps

CONTAINER ID   IMAGE       COMMAND                  CREATED        STATUS         PORTS                                                  NAMES
812f56f8f239   mysql:5.7   "docker-entrypoint.s..."   4 seconds ago   Up 4 seconds   33060/tcp, 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   mysql

参数解析:

  • -i:以交互模式运行容器,并保持终端激活。
  • -t(--tty):为容器分配一个伪终端。
  • -d(--detach):以后台模式运行容器,并返回容器ID
  • -p(--publish):发布容器端口到主机端口。常用:端口映射到宿主机
  • --name:为容器指定一个名称。

三、挂载数据卷方式启动MySQL容器

1.创建数据挂载目录

bash 复制代码
$ mkdir -p /opt/software/mysql/mysql-01/conf
$ touch /opt/software/mysql/mysql-01/conf/my.cnf
$ mkdir -p /opt/software/mysql/mysql-01/data
$ mkdir -p /opt/software/mysql/mysql-01/logs

2.编写my.cnf配置文件

mysqld

skip-host-cache

skip-name-resolve

datadir=/var/lib/mysql

socket=/var/run/mysqld/mysqld.sock

secure-file-priv=/var/lib/mysql-files

user=mysql

symbolic-links=0

pid-file=/var/run/mysqld/mysqld.pid

client

socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mysql.conf.d/

3.挂载启动容器

bash 复制代码
$ docker run -p 3306:3306 --name mysql-01 --restart=always --privileged=true \
-v /opt/software/mysql/mysql-01/logs:/var/log/mysql \
-v /opt/software/mysql/mysql-01/data:/var/lib/mysql \
-v /opt/software/mysql/mysql-01/conf/my.cnf:/etc/my.cnf \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

参数解析:

  • --restart=always:总是跟随docker启动
  • --privileged=true:获取宿主机root权限
  • -e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
  • -v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器

4.查看容器状态,测试链接

bash 复制代码
$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

9416e7e20cde mysql:5.7 "docker-entrypoint.s..." 13 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql-01

bash 复制代码
$ docker logs mysql-01

2024-05-23T09:02:28.555882Z 0 Note Event Scheduler: Loaded 0 events

2024-05-23T09:02:28.556181Z 0 Note mysqld: ready for connections.

Version: '5.7.44' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)

bash 复制代码
$ docker exec -it mysql-01 mysql -uroot -p123456

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit

Bye

相关推荐
Zenova EdgeOS4 分钟前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
九皇叔叔6 分钟前
K8S 资源菜单
docker·容器·kubernetes·k8s
金士顿15 分钟前
System.Text.Json Source Generator 深度解析:为什么 Native AOT 不喜欢反射
linux·asp.net core·arm64·net·native aot
wdfk_prog1 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros
做运维的阿瑞1 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
百万蹄蹄向前冲2 小时前
密码都对Node.js却连不上Linux数据库
linux·mysql
彧azz2 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
zoutao982 小时前
Gitea Actions 自定义 Runner 镜像与自动化部署实战
ci/cd·docker·gitea
日常筹谋记2 小时前
自动化仓储安全防护工况评估:明治传感器AS-33C技术适配性分析
大数据·运维·创业创新·业界资讯
susplus3 小时前
【ARM 裸机开发 (IMX6ULL-mini)】GNU工具、Makefile 工程构建、链接脚本详解|C 语言点灯 + 蜂鸣器驱动
linux·arm·makefile·imx6ull