docker手动搭建MySQL_使用docker搭建mysql服务

使用docker搭建mysql服务

一、使用docker搭建mysql服务

1、拉取mysql镜像:docker pull mysql:5.7

2、检查是否拉取成功:docker image ls

02e27f5601045947446e93f35552280e.png

3、将镜像跑为一个容器

docker run --name mysql -d -p 6666:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7

–name:容器名,此处命名为mysql

-e:配置信息,此处配置mysql的root用户的登陆密码

-p:端口映射,此处映射主机6666端口到容器的3306端口

1148ee081a1053437ae4755440575d00.png

4、进入docker本地连接mysql客户端

docker container(可以省略) exec -it mysql  /bin/bash

2773c4cd469d21652bcda4f4d37da265.png

show databases;

create database test;

在里面创建一个test数据库

二、实际中遇到的问题与解决办法

1、用Navicat连接

主机地址就是在vagrantfile中配的地址

3fd09b2fc57a618da7312ce4befb7d09.png

在数据库test中建立一个user表,添加字段name,字段值是中文时,保存报错

971f8ab0c1269307bb4b0e138f57a8d6.png

这里说明我们要去更改配置文件my.cnf中的字符集格式

2、使用挂载

分析:因为mysql容器中的linux是精简版,只有一些最基础的命令,没有vi之类的编辑器,所以要把配置文件挂载出来,在外面进行更改。

退出mysql命令终端和容器,循环创建目录,将配置文件复制出来,更改之后挂载。

4e8dcf5f4348ccbddd00256867395829.png

在mysqld.cnf文件中最后一行添加character-set-server=utf8

然后保存退出

3、删除原来的mysql容器

docker  rm  -f  mysql

4、重新将mysql镜像跑为容器

1)此时遇到问题,如图:

46e2f905b385347c43111be798a074ca.png

意思是:来自守护进程的错误响应:冲突。容器名称“mysql”为已在容器“480c262388e...”中使用。您必须删除(或重命名)该容器才能重用该名称。

解决方法是使用 docker ps -l 检查仍然存在的mysql容器

docker  rm 容器ID

然后重新执行 docker run ...命令

然后在容器中执行命令,开启一个交互模式的终端

dockers  exec -it  mysql  /bin/bash

2)又又又出现问题,如图

22967547784a655569a57998fa9bc1aa.png

查看日志找原因:docker logs mysql

fe9c830d1c0020d005148235150e6a10.png

解决方法有三个:

1.在docker run中加入 --privileged=true  给容器加上特定权限,如下

Docker run --privileged=true ....

2.关闭selinux csdn

3.在selinux添加规则,修改挂载目录

这里采用第一种办法

608d474abc498fa0dc6b8f099b29c7fb.png

之后再执行 dockers  exec -it  mysql  /bin/bash

接下来进入mysql命令终端,创建数据库test,其实也就是重复步骤二中一开始在用navicat连接,然后到test数据中建表user,然后保存值为中文的name字段,这次就能成功保存了。

60e69b99102f52d52804836e564e6d87.png

总结:这个例子很直观的展示了从拉取镜像,到运行成容器,在容器中开启交互模式的终端,再到更改配置后挂载文件,删除原来的容器,重新把镜像跑成容器等等一系列整套操作。以及中间遇到的问题和解决办法。

参考链接:https://www.jianshu.com/p/bccda875e7a5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值