• Window10环境下在Docker中导入mysql数据


    环境

    docker 版本: 18.09.2
    windows 版本:win10,用HyperV 
    命令行工具:git-bash git version 2.21.0.windows.1

      

    1.在当前宿主机的目录目录下创建三个文件,用来与 docker 中的 mysql 镜像进行挂载

    $ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf

    2.初始化mysql密码并进行容器挂载,指定的容器名字若与已有的容器有冲突,可先重新命名或将有冲突的容器删除

    $ docker run -p 3306:3306 --name mymysql -v "/$PWD/conf":/etc/mysql/conf.d -v "/$PWD/logs":/logs -v "/$PWD/data":/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 

    注意window10环境进行挂载,对宿主机的路径要进行转换,加上 "" 是必须的,以下一篇文章提供了不能挂载文件夹进container的解决方法,可参考

    https://segmentfault.com/a/1190000017302478

    参数说明:

    · -p:容器的 3306 端口映射到主机的 3306 端口。

    · $PWD:当前的目录路径

    · -v $PWD/conf:/etc/mysql/conf.d:映射配置文件

    · -v $PWD/logs:/logs: 映射日志文件

    · -v $PWD/data:/var/lib/mysql:映射数据目录

    · -e MYSQL_PASSWORD="123456":初始化 root 用户的密码

    · -d: 后台运行容器,并返回容器ID

    3.使用 cp 命令,将宿主机test_db目录复制到 容器 mymysql /opt 目录下,注意宿主机的目录要加双引号,不然会被认为是另一个容器

    $ docker cp "C:UsersCZYmysqldata	est_db" mymysql:/opt

    4.第二步执行后已后台运行容器,使用 exec 命令进入容器并开启一个shell会话(也可以使用attach),注意整个命令前面要加上 winpty(win10中才加)

    $ winpty docker exec -it mymysql bash
    root@398e651dd483:/#

    参数说明:

    · -i :以交互模式运行容器,通常与 -t 同时使用

    · -t :为容器重新分配一个伪输入终端,通常与 -i 同时使用

    · bash :在容器内执行打开一个shell会话,执行bash命令

    5. cd 到含有导入文件的目录中,在进行数据导入。若不先切换补录,则 < 后边的数据要使用绝对路径表示,且test_db中的 dump 文件也要使用路径表示,不然会提示找不到文件。

    另外一种方法是切换到目录后,进入mysql,然后使用 source 命令导入,但我没能操作成功,有能操作成功的请告诉我。

    root@398e651dd483:/# cd /opt/test_db
    
    root@398e651dd483:/opt/test_db# mysql -uroot -p < employees.sql

    6.在 shell 中进入 mysql 查看数据是否已正常导入,使用前面已经初始化的密码

    $ winpty docker exec -it mymysql bash
    root@398e651dd483:/# mysql -uroot -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 2
    Server version: 5.7.26 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql>

      

    您对以上内容有何建议或意见,请写下来告诉我,谢谢!!!
  • 相关阅读:
    gulp使用技巧-删除node_modules文件夹,解决目录层次太深删除报错的问题
    PHP学习-链接数据库
    教程笔记《JavaScript深入浅出》
    读书笔记《高性能网站建设指南》之雅虎军规
    CSS3边框图片-像素虚边的问题
    WebStorm设置手机测试服务器-局域网内其他设备访问
    gulp的安装和使用
    H5canvas赛车游戏-基于lufylegend引擎
    WebStorm设置左侧菜单栏背景色和样式
    基于jquery的-获取短信验证码-倒计时
  • 原文地址:https://www.cnblogs.com/chenri/p/11180453.html
Copyright © 2020-2023  润新知