docker--部署mysql5.7并初始化

前戏

大家可能都在服务器上搭建过mysql,或许遇到过不少的坑。但是使用docker部署mysql则很容易

mysql的镜像文档:https://hub.docker.com/_/mysql

docker部署mysql

拉取mysql 5.7的镜像

docker pull mysql:5.7

查看镜像

docker images

启动镜像

docker run --name zzmysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=zou123456 -d mysql:5.7

说明:

  • --name  后面是指定的容器名
  • -p 代表端口映射,格式为 宿主机映射端口:容器运行端口
  • -e 代表添加环境变量
  • MYSQL_ROOT_PASSWORD是root用户的登陆密码
  • mysql:5.7 是下载的镜像+版本(若不指定版本,该命令会重新下载mysql最新的镜像)
  • -d 后台启动

进入容器内部

# 最简单的进入方式
docker exec -it <contrainerId>  /bin/bash
# 这种方式下,数据库才可输入和展示中文数据 docker exec -it <contrainerId> env LANG=C.UTF-8 /bin/bash

我们这里使用简单的进入方式

docker exec -it zzmysql /bin/bash

执行建库建表插入数据

扫描二维码关注公众号,回复: 9224527 查看本文章
-- 建库
create database `db_student`;
SET character_set_client = utf8;
use db_student;
-- 建表 drop table if exists `user`; CREATE TABLE user ( id tinyint(5) zerofill auto_increment not null comment '学生学号', name varchar(20) default null comment '学生姓名', age tinyint default null comment '学生年龄', class varchar(20) default null comment '学生班级', sex char(5) not null comment '学生性别', unique key (id) )engine=innodb charset=utf8;
-- 插入数据 insert into user values('1','小明','15','初三',''); insert into user values('2','小红','13','初二','');

查询下user表里的数据

可以看出我们查询出来的数据name,classs,sex没有显示,这是因为这个镜像是外国人写得,所以对中文默认不支持

解决不显示中文的问题

这里解决方法有两种,第一种是在进入容器的时候设置环境变量,使用中文就可以了,命令如下,上面也说过

docker exec -it zzmysql env LANG=C.UTF-8 /bin/bash
env LANG=C.UTF-8 设置语言为utf-8

 第二种使用dockerfile,在初始化的时候就设置好

创建一个init.sql文件,内容如下(和上面的一样)

创建dockerfile,内容如下

FROM mysql:5.7
WORKDIR /docker-entrypoint-initdb.d
ENV LANG=C.UTF-8
ADD init.sql .

注意:dockerfile和init.sql在同一目录

ADD既可以复制也可以执行init.sql文件,copy只复制

构建docker镜像

docker build -t mysql:zou .

 启动容器进入容器内部

docker run --name zzmysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=zou123456 -d mysql:zou

 连接数据库,查看数据是否显示

猜你喜欢

转载自www.cnblogs.com/zouzou-busy/p/12147058.html