Docker部署mysql 5.7

  1. 准备工作

    • 在CentOS或者Linux创建部署目录,用于存放容器的配置和MySQL数据;目的是当重装或者升级容器时,配置文件和数据不会丢失。执行以下命令:

      a、创建目录:mkdir -p /container/mysql

      b、进入目录:cd /container/mysql

      c、批量创建目录:mkdir data logs

      d、更改文件夹权限:

      chmod 777 logs
      chmod 777 data
    • 准备MySQL部署配置文件

      a、编辑MySQL配置文件:vim /container/mysql/my.cnf

      b、写入MySQL配置如下(可直接复制粘贴):

      # For advice on how to change settings please see
      # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html # Docker安装最简配置, 仅必要目录属性
      [mysqld]
      pid-file= /var/run/mysqld/mysqld.pid
      socket= /var/run/mysqld/mysqld.sock
      datadir= /var/lib/mysql
      log-error= /var/log/mysqld-error.log
      slow-query-log-file= /var/log/slow-query.log # 如果使用最简配置,则此行之后的配置可忽略
      # 开启binlog
      server_id=1
      log_bin=mysql-bin
      binlog_format=ROW # 设置MySQL日志时区和主机一样;不设置的话默认为UTC
      log_timestamps=SYSTEM default_storage_engine = InnoDB
      performance_schema_max_table_instances = 400
      table_definition_cache = 400
      lower_case_table_names = 1
      skip-external-locking
      key_buffer_size = 32M
      max_allowed_packet = 100G
      table_open_cache = 128
      sort_buffer_size = 768K
      net_buffer_length = 4K
      read_buffer_size = 768K
      read_rnd_buffer_size = 256K
      myisam_sort_buffer_size = 8M
      thread_cache_size = 16
      query_cache_size = 16M
      tmp_table_size = 32M
      sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES character-set-server=utf8mb4
      collation-server=utf8mb4_general_ci explicit_defaults_for_timestamp = true
      max_connections = 500
      max_connect_errors = 100
      open_files_limit = 65535 log-bin=mysql-bin
      binlog_format=mixed
      server-id = 1
      expire_logs_days = 10
      slow_query_log=1
      long_query_time=3
      early-plugin-load = "" innodb_data_file_path = ibdata1:10M:autoextend
      innodb_buffer_pool_size = 128M
      innodb_log_file_size = 64M
      innodb_log_buffer_size = 16M
      innodb_flush_log_at_trx_commit = 1
      innodb_lock_wait_timeout = 50
      innodb_max_dirty_pages_pct = 90
      innodb_read_io_threads = 1
      innodb_write_io_threads = 1 [mysqldump]
      quick
      max_allowed_packet = 500M [mysql]
      no-auto-rehash
      default-character-set=utf8mb4 [myisamchk]
      key_buffer_size = 32M
      sort_buffer_size = 768K
      read_buffer = 2M
      write_buffer = 2M [mysqlhotcopy]
      interactive-timeout

      c、保存退出

    • 配置文件授权:chmod 644 /container/mysql/my.cnf ; 如果配置文件授权为777权限,会被MySQL忽略,导致配置文件不生效!

  2. 执行以下命令,创建并启动镜像。如果本地没镜像,会自动拉取

    docker run -itd \
    --restart=always \
    --name=mysql \
    -p 3306:3306 \
    -v /etc/timezone:/etc/timezone:ro \
    -v /etc/localtime:/etc/localtime:ro \
    -v /container/mysql/my.cnf:/etc/mysql/my.cnf \
    -v /container/mysql/data:/var/lib/mysql \
    -v /container/mysql/logs:/var/log \
    -e MYSQL_ROOT_PASSWORD="root" \
    mysql:5.7

    命令分析:

    • docker run #创建并启动应用
    • -itd #-i:开启容器的标准输入STDIN;-t:容器分配伪终端,用于再终端登录容器;-d:后台运行容器
    • --restart=always #在容器退出时总是重启容器
    • --name="mysql" #容器名称
    • -p 3306:3306 #映射主机指定端口到容器的指定端口;冒号前为主机端口,冒号后为容器端口
    • -v /etc/timezone:/etc/timezone:ro #使容器时间与主机时区保持一致;ro的意思是只读(read-only)模式,可以保证其挂载卷不被 Docker 容器内部文件系统配置所覆盖。
    • -v /etc/localtime:/etc/localtime:ro #使容器时间与主机时间保持一致;
    • -v /container/mysql/data:/var/lib/mysql #挂载主机指定目录到容器的指定目录;冒号前为主机目录;挂载的主机目录必须授权777权限
    • -e MYSQL_ROOT_PASSWORD="root" #增加环境变量MYSQL_ROOT_PASSWORD,mysql容器创建并启动时,自动设置mysql的登录密码
    • mysql:5.7 #要创建并启动容器的mysql镜像

    备注:以下参数格式写法等价:

    --restart always

    --restart "always"

    --restart=always

    --restart="always"

    同理,--name 等写法一样

    脚本执行后:

    查看容器信息:docker ps -a

    查看MySQL日志:docker logs mysql

  3. 测试连接登录

    此时,一般可以使用navicat等工具进行数据库连接了;如果工具连接不上,可在终端测试连接并授权;命令如下:

    进入docker容器MySQL终端:docker exec -it mysql bash

    MySQL登录:mysql -uroot -p'root'

    MySQL远程登录授权:grant all privileges on *.* to 'root'@'%' identified by 'root';

    刷新生效:flush privileges;

    最后再次使用navicat工具连接测试即可。

