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. Python - Datetime库简介

  2. web app遇到的一些坑及小技能(持续更新...)

    遇到的一些坑 问题:手机端 click 事件会有大约 300ms 的延迟 原因:手机端事件 touchstart --\> touchmove --> touchend or touchc ...

  3. html5手机页面的那些meta

    一.普通手机页的设置1.<meta name="viewport" content=""/>说明:屏幕的缩放 content的几个属性: width ...

  4. 使用Dropbox搭建静态网站详细教程

    DropBox是一款非常好用的免费网络文件同步工具,是Dropbox公司运行的在线存储服务,通过云计算实现因特网上的文件同步,用户可以存储并共享文件和文件夹.今天小z和大家分享一下如何使用dropbo ...

  5. 从八道面试题看JavaScript DOM事件机制

    As we all know,事件机制其实很简单,无非冒泡和捕获这两点,笔者不再赘述,网上相关文章一大堆,下面让我们直接看面试题 题目一到七,统一设置css .test2 { height: 50px ...

  6. HTML 初学整理

    一.HTML简介 HTML的概念 HTML是HyperText Markup Language(超文本标记语言)的简写,超文本标记语言,标准通用标记语言下的一个应用."超文本"就是 ...

  7. 记一次dotnet拆分包,并希望得大佬指点

    记一次dotnet拆分包,并希望得大佬指点 之前做了一个用于excel导入导出的包, 定义了一些接口, 然后基于 NPOI EPPlus MiniExcel 做了三种实现 接口大概长下面这样(现在可以 ...

  8. Python入门-面向对象三大特性-多态

    Pyhon不支持多态并且也用不到多态,多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型".

  9. 面向对象编程-终结篇 es6新增语法

    各位,各位,终于把js完成了一个段落了,这次的章节一过我还没确定下面要学的内容可能是vue也可能是前后端交互,但无论是哪个都挺兴奋的,因为面临着终于可以做点看得过去的大点的案例项目了,先憋住激动地情绪 ...

  10. 如何使用Android可视化埋点

    Android可视化埋点是Android全埋点的增强.开发者可以将App界面同步至DTM界面,并在DTM界面通过可视化点击的方式添加埋点事件.目前Android可视化埋点包含两种埋点方式:普通可视化埋 ...