• docker安装mysql


    1、docker安装mysql

    docker run -d --restart=always --network=host --name mysql-server -v /home/data/mysql/conf:/etc/mysql/conf.d -v /home/data/mysql/data:/var/lib/mysql -v /home/data/mysql/log:/logs -e MYSQL_ROOT_PASSWORD=root mysql:5.7

    解读:需要暴露端口,挂载卷

    环境变量

    MYSQL_ROOT_PASSWORD

    此变量是必需的,并指定将为 MySQLroot超级用户帐户设置的密码。在上面的例子中,它被设置为my-secret-pw

    MYSQL_DATABASE

    此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权限(对应于)。GRANT ALL

    MYSQL_USER,MYSQL_PASSWORD

    这些变量是可选的,用于创建新用户和设置该用户的密码。该用户将被授予MYSQL_DATABASE变量指定的数据库的超级用户权限(见上文)。要创建用户,这两个变量都是必需的。

    请注意,无需使用此机制来创建超级用户超级用户,默认情况下会使用MYSQL_ROOT_PASSWORD变量指定的密码创建该用户。

    MYSQL_ALLOW_EMPTY_PASSWORD

    这是一个可选变量。设置为非空值,例如yes,以允许使用 root 用户的空白密码启动容器。注意:除非您真的知道自己在做什么,否则不建议将此变量设置yes为,因为这将使您的 MySQL 实例完全不受保护,从而允许任何人获得完全的超级用户访问权限。

    MYSQL_RANDOM_ROOT_PASSWORD

    这是一个可选变量。设置为非空值,例如yes,为 root 用户生成一个随机初始密码(使用pwgen)。生成的 root 密码将打印到 stdout ( GENERATED ROOT PASSWORD: .....)。

    MYSQL_ONETIME_PASSWORD

    初始化完成后将root(不是!中指定的用户MYSQL_USER)用户设置为过期,强制在首次登录时更改密码。任何非空值都将激活此设置。注意:此功能仅在 MySQL 5.6+ 上受支持。在 MySQL 5.5 上使用此选项将在初始化期间引发适当的错误。

    MYSQL_INITDB_SKIP_TZINFO

    默认情况下,入口点脚本会自动加载CONVERT_TZ()函数所需的时区数据。如果不需要,任何非空值都会禁用时区加载。

    挂载数据目录

    Docker 文档是了解不同存储选项和变体的良好起点,并且有多个博客和论坛帖子在该领域讨论和提供建议。我们将在这里简单地展示上面后一个选项的基本过程:

    1. 在主机系统上的合适卷上创建数据目录,例如/my/own/datadir.

    2. 像这样启动你的mysql容器:

      $ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
      

    -v /my/own/datadir:/var/lib/mysql命令的一部分/my/own/datadir将底层主机系统中的目录安装/var/lib/mysql在容器内,默认情况下 MySQL 将在其中写入其数据文件。

    备份数据库实例的数据

    大多数普通工具都可以工作,尽管在某些情况下它们的使用可能有点复杂,以确保它们可以访问mysqld服务器。确保这一点的一种简单方法是docker exec从同一个容器中使用和运行该工具,类似于以下内容:

    $ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
    #!/bin/bash
    set -e
    HOME_DIR=/home/backup
    DATE=`date +%Y%m%d%H`
    ZIP_NAME=$DATE".tar.gz"
    
    startTime=`date +%Y%m%d-%H:%M:%S`
    startTime_s=`date +%s`
    
    cd $HOME_DIR
    mkdir -p $DATE
    
    docker exec -i mysql  mysqldump -u root -pbG7*bN --all-databases --default-character-set=utf8 --hex-blob  > ${DATE}/all_databases.sql
    echo "dump all databases"
    
    echo "compress"
    tar -czvPf $ZIP_NAME $DATE --remove-files
    
    echo "clean backup before 30days"
    find ${HOME_DIR} -mtime +30 -name "*.gz" -exec rm -rf {} \;
    
    endTime=`date +%Y%m%d-%H:%M:%S`
    endTime_s=`date +%s`
    sumTime=$[ $endTime_s - $startTime_s ]
    
    echo "backup completed  $startTime ---> $endTime" "Total:$sumTime seconds"
     

    还原数据库的数据

    用于恢复数据。您可以使用docker exec带有-i标志的命令,类似于以下内容:

    $ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql
  • 相关阅读:
    现代物流系统及其输送机构
    什么是线性插值原理 什么是双线性插值?
    Windows常见窗口样式和控件风格
    CAsyncSocket
    使用CRectTracker类进行对象动态定位
    英文自我介绍
    QQ 静态截图程序模拟实现
    使用CRectTracker类进行对象动态定位
    QQ 静态截图完善实现之改造 CRectTracker 类
    [原创] 骨骼运动变换的数学计算过程详解
  • 原文地址:https://www.cnblogs.com/liubaihui/p/16396952.html
Copyright © 2020-2023  润新知