08-Docker安装MySQL 5.7

一、简单版安装MySQL

1、安装MySQL 5.7

docker pull mysql:5.7

2、使用mysql镜像创建容器实例

  • 查看宿主机是否安装了mysql占用了3306端口
ps -ef | grep mysql

可知宿主机没有安装mysql,3306端口未被占用

  • 运行实例
# 使用-e配置环境变量 MYSQL_ROOT_PASSWORD(mysql中root用户的密码)
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

  •  查看是否启动成功
docker ps

  •  进入容器实例
docker exec -it de2d23d8d9c9 /bin/bash

  • 进入数据库测试
mysql -uroot -p
show databases;

建数据库、建表、插入数据 

# 创建db01数据库
create database db01;
# 进入db01数据库
use db01;
# 创建表t1
create table t1(id int, name varchar(20));
# 插入英文正常插入
insert into t1 values(1,'zhangsan');
# 查看数据表
select * from t1;

 SQLyog连接数据库,插入数据

查看

 

3、插入中文报错

启动docker容器后,可以正常的连接、创建数据库,创建表,插入数据。但是插入中文则会报错。

# 插入中文报错
insert into t1 values(3, '王五');

原因

docker上默认字符集编码问题

查看字符集编码

在mysql中使用以下命令查看数据库字符集

show variables like 'character%';

 可知一些字符集是latin1字符集,所以会报错。

4、没有容器卷映射,数据易丢失

启动容器时没有配置容器卷映射,当容器被删,数据无法找回。危险危险危险。

二、实战版安装MySQL

1、启动 Mysql 容器,并配置容器卷映射

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

 -d:后台运行

-p 3306:3306  端口映射

--privileged=true  容器数据卷权限开启

-v /fanhe/mysql/log:/var/log/mysql \   宿主机:mysql容器 日志映射

-v /fanhe/mysql/data:/var/lib/mysql \  宿主机:mysql容器 数据映射

-v /fanhemysql/conf:/etc/mysql/conf.d \  宿主机:mysql容器 配置映射

-e MYSQL_ROOT_PASSWORD=123456 \  Mysql数据库密码

--name mysql \  数据库名字

mysql:5.7  数据库版本

 2、新建my.cnf

通过容器卷同步给mysql实例,解决中文乱码问题

进入配置文件/fanhe/mysql/conf目录,新建my.cnf并写入

cd /fanhe/mysql/conf
vim my.cnf


[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
Character_set_server = utf8

3、重启mysql容器

  • 重启Mysql容器实例使得容器重新加载配置文件
docker restart mysql

  • 查看数据库字符集
docker exec -it mysql /bin/bash

 ​​​4、测试

# 创建db01数据库
create database db01;
# 进入db01数据库
use db01;
# 创建表t1
create table t1(id int, name varchar(20));
# 插入英文
insert into t1 values(1,'zhangsan');
# 查看数据表
select * from t1;

# 插入中文
insert into t1 values(2, '王五');

中文正常插入 

 

5、删除Mysql容器,新建容器,数据依旧同步

  • 删除Mysql容器实例
docker ps
docker rm -f Mysql容器ID

  • 新建Mysql容器实例 
docker run -d -p 3306:3306 \
           --privileged=true \
           -v /fanhe/mysql/log:/var/log/mysql \
           -v /fanhe/mysql/data:/var/lib/mysql \
           -v /fanhe/mysql/conf:/etc/mysql/conf.d \
           -e MYSQL_ROOT_PASSWORD=123456 \
           --name mysql \
           mysql:5.7

命令和前面新建时一模一样 

  •  进入Mysql容器查看数据是否存在
docker exec -it mysql /bin/bash
mysql -uroot -p
use db01;
select * from t1;

 

  新建Mysql容器实例数据依旧存在

6、结论

  • docker安装完Mysql并创建容器实例后,先修改字符集编码后再新建mysql数据库等一系列数据库操作。
  • 使用容器卷映射之后,即便容器删除,因为在宿主机保存有数据,新建容器后,数据依旧存能够同步,保证了数据不丢失。

 

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪我养猪吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值