Docker安装mysql

简单版:

分为简单版跟实际版:

简单版用于快速体验docker部署mysql环境。

实际版用于模拟真实docker部署mysql环境。

1、拉取mysql

# 可指定mysql版本
docker pull mysql:5.7

# 拉取完成后查看本地是否存在mysql镜像
docker images

2、运行mysql

# 3307是主机使用的端口号,因为主机已安装mysql,所以3306端口冲突,我改成3307了
# 3306是容器的mysql端口
# root密码是123456
docker run -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

# mysql容器启动完成后,请检查是否成功启动
docker ps

3、进入mysql容器

docker exec -it 容器ID /bin/bash

4、在mysql容器内,执行mysql命令

# 登录mysql账号
mysql -uroot -p

# 进入mysql命令行后,执行建库建表语句
create database testDB;
use testDB;
create table t1(id int ,name varchar(20));
insert into t1 values(1,'z3');
select * from t1;

上述中描述在docker的mysql容器里

  • 创建名为testDB的数据库,
  • 并创建了t1表,
  • 在表中新建了id=1,name=z3的数据。

那么docker里的mysql容器如何连接到本机的数据库呢?

5、查询宿主机的ip(就是开启docker的那台)

# 输入ifconfig,并寻找ens33下的ip。
ifconfig

 6、来到本机navicat进行连接(就是你自己的电脑)

  • 连接名随便取取
  • 主机用上面复制的ip
  • 端口号用宿主机的3307
  • 用户名密码root  123456

 进来后就会发现数据库就是docker里容器创建的那个数据库,数据也在。

 在navicat插入一条新数据,然后再回到docker容器里面查询数据库看。

 查询出来,数据是同步的。

 至此docker部署简单版的mysql搭建完成。

为什么说是简单版?

因为还存在很多bug,实际中大多数不会这样用。

bug例如:

1、不能插入中文字符。(insert into t1 values(3,'王五');)

2、若mysql容器宕机,则导致数据丢失。


实际版:

首先咱们先把简单版的mysql容器删掉先。

1、docker ps                   (列出正在运行的容器,复制mysql容器id)

2、docker rm -f 容器id    (删除容器)

1、拉取mysql,使用容器卷,保证mysql容器宕机数据也会有备份。

docker run -d -p 3307:3306 --privileged=true -v /lingon/mysql/log:/var/log/mysql -v /lingon/mysql/data:/var/lib/mysql -v /lingon/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

# docker run -d -p 3307:3306 --privileged=true 
# -v /lingon/mysql/log:/var/log/mysql 
# -v /lingon/mysql/data:/var/lib/mysql 
# -v /lingon/mysql/conf:/etc/mysql/conf.d 
# -e MYSQL_ROOT_PASSWORD=123456  
# --name mysql mysql:5.7

2、新建my.cnf

# 去到配置文件夹
cd/lingon/mysql/conf/

# 新建my.cnf,里面输入下面这一串命令
vim my.cnf

# 粘贴上这一段命令
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

# 检查配置是否生效
cat my.cnf

3、修改配置文件后,重启mysql容器

docker restart mysql

4、检查是否成功配置utf-8格式

# 进入mysql容器
docker exec -it mysql /bin/bash

# 登录mysql
mysql -uroot -p

# 查看字符编码,若显示为utf-8,则表示中文乱码成功修复。
show variables like 'character%';

5、可自行去本机的navicat进行验证,在这里就不多赘述了。

 至此!实际版解决了简单版所拥有的一些问题(中文乱码,数据备份),

实际开发中也几乎用的都是这种方法,大家一起加油哇!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值