Docker安装Mysql5.7

Henry Lv2
  1. 拉取镜像

    1
    docker pull mysql:5.7
  2. 查看镜像

    1
    docker images
  3. 创建映射目录

    1
    mkdir -p /docker/mysql/logs /docker/mysql/data /docker/mysql/conf /docker/mysql/backup
  4. 创建配置文件

  • 进入目录
    1
    cd /docker/mysql/conf
  • 新建配置文件
    1
    vi mysql.cnf
  • 添加以下内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [client]
    default-character-set = utf8
    [mysql]
    default-character-set = utf8
    [mysqld]
    character-set-client-handshake = FALSE
    character-set-server = utf8
    collation-server = utf8_general_ci
    default-storage-engine=INNODB
    lower_case_table_names=1
    default-time_zone = '+8:00'
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  1. 启动
  • 创建启动脚本

    1
    vi /docker/mysql/docker.sh
  • 添加以下内容(Password为管理员密码)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
    docker run \
    --name mysql \
    -p 3306:3306 \
    --privileged=true \
    --restart always \
    -v /docker/mysql/conf/mysql.cnf:/etc/mysql/my.cnf \
    -v /docker/mysql/logs:/logs \
    -v /docker/mysql/mysql:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=Password \
    -d mysql:5.7
  • 脚本授权

    1
    sudo chmod -R 777 /docker/mysql/docker.sh
  • 去掉多余的回车符号

    1
    sed 's/\r//' -i /docker/mysql/docker.sh
  • 运行脚本

    1
    ./docker.sh
  • 数据库工具连接

  1. 容器相关操作
  • 查看容器

    1
    docker ps
  • 重启容器

    1
    docker restart 容器id
  1. 定时备份
  • 创建备份脚本

    1
    vi /docker/mysql/backup.sh
  • 添加以下内容

    1
    2
    3
    4
    5
    #!/bin/bash
    echo "时间`date +%Y%m%d-%H:%M:%S`:mysql备份开始"
    docker exec mysql mysqldump -P 3306 -h 192.168.0.1 -uroot -pPassword --default-character-set=utf8 datebaseName > /docker/mysql/backup/datebaseName_`date +%Y%m%d-%H:%M:%S`.sql
    find /docker/mysql/backup/ -mmin +1 -name '*.sql' -exec rm -rf {} \;
    echo "时间`date +%Y%m%d-%H:%M:%S`:mysql备份完成"
  • 脚本授权

    1
    sudo chmod -R 777 /docker/mysql/backup.sh
  • 备份测试

    1
    ./backup.sh
  • 设置定时

    • 编辑定时任务
      1
      crontab -e
    • 添加以下内容(每天6、13、18点各执行一次)
      1
      0 6,13,18 * * * sh /docker/mysql/backup.sh > /docker/mysql/backup/backup.log 2>&1
  • 查看定时任务

    1
    crontab -l
  • 重启定时服务

    1
    systemctl restart crond.service
  1. 数据库设置
  • 进入Mysql容器

    1
    docker exec -it mysql bash
  • 登录

    1
    mysql -uroot -pPassword
  • 授权远程访问

    1
    2
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Password';
    flush privileges;
  • 修改root密码

    1
    SET PASSWORD FOR 'root' = PASSWORD('123456789');
  • 恢复数据库命令
    格式:
    sudo docker exec -i {containerName} mysql -uroot -pNanjing123 {databaseName} < {导入sql文件在宿主机的绝对路径}

    1
    sudo docker exec -i mysql mysql -uroot -p123456789 datebaseName < /docker/mysql/backup/datebaseName.sql
  • 标题: Docker安装Mysql5.7
  • 作者: Henry
  • 创建于 : 2023-06-23 18:11:18
  • 更新于 : 2023-08-08 10:26:45
  • 链接: https://mybetterworks.github.io/2023/06/23/Docker安装Mysql5-7/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
Docker安装Mysql5.7