【Docker】04 部署MySQL
从官网上拉取最新MySQL镜像:
docker pull mysql:latest
创建并运行一个MySQL镜像的容器
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
即使该容器实例运行失败,也表示它是创建成功的,已经存在

命令参数的解释?
-itd
-d: 后台运行容器,并返回容器ID
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; --name mysql-test
设置该容器实例的名称标识 -p 3306:3306
映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务 -e MYSQL_ROOT_PASSWORD=123456 mysql
设置 MySQL 服务 root 用户的密码。
如果物理机的已经运行了本地安装的MySQL并占用了3306端口,应该更改为3307或者其他端口
【如果这个容器异常无法使用,直接移除容器重新创建即可】
移除容器实例:
docker rm mysql-test

修改端口设置并重新执行运行命令
docker run -itd --name mysql-test -p 3307:3307 -e MYSQL_ROOT_PASSWORD=123456 mysql

我们访问MySQL容器,需要先进入这个容器:
docker exec -it 容器名称标识 bash

这里刚刚进入MySQL容器马上就退出了
再次启动就报错说容器没有运行
百度得知容器实例是因为Linux内存导致的
使用指令查看内存
free -h

算了玩不了。。。
然后使用TOP命令查看Linux所有进程使用情况:

发现本地安装的MYSQL服务内存占用高的离谱,于是立刻停止服务了
重新创建运行容器实例,这回正常了:

输入密码123456,访问成功:

使用本机的SQLyog访问测试,记住是3307端口
发现错误2003代码:

很可能是因为防火墙没开放这个端口
先退出容器:

防火墙开放3307端口,重启之后再看看

但是还是没有用,可能因为MYSQL8.021版本远程用户需要创建新用户才可以使用
进入容器实例,进入MySQL:
更改加密规则:
ALTER USER 'root'@localhost IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
创建一个远程用户:
CREATE USER 'daizhizhou'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
然后赋予完整权限:
GRANT ALL PRIVILEGES ON *.* TO 'daizhizhou'@'%';

最后刷新权限:
flush privileges;
使用远程账号访问还是不行,但是到这里我才明白是因为之前设置的端口号原因导致的:
删除这个镜像应该使用这个端口配置,因为mysql默认3306端口,配置3307根本无法监听
所以需要由MySQL镜像的3306配置实际端口的3307:
docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
但是又有新的问题:

这个好解决,回到上面创建新的用户并赋予所有权限,然后刷新权限,访问即可

终于反应过来那个配置的解释的话,这样的话就可以本机mysql和容器mysql共存了
【Docker】04 部署MySQL的更多相关文章
- 在Centos上安装docker,部署mysql数据库
何为docker? Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 本机环境 24小时不关机的Centos ...
- 利用Docker快速部署Mysql
写在前面 我又来更新了~~~,今天内容较少,主要是利用Docker快速部署Mysql和初始化数据 利用Docker下载Mysql 简洁明了,在命令提示符中输入 docker pull mysql:8. ...
- docker stack 部署 mysql 5.6
=============================================== 2018/7/1_第1次修改 ccb_warlock === ...
- Docker容器部署Mysql数据库服务器
本节会用到的Docker命令如下: docker images 查看mysql镜像id docker run -d -p xxxxxxxxxxxxxxx/zhufc/mysql:v2 通过镜像生成 启 ...
- docker环境部署mysql
参考文档 docker官方:https://hub.docker.com/_/mysql/?tab=description 部署步骤 1. 拉取镜像 这里我拉取了tag为5.7的镜像 docker p ...
- 如何利用 docker 快速部署 Mysql 服务
docker 基础教程不再多说,这里只着重讲如何使用 docker 部署 mysql 服务 docker 拉取 访问 dockerhub,搜索关键词 mysql,我这里选择 mysql-server, ...
- docker 安装部署 mysql(配置文件启动)
获取 mysql 镜像 docker pull mysql:5.6 docker images 创建容器 创建宿主机 redis 容器的数据和配置文件目录 # 创建宿主机 redis 容器的数据和配置 ...
- 在docker上部署mysql
1.拉取官方镜像5.6的版本.(查看有哪些版本,可以在阿里云的镜像仓库查看,我配置的镜像是阿里云的) docker pull mysql:5.6 2.查看拉取的镜像,获取镜像id docker ima ...
- Docker windows nanoserver/mysql镜像root用户密码错误
由于需要在Windows server上的Docker中部署mysql服务,为了方便起见所以在Docker hub找到了nanoserver/mysql (https://hub.docker.com ...
- 群晖DS218+部署mysql
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- 《Android开发卷——自定义日期选择器(一)》
(小米手机) (中兴手机) 在实际开发中,Google官方提供的时间选择器API已经不能满足于我们的需要了,所以很多公司都是采用自定义的形式来实现日期选择器. 这个例子很简单,定义三个NumberPi ...
- MapStruct - 注解汇总
@Mapper @Mapper 将接口或抽象类标记为映射器,并自动生成映射实现类代码. public @interface Mapper { // 引入其他其他映射器 Class<?>[] ...
- JS 过滤掉两个数组中对象id值相等的项
const arr1 = [{ id: 1, name: '老二' }]; const arr2 = [{ id: 1, name: '网' }, { id: 2, name: '二位' },{ id ...
- idea编译报错 Lombok运行测试类报错 jar依赖冲突解决
idea编译报错 Lombok运行测试类报错 jar依赖冲突解决 1.现象是idea编译,运行项目的时候是没有问题,可以正常跑起来.2.运行junit测试类的时候,报错提示 lombok找不到类,解决 ...
- 用ESP8266-NodeMCU开发板显示一下我的QQ头像
诶,说好的自己写esp8266的开发板固件的我回来了. 20年说好的,今天回来还愿了 ESP8266串口WiFi模块 - WiFi杀手 今天我们把OLED显示屏也接上,我此次买的是4脚的OLED(12 ...
- resttemplate调用
Map<String, Object> queryForHttp(String url, Map<String, Object> header, Map<String, ...
- WPF 自定义泛型用户控件后跨程序集继承用户控件的解决方案
自定义泛型用户控件: <UserControl x:Class="ClassLibrary1.UcEumCmb" xmlns="http://schemas.mic ...
- metal invalid pixel format xx
这个时候要考虑CAMetalLayer.pixelFormat是否设置设置正确,虽然MTLPixelFormat有很多枚举值,但是CAMetalLayer支持的也就只有五个: MTLPixelForm ...
- sqlite相关
前言 本文记录一些sqlite相关笔记,随时更新. 正文 时间函数 datetime() -- 当前时间 2022-03-24 17:32:43 select datetime('now'); --2 ...
- JavaSE 计算2个List集合中的交集、差集、并集、去重并集
VideoOrder.java 重写里面的equals和hashCode方法 class VideoOrder { private int price; private String title; p ...