赞
踩
最近做DBA,入职第二周老大就说让我在一台测试服务器上安装配置MySQL,之前工作一年半也就是用用sql select、update一下数据,其他基本没用过,然后一脸懵逼。不过老板交代的事总要做,然后这几天就开始学习Linux,了解docker和mysql安装。
经过各种查询,发现网上没有对新手的docker安装mysql一个完整的文档,大神们都是哪里报错说哪里,对于新手哪里看得懂啊,这次完成了mysql安装后觉得闲的没事,就写一下这次安装经过和大家一起分享下。
这次安装MySQL ,环境是centos 7.0, 系统和docker是另外的运维同事部署安装好的,所以我就不分享这部分安装(其实是不知道)
下边开始进入正题啦,首先在docker上部署MySQL前,我们要下载MySQL 镜像:
命令: docker pull MySQL(这个命令不会限制版本,会按照docker上mysql最新版本进行下载,如果要限定mysql版本,命令是:docker pull MySQL:5.7 这里我们下载的是MySQL 5.7版本)这里作为小白我出过一次错,拉取了MySQL 8.0安装,然后navicat远程各种连不上,大神们都说8.0密码验证方式不同要修改,经各种修改都没连上,后来直接放弃了卸载后重装了5.7版
pull在官网上下载其实很慢的,我这里用的是在网易163上下载的5.7 再改了名,163下载命令如下:
docker pullhub.c.163.com/library/mysql:5.7
镜像下载下来是带了很长一串名字,我们查看下载下来的镜像可用命令:
docker images
发现是不是名字很长?我们修改下镜像名:
docker taghub.c.163.com/library/mysql:5.7 mysql:5.7 翻译过来就是我把 巴拉巴拉一串名字改成了 MySQL5.7
你问我为啥我们要改名?因为后续用镜像的时候要打名字啊,难道你准备手打 巴拉巴拉一串?
163下载速度很快,分分钟搞定后,我们就可以准备启动镜像安装MySQL啦,
启动docker命令:
docker run--name db001 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mytest -d mysql:5.7
翻译过来就是 创建并运行 docker 命名本次创建容器名称为 db001 把容器中的3306端口映射到主机3306端口
设置MySQL root账户密码为mytest 启动的镜像是名称为MySQL:5.7 的镜像(这里就是重命名的好处)
跑一会服务起来了后;我们就可以查看docker 镜像运行情况了:
docker ps
这就是我们新建的MySQL ,理论这里就结束了,实际上有个大坑,会导致我们需要删掉这个MySQL重新安装过。
这里我们安装完MySQL后MySQL的服务和存储挂载全都是在容器中的,那么万一容器down了一次,内容就会消失掉,所以,我们不能把数据库的内容放到docker上,我们只能把程序放在docker中跑,数据要放到宿主机。经过各种查询,我还没有找到在docker中已经安装完后的情况下把存储路径挂载到宿主及,那么我就只能删掉这个服务重新安装设置了;
删除docker 中的MySQL服务前,我们要先停掉删:
停止命令:
Dockerstop mysql5.7
删除容器:
docker rm fb087642b497(镜像ID)
接下来我们再重新安装一遍:
在安装之前我们已经知道要将MySQL服务挂载到宿主机上了,那么挂载到哪个位置能?不确定的情况下我们就自己新建个文件夹,然后把服务挂载到我们新建的文件夹中:
mkdir /data
mkdir /data/MySQL
mkdir /data/MySQL/datadir
新建了三个文件夹,层级关系,我们最后把存储路径放到mydata下,同样的我们在MySQL文件夹中新建个文件夹放配置文件:
mkdir /data/mysql/conf.d
好我们已经在宿主机新建了两个文件夹来放数据,那么我们重新来安装一遍;
# docker run --name mysql5.7 -p 3306:3306 -v/data/mysql/datadir:/var/lib/mysql -v /data/mysql/conf.d:/etc/mysql/conf.d -eMYSQL_ROOT_PASSWORD=Mytest -d mysql:5.7
这句话就是完美安装,翻译过来就是 新建运行并取名为一个mysql5.7的docker服务 把端口映射到3306 MySQL存储路径放到新建的datadir文件夹中,把配置文件放到conf.d中(这里的/var.... 和/etc ....是docker服务默认位置,一重启就没了,所以我们要换掉),定义root账户密码为Mytest, 运行镜像是MySQL:5.7。
查看运行状态:
docker ps
进入docker:
docker exec-it e1066fe2db35 /bin/bash 翻译过来就是 进入这个docker服务 /bin/bash 的意思是进入之后状态是交互状态(可以打命令而不是仅查看)
是不是角色变了?
然后我们进入MySQL :
mysql -uroot -p -h localhost 敲回车后要求你输入root账户密码,你输入密码的时候是黑框,不显示的,不要以为你键盘坏了
密码输入正确后就进入MySQL啦,输入的是sql,不是Linux命令哦;
退出MySQL:ctrl+d
退出docker:ctrl+d
本次教程就总结到这里,如果要重启docker服务:命令 docker restart name(这个是你docker ps后中显示的服务名,不是id哦);
以上内容都是我各种百度收集大神们的解决方法汇总了下,顺利的解决了老大安排我的任务,不会玩都是血与泪啊,希望大家看的时候不要嫌弃,小白一枚。有好的建议 和意见请多多指教在下。欢迎批评,若有哪里抄袭请及其提出。。。。反正也不是我自己原创,只是学到各位大大的解决方法逻辑的统计了下。哈哈哈,这条路还远,希望走的不要太痛苦。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。