docker部署mysql

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: docker环境下部署mysql8.x和mysql5.x

一 Docker搭建MySql

1.1 Docker搭建MySQL5.7

拉取镜像

docker pull mysql:5.7   # 拉取 mysql 5.7

检查是否拉取成功

docker images

创建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
  • –name:容器名,这里命名为mysql
  • -e:配置信息,此处配置mysql的root用户的登陆密码
  • -p:端口映射,此处映射 主机3306端口 到 容器的3306端口
  • -d:后台运行容器,保证在退出终端后容器继续运行
  • -v:宿主机与docker容器目录做挂载

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

检查容器是否正确运行

docker ps
# 或者
docker container ls

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

本地使用Navicat链接MySql
image.png

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

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

FLUSH   PRIVILEGES;

image.png

下边的内容可以不做

进入运行MySQL的docker容器

docker exec ‐it mysql /bin/bash

使用MySQL命令打开客户端

 mysql ‐uroot ‐proot ‐‐default‐character‐set=utf8

创建mall数据库:

create database mall character set utf8

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

 yum ‐y install lrzsz

开机自动运行mysql容器

docker update --restart=always 容器id

关闭开机自动运行mysql容器

docker update --restart=no 容器id

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

1.2 Docker部署MySQL8.0.16

拉取镜像

docker pull mysql:8.0.16   # 拉取 mysql

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

mkdir -p /usr/docker/mysql/conf && mkdir -p /usr/docker/mysql/datadir

启动容器

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.16

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

docker cp mysql:/etc/mysql/my.cnf /usr/docker/mysql/conf

停止并删除容器

docker stop mysql && docker rm mysql

重新新建并启动容器

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

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

进入容器

docker exec -it mysql bash

进入mysql编辑命令界面

mysql -uroot -proot;

use mysql;

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

#使修改生效
flush privileges;

如果项目里报错如下:
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';

最后打开你的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

重启mysql即可;

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
70 24
|
17天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
95 26
|
1月前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
177 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
26天前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
47 5
|
25天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
29 2
|
1月前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
43 3
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
1月前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
1月前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
65 1

热门文章

最新文章