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

08-Docker安装MySQL 5.7_第1张图片

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

08-Docker安装MySQL 5.7_第2张图片

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

# 创建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;

08-Docker安装MySQL 5.7_第3张图片

 SQLyog连接数据库,插入数据

08-Docker安装MySQL 5.7_第4张图片

查看

08-Docker安装MySQL 5.7_第5张图片 

3、插入中文报错

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

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

08-Docker安装MySQL 5.7_第6张图片原因

docker上默认字符集编码问题

查看字符集编码

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

show variables like 'character%';

08-Docker安装MySQL 5.7_第7张图片

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

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

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

08-Docker安装MySQL 5.7_第8张图片

二、实战版安装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  数据库版本

08-Docker安装MySQL 5.7_第9张图片

 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

08-Docker安装MySQL 5.7_第10张图片

3、重启mysql容器

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

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

08-Docker安装MySQL 5.7_第11张图片

 ​​​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;

08-Docker安装MySQL 5.7_第12张图片

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

中文正常插入 

08-Docker安装MySQL 5.7_第13张图片

08-Docker安装MySQL 5.7_第14张图片 

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

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

08-Docker安装MySQL 5.7_第15张图片

  • 新建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

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

08-Docker安装MySQL 5.7_第16张图片

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

08-Docker安装MySQL 5.7_第17张图片 

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

6、结论

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

 

你可能感兴趣的:(docker,docker,mysql,容器,运维,linux)