Docker部署mysql 5.7的更多相关文章

  1. Docker 部署mysql

    目录 Docker 部署mysql 步骤 1.查找 Docker Hub 上的 MySQL 镜像 2.docker pull mysql 拉取镜像 3.运行容器 4.查看容器启动情况 使用命令备注 D ...

  2. docker(部署常见应用):docker部署mysql

    上节回顾:docker(部署常见应用):docker部署nginx docker部署mysql:5.7.26 # 下载镜像 docker pull mysql: # 查看镜像 docker image ...

  3. docker部署mysql Navicat远程连接

    docker部署mysql Navicat远程连接 docker search mysql   查看mysql镜像(是去dockerHub网站搜素镜像,遇到问题可以去该网站查看官方文档,纯英文文档估计 ...

  4. Docker:Docker部署mysql数据库

    docker部署mysql : 8.0 1.在宿主机创建mysql挂载目录 #创建目录 mkdir /home/mysql/conf mkdir /home/mysql/logs mkdir /hom ...

  5. springboot多数据源配合docker部署mysql主从实现读写分离

    本篇主要有两部分: 1.使用docker部署mysql主从 实现主从复制 2.springboot项目多数据源配置,实现读写分离 一.使用docker部署mysql主从 实现主从复制 此次使用的是wi ...

  6. docker 部署mysql tomcat时 在root@localhost~下——-——docker exec -it 容器名 /bin/bash 报错

    在docker部署mysql时 报错 找不到 容器不自动启动  , docker start 容器名  也没有效果 多次尝试发现 原因是创建容器时在 下面创建的 更改为下创建 问题解决

  7. Centos7借助docker部署mysql,提供远程链接服务

    Centos7 借助docker部署mysql,并提供远程连接服务 安装docker 运行docker 注意安装docker和运行docker的步骤很简单,可以参考我学习docker的笔记 docke ...

  8. Docker部署MySql应用

    1. MySQL部署 1.1拉取MySQL镜像 docker pull mysql 查看镜像 docker images 1.2创建MySQL容器 docker run -di --name piny ...

  9. docker 部署mysql redis

    先介绍利用的两个数据卷挂载的规则,这对于理解挂载mysql数据库存储非常有帮助. 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中. 如果挂载一个非空的数据卷到容 ...

随机推荐

  1. Leetcode1——两数之和 详细解析

    Leetcode1--两数之和 题目分类:数组.哈希表的应用 1. 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数 ...

  2. 用Node处理文件上传

    前言 在Web开发中,文件上传是一个非常常见.非常重要的功能.本文将介绍如何用Node处理上传的文件. 需求分析 由于现在前后端分离很流行,那么本文也直接采用前后端分离的做法.前端界面如下: 用户从浏 ...

  3. Linux 0.11源码阅读笔记-总结

    总结 Linux 0.11主要包含文件管理和进程管理两个部分.进程管理包括内存管理.进程管理.进程间通信模块.文件管理包含磁盘文件系统,打开文件内存数据.磁盘文件系统包括空闲磁盘块管理,文件数据块的管 ...

  4. 判断链表是否有环(Java实现)

    判断给定的链表中是否有环.如果有环则返回true,否则返回false. 解题思路:设置两个指针,slow和fast,fast每次走两步,slow每次走一步,如果有环的话fast一定会追上slow,判断 ...

  5. ServletContext介绍和用法总结

    ServletContext介绍和用法总结 学习总结 一.ServletContext 介绍 1. 概念 2. 作用 3. 获取 3.1 在实现类中获取 3.2 在 Spring 容器中获取 二.Se ...

  6. 微信小程序插件组件-Taro UI

    微信小程序组件使用以下官网查看 ↓  ↓  ↓ https://taro-ui.jd.com/#/docs/fab

  7. docker容器与虚拟机区别

  8. mpvue使用scss

    安装scss 安装命令如下,不带版本号可能会导致报错 npm i sass-loader@7.3.1 -D npm i node-sass@4.14.1 -D 然后修改 build 文件夹下的 web ...

  9. 带码农《手写Mybatis》进度3:实现映射器的注册和使用

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!

  10. mycat实现主从读取中的问题

    schema.xml 中的配置如下:..... <dataHost name="aaa" maxCon="2000" minCon="100&q ...