记录我在Docker 中一步一步搭建Mysql 数据库存开发环境
准备在docker下来搭建mysql开发环境玩玩,当作学习笔记。搭建环境是:win10 企业版,docker desktop 19.03.8,mysql 5.7,Windows PowerShell
首先从 https://hub.docker.com/_/mysql/#! 可以查看到支持的各种mysql 版本的镜像,如图,这里选了mysql 5.7版。

下载镜像 docker pull mysql:5.7
创建容器 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
进入容器 docker exec -it mysql bash
登录mysql mysql -uroot -p123456

看到了欢迎信息,登录成功!执行一行简单命令看看 show databases;

ok,没有问题,现在就可以使用 Navicat 等可视化工具连接使用了,如果你命令使用的很牛逼,也可以直接开始敲命令。
到此你以为就大功告成了吗?其实远没有,下面开始踩坑之路:

看这报错竟然表不存在,mysql在windows下表名是不区分大小写的,在linux下是区分大小写的。因为使用docker的是linux镜像,所以报了这个错。
接下来开始解决这个问题,如果没有使用docker那很简单,直接修改配置文件就好了,在docker下稍微麻烦一点。
使用 show global variables like '%lower_case%'; 查看一下默认配置 lower_case_table_names=0,如图:

现在需要把 lower_case_table_names 改成 1 。这个时候需要先 Ctrol +D退出到docker 容器

然后通过使用 linux 的vim 工具来修改配置文件,这个时候会发又需要安装 vim ,直接执行 apt-get install vim 安装还会报错 “Unable to locate package vim”。
需要先执行 "apt-get update" 更新完一堆包后,再执行 “apt-get install -y vim” ,稍等片刻,等待安装完成,因为我这里是来回切换了几个步骤没有把安装 vim的过程截图保存下来,就上不了图了。
下面开始修改配置文件
执行 vi /etc/mysql/mysql.conf.d/mysqld.cnf 命令出现下图

这里敲 E 选择 Edit anyway 进入下图

在红框中加入 lower_case_table_names=1 ,编辑完之后,不要乱操作,很容易让界面死掉。然后 Esc 键,注意看左下角,再输入 : wq 保存并退出
到此,配置文件修改完毕,Ctrol +D退出mysql容器,再重新启动容器 docker restart mysql 让配置生效,进入mysql后执行 show global variables like '%lower_case%';

可以看到值已经是 1 了,这时再来执行一条查询语句验证有没有问题

