docker部署mysql

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: docker环境下部署mysql8.x和mysql5.x

一 Docker搭建MySql

1.1 Docker搭建MySQL5.7

拉取镜像

docker pull mysql:5.7   # 拉取 mysql 5.7
AI 代码解读

检查是否拉取成功

docker images
AI 代码解读

创建MySql容器

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
# 或者   -v:配置数据卷

docker run -p 3306:3306 --name=mysql --privileged=true -v /mysql/data:/var/lib/mysql -v /mysql/log:/var/log/mysql -v /mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  -d mysql:5.7
AI 代码解读
  • –name:容器名,这里命名为mysql
  • -e:配置信息,此处配置mysql的root用户的登陆密码
  • -p:端口映射,此处映射 主机3306端口 到 容器的3306端口
  • -d:后台运行容器,保证在退出终端后容器继续运行
  • -v:宿主机与docker容器目录做挂载

如果报错invalid reference format,可能是因为复制后格式不对导致的,需要手动敲一下命令,尤其是里边的横杠;

检查容器是否正确运行

docker ps
# 或者
docker container ls
AI 代码解读

可以看到容器ID,容器的源镜像,启动命令,创建时间,状态,端口映射信息,容器名字
image.png

本地使用Navicat链接MySql
image.png

配置用户名是root,密码是root的用户可以远程连接可(不配置的话,项目启动报错,但是navicat可以连接)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

FLUSH   PRIVILEGES;
AI 代码解读

image.png

下边的内容可以不做

进入运行MySQL的docker容器

docker exec ‐it mysql /bin/bash
AI 代码解读

使用MySQL命令打开客户端

 mysql ‐uroot ‐proot ‐‐default‐character‐set=utf8
AI 代码解读

创建mall数据库:

create database mall character set utf8
AI 代码解读

安装上传下载插件,并将document/sql/mall.sql上传到Linux服务器上:

 yum ‐y install lrzsz
AI 代码解读

开机自动运行mysql容器

docker update --restart=always 容器id
AI 代码解读

关闭开机自动运行mysql容器

docker update --restart=no 容器id
AI 代码解读

使用select now();命令,发现日期不对,那是因为容器与宿主机时间没做同步,可以参考下边文章解决查看1.4章节

1.2 Docker部署MySQL8.0.16

拉取镜像

docker pull mysql:8.0.16   # 拉取 mysql
AI 代码解读

新建目录用来存放配置文件和目录

mkdir -p /usr/docker/mysql/conf && mkdir -p /usr/docker/mysql/datadir
AI 代码解读

启动容器

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.16
AI 代码解读

把容器里的配置文件复制出来

docker cp mysql:/etc/mysql/my.cnf /usr/docker/mysql/conf
AI 代码解读

停止并删除容器

docker stop mysql && docker rm mysql
AI 代码解读

重新新建并启动容器

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --mount type=bind,src=/usr/docker/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf --mount type=bind,src=/usr/docker/mysql/datadir,dst=/var/lib/mysql --restart=on-failure:3 -d mysql:8.0.16
AI 代码解读

解决navicat连接mysql8.x报错问题

进入容器

docker exec -it mysql bash
AI 代码解读

进入mysql编辑命令界面

mysql -uroot -proot;

use mysql;

ALTER USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'root';

#使修改生效
flush privileges;
AI 代码解读

如果项目里报错如下:
of SELECT list is not in GROUP BY clause and contains nonaggregated column .........

解决办法:
解决方式:执行以下sql

set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
AI 代码解读

最后打开你的my.ini(mysql8.x版本后是my.cnf文件)文件在[mysqld] 下面加上:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
AI 代码解读

重启mysql即可;

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
1
0
0
31
分享
相关文章
Docker环境下快速部署RabbitMQ教程。
就这样,你成功地用魔法召唤出了RabbitMQ,还把它和你的应用程序连接了起来。现在,消息会像小溪流水一样,在你的系统中自由流淌。别忘了,兔子们不喜欢孤独,他们需要你细心的关怀,不时地监控它们,确保他们的世界运转得井井有条。
98 18
MAZANOKE:一款隐私优先的浏览器图像优化工具及Docker部署指南
MAZANOKE 是一款简易的图片优化工具,它直接在浏览器中运行,支持离线使用,并确保您的图片始终保留在设备上,绝不外泄。 这款专为普通人设计的工具,适合与亲友分享使用,是那些来路不明的"免费"在线工具的可靠替代品。
50 1
MAZANOKE:一款隐私优先的浏览器图像优化工具及Docker部署指南
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
212 18
【赵渝强老师】数据库不适合Docker容器化部署的原因
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
95 12
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
206 41
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
273 17
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
84 18
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
100 10
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
135 10
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
183 28
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等