zoukankan      html  css  js  c++  java
  • 虚拟机 dockerfile创建mysql8数据库,初始化读取sql文件

    本人想要用dockerfile直接创建mysql8数据库,并且初始化读取数据库,看了网上的不少教程,踩过了好多坑,现在记录一下创建过程:

    、用的是vmware安装centos7系统

        1. 首先要安装docker环境,教程连接:https://www.cnblogs.com/mo-nian/p/12485210.html

        2. 新建Dockerfile文件: vi  Dockerfile

    FROM daocloud.io/library/mysql:8
    
    MAINTAINER BolingCavalry <zq2599@gmail.com>
    
    ENV WORK_PATH /usr/local/work
    ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d
    
    ENV FILE_0  init.sql
    ENV INSTALL_DATA_SHELL install_data.sh
    
    RUN mkdir -p $WORK_PATH
    COPY ./$FILE_0 $WORK_PATH/
    COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/
    EXPOSE 3306
    RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL

     3. 新建 install_data.sh 文件:

    vi  install_data.sh

    4. 修改执行脚本执行权限: 

     chmod +x install_data.sh

    5. install_data.sh 文件内容(登录mysql执行读取SQL文件):

    #!/bin/bash
    mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF
    source $WORK_PATH/$FILE_0;

    6. 创建 init.sql 文件:

    SET NAMES utf8;
    
    CREATE DATABASE If Not Exists db_student Character Set utf8;
    CREATE USER 'userm'@'localhost' IDENTIFIED BY '123456';
    GRANT all ON db_student.* TO 'userm'@'localhost';
    GRANT all ON db_student.* TO 'root'@'%';
    
    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','初二','');

    7. 创建mysql镜像:

    docker  build -t   mysql8:latest .

    8. 查看镜像:docker  images 

        启动镜像:

    docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql8:latest

    9.  查看容器id:docker  ps

    docker  ps

    10. 进入容器: 

    docker  exec -it    792039hda    bash 

    11. 登录mysql:

     mysql  -u  root  -p           

         输入密码:123456

         查看数据: show  databases;

          可以看到数据库存在读入init.sql的数据。

  • 相关阅读:
    Navicat Premium12以上版本多用户破解方法
    Linux并行gzip压缩工具pigz
    Windows Server 2019远程桌面服务配置和授权激活
    mysql删除大表
    KVM qcow2 磁盘在线扩容方法
    在jenkins中连接kubernetes集群
    CentOS 7部署 Ceph分布式存储架构
    (转)关于T(n) = kT(n/c) + f(n) 的时间复杂度
    算法中的思想(第0篇)
    (求通俗易懂的证法) 过n个有标志顶点的树的数目等于n^(n-2)
  • 原文地址:https://www.cnblogs.com/airen123/p/14785655.html
Copyright © 2011-2022 走看看