Docker 安装 MySQL8.0

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Docker 安装 MySQL8.0


一、搜索拉取镜像

docker search mysql
docker pull mysql #不写版本号 默认拉取最新版本
docker pull mysql:8.0.21 #写版本号,则拉取确定的版本

1704465185922.jpg

二、查看镜像

docker images

1704465188060.jpg

三、启动镜像

docker run  -d  \
--name mysql8 \
--privileged=true \
--restart=always \
-p 3310:3306 \
-v /home/mysql8/data:/var/lib/mysql \
-v /home/mysql8/config:/etc/mysql/conf.d  \
-v /home/mysql8/logs:/logs \
-e MYSQL_ROOT_PASSWORD=123456 \
-e TZ=Asia/Shanghai mysql \
--lower_case_table_names=1

记住 `` 后面不能有空格,不然会提前执行命令,导致执行失败,已踩坑。

1704465192112.jpg

命令看起来很长,但其实分析起来是非常简单的。

  • --name mysql8:给容器命名
  • --privileged=true
  • --restart=always:服务器启动时,自启动
  • -p 3310:3306:端口映射,第一个 3310 是映射出去的端口,第二个 3306 是这个容器的端口
  • 远程访问:IP 地址:3310 即可,如果是本地虚拟机就是 虚拟机 IP:3310
  • 注意:服务器上记得打开安全组,虚拟机上则记得注意防火墙
  • -v /home/mysql8/data:/var/lib/mysql:文件挂载, : 前为宿主机的目录位置,后为容器内文件对应位置
  • -e MYSQL_ROOT_PASSWORD=123456:环境变量设置,此处是设置 ROOT 用户登录密码
  • -e TZ=Asia/Shanghai mysql:此处是设置 MySQL 的时区,请注意这点,有时候你可能会发现你的服务器时区和你当前的电脑的时区是不一样的,这很有可能有一些隐藏问题噢。此处的 mysql为镜像名。
  • --lower_case_table_names=1:让表名忽略大小写

补充:

--lower_case_table_names=1    :忽略大小写,docker mysql默认区分大小写的
注:参数顺序一定要对,--lower_case_table_names=1要加在镜像名后面,镜像名前面是参数,后面是mysql配置

查看MySQL官方文档,有记录:

lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.

另外只有在初始化的时候设置 lower_case_table_names=1 才有效

四、检查启动情况

1.查看镜像

docker ps  # 查看所有正在运行的容器
docker ps -a  #-a 表示查看所有容器 包括未删除的历史容器

1704465209691.jpg

2.查看日志

docker logs [容器名|容器id] #查看容器的执行日志

1704465319482.jpg

查看实时日志

docker logs  [容器名|容器id] -f

具体的参数有几个:

--details        Show extra details provided to logs
-f, --follow     Follow log output
--since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string    Number of lines to show from the end of the logs (default "all")
-t, --timestamps     Show timestamps
--until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-f / --follow 跟踪输出日志
--since  显示自时间戳(例如2013-01-02T13:23:37Z)或相对(例如42分钟为42m)开始的日志 
-- details 显示提供给日志的额外详细信息 
-n, --tail  从日志末尾开始显示的行数(默认为"all")
-t,-- timestamps 显示时间戳
--until 显示时间戳(如2013-01-02T13:23:37Z)或相对(如42分钟42m)之前的日志

3.容器交互

像这种简单的,就是用来测试的,像是启动个 centos 的容器,进去还可以玩的更好。

docker exec -it [容器名|容器id] bash

1704465290224.jpg

以往在 mysql 5.0的时候,大家还会去说支持以下远程连接,但是在docker中,其实它是默认支持远程连接的。

所以其实可以不用执行下面的命令,也可以远程连接。

进入容器的目的是让mysql支持远程连接,

我在网上看到有些人说,默认支持远程连接,但是我测试了,行不通,还是需要通过以下命令修改:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

1704465278978.jpg

flush privileges;

1704465241526.jpg

连接测试,注意我开放的端口就是3310,并非3306哈,记得开安全组规则。


4.遇到错误

[root@crush mysql8]# docker run -it -d --name=mysql8  -v /home/mysql8/data/:/var/lib/mysql -v /home/mysql8/config/:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql --lower_case_table_names=1
9bc3479694ce1356c81b5caba3dcafb85b25dc93abb50cca5a29b0172dba8adf
[root@crush mysql8]# docker logs 9bc
2022-07-14 13:24:37+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started.
2022-07-14 13:24:37+08:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
  command was: mysqld --lower_case_table_names=1 --verbose --help --log-bin-index=/tmp/tmp.AYT8xnMNTv
  mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory)
mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 36.
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

1704465249190.jpg

原因因为 Centos7 安全给 linux禁止了一些安全权限,导致mysql和mariadb在进行挂载/var/lib/mysql的时候会提示如下信息。

解决方法在docker run中加入 --privileged=true 给容器加上特定权限。


其实还遇到一个小问题,但是没有找到产生的原因,解决的方式也很玄学......

出错了的话,就是暂停删除。

docker stop [容器名|容器ID]
docker rm [容器名|容器ID]

五、自言自语

今天想弄两个版本的mysql,准备再重新学习 mysql,所以就在服务器上整了个8.0的版本的。

这篇严格说起来算是复习篇。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11天前
|
缓存 Ubuntu Linux
Docker Buildx 简介与安装指南
Docker Buildx 是一个强大的工具,提供了多架构构建、并行构建和高级缓存管理等功能。通过正确安装和配置 Buildx,可以显著提升 Docker 镜像的构建效率和灵活性。希望本文能帮助你更好地理解和使用 Docker Buildx,以提高开发和部署的效率。
127 16
|
9天前
|
存储 虚拟化 Docker
Docker Desktop 4.38 安装与配置全流程指南(Windows平台)
Docker Desktop 是容器化应用开发与部署的一体化工具,支持本地创建、管理和运行 Docker 容器。4.38 版本新增 GPU 加速、WSL 2 性能优化和 Kubernetes 1.28 集群管理功能,适用于微服务开发和 CI/CD 流水线搭建。安装要求为 Windows 10 2004 及以上(64 位),需启用 Hyper-V 或 WSL 2。硬件最低配置为 4GB 内存、20GB 存储和虚拟化技术支持的 CPU。安装步骤包括启用系统功能、下载并运行安装程序,完成后配置镜像加速并验证功能。常见问题涵盖 WSL 2 安装不完整、磁盘空间清理及容器外网访问等。
805 12
|
1月前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
175 42
|
9天前
|
弹性计算 运维 Ubuntu
在阿里云ECS云服务器上安装、配置及高效使用Docker与Docker Compose
本文介绍了在阿里云ECS上使用Ubuntu系统安装和配置Docker及Docker Compose的详细步骤。通过这些工具,可以快速部署、弹性扩展和高效管理容器化应用,满足开发和运维需求。内容涵盖Docker的安装、镜像源配置、创建Web程序镜像以及使用Docker Compose部署WordPress等实际操作,并分享了使用体验,展示了阿里云实例的高性能和稳定性。
158 4
|
1月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
81 20
|
1月前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
354 15
|
2天前
|
Ubuntu Linux Docker
如何在Ubuntu 20.04系统中安装Docker
安装 Docker 引擎的步骤如下:首先更新系统包索引 (`sudo apt update`),安装必要依赖包 (`apt-transport-https` 等),添加 Docker 官方 GPG 密钥及 APT 仓库。接着再次更新包索引并安装 Docker 引擎及相关工具 (`docker-ce` 等)。最后启动 Docker 服务并设置开机自启,通过 `docker --version` 和运行测试容器 (`sudo docker run hello-world`) 验证安装是否成功。
29 0
|
1月前
|
消息中间件 Kafka Docker
docker compose 安装 kafka
通过本文的步骤,您可以快速在本地使用 Docker Compose 安装并配置 Kafka 和 Zookeeper。Docker Compose 简化了多容器应用的管理,方便快速搭建和测试分布式系统。
97 2
|
10月前
|
Ubuntu 网络安全 数据安全/隐私保护
百度搜索:蓝易云【docker通过dockerfile安装sftp教程。】
现在,你已经通过 Dockerfile 成功安装了 SFTP,并且可以使用指定的用户名和公钥进行远程访问。请确保替换示例中的用户名、密码和公钥为自己的实际值。
209 1
|
4月前
|
缓存 Linux Docker
【最新版正确姿势】Docker安装教程(简单几步即可完成)
之前的老版本Docker安装教程已经发生了变化,本文分享了Docker最新版安装教程,其他操作系统版本也可以参考官 方的其他安装版本文档。
4707 3
【最新版正确姿势】Docker安装教程(简单几步即可完成)