ok,终于成功了,到此几番周折终于大功告成。
我觉得Docker是世界上伟大的发明,有了docker实在太方便了,需要什么就装什么,当然前提是你需要熟悉docker之后。
记录我在Docker 中一步一步搭建Mysql 数据库存开发环境的更多相关文章
- Docker 快速搭建 MySQL 5.6 开发环境
使用 Docker 快速搭建一个 MySQL 5.6 开发环境 步骤 获取镜像 docker pull mysql:5.6 启动容器,密码 123456,映射 3306 端口 docker run - ...
- 【搭建开发环境】在 Windows XP 中参与开源项目,搭建 git 和 cygwin 开发环境
引言 只有一台 Windows XP 家用机,却想在诸如 Git@OSC 之类的开源社区参与开发,本文提供一个入门级的开发环境搭建指引. 涉及工具:Eclipse,EGit,Cygwin. 欢迎来到 ...
- mac系统中搭建apache+mysql+php的开发环境,安装mysql后,登录报错:mac ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
php新手在mac系统中搭建apache+mysql+php的开发环境(按照这篇博客来操作的:http://my.oschina.net/joanfen/blog/171109?fromerr=xvC ...
- docker中使用源码方式搭建SRS流媒体服务
一.背景 搭建流媒体服务的方式一般会采用nginx+rtmp和srs服务两种,前者是nginx加上插件所用,而后者是专门为了为了流媒体而生,在这一节中我们将从头搭建srs流媒体服务 二. 运行环境 为 ...
- 使用 Docker 秒速搭建多版本 PHP 开发环境
目录 目标 下载 代理设置 配置环境 PHP 7.2.x,占用本地端口 8081 PHP 5.6.x,占用本地端口 8082 端口映射 local.php72.com -> 127.0.0.1: ...
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)
cocos2d-x 3.0发布有一段时间了,作为一个初学者,我一直觉得cocos2d-x很坑.每个比较大的版本变动,都会有不一样的项目创建方式,每次的跨度都挺大…… 但是凭心而论,3.0RC版本开始 ...
- PHP引号转义中解决POST,GET,Mysql数据自动转义问题
在处理mysql和GET.POST的数据时,常常要对数据的引号进行转义操作. PHP中有三个设置可以实现自动对’(单引号),”(双引号),\(反斜线)和 NULL 字符转转. PHP称之为魔术引号,这 ...
- Kettle ETL 来进行mysql 数据同步——试验环境搭建(表中无索引,无约束,无外键连接的情况)
今天试验了如何在Kettle的图形界面(Spoon)下面来整合来mysql 数据库中位于不同数据库中的数据表中的数据. 试验用的数据表是customers: 第三方的数据集下载地址是:http://w ...
- win7下docker环境搭建nginx+php-fpm+easyswoole开发环境
基础的环境已在文章nginx.php-fpm.swoole HTTP/TCP压测对比中搭建了,现在是在这个基础上在搭建easyswoole开发环境 主要要修改的地方是dnmp包里面的docker-co ...
随机推荐
- USACO Training Section 1.2 双重回文数 Dual Palindrom
题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就 ...
- 如何找到Hive提交的SQL相对应的Yarn程序的applicationId
最近的工作是利用Hive做数据仓库的ETL转换,大致方式是将ETL转换逻辑写在一个hsql文件中,脚本当中都是简单的SQL语句,不包含判断.循环等存储过程中才有的写法,仅仅支持一些简单的变量替换,比如 ...
- Web 跨域请求问题的解决方案- CORS 方案
1.什么是跨域 跨域是指跨域名的访问,以下情况都属于跨域: 跨域现象 实例 域名不相同 www.baidu.com与www.taobao 一级域名相同,但是端口不相同 www.baidu.com:80 ...
- jacoco 生成单测覆盖率报告
一.jacoco 简介 jacoco 是一个开源的覆盖率工具,它针对的开发语言是 java.其使用方法很灵活,可以嵌入到 ant.maven 中:可以作为 Eclipse 插件:可以作为 javaAg ...
- B - Planning 早训 贪心
B - Planning 这个题目我知道要贪心,也知道怎么贪,但是写不出来,感觉自己好菜. 这个题目要用优先队列维护. 题目大意是飞机延误,不同的飞机每次延误一分钟,它的代价不同,然后问,怎么安排才能 ...
- CC2530ADC转换
一.ADC简介 ADC支持 14 位的模拟数字转换,具有多达12 位的 ENOB(有效数字位).它包括一个模拟多路转换器,具有多达8 个各自可配置的通道,以及一个参考电压发生器.转换结果通过DMA写入 ...
- HMM-前向后向算法
基本要素 状态 \(N\)个 状态序列 \(S = s_1,s_2,...\) 观测序列 \(O=O_1,O_2,...\) \(\lambda(A,B,\pi)\) 状态转移概率 \(A = \{a ...
- BufferedInputStream:字节缓冲输入流
package com.itheima.demo01.BufferedStream; import java.io.BufferedInputStream; import java.io.FileIn ...
- 关于fromdata的上传文件问题
<div <label>上传pdf</label> <input id="fileId" type="file" accep ...
- python 基础应用5-简单购物车
1.列表去重 #列表去重 li = [1,2,33,33,2,1,4,5,6,6] set1 = set(li)# 转为集合 li = list(set1)# 转为列表 print(li)#[1, 2 ...