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. 速看,ElasticSearch如何处理空值

    大家好,我是咔咔 不期速成,日拱一卒 在MySQL中,十分不建议大家给表的默认值设置为Null,这个后期咔咔也会单独出一期文章来说明这个事情. 但你进入一家新公司之前的业务中存在大量的字段默认值为Nu ...

  2. RENIX非对称时延测试——网络测试仪实操

    本文主要介绍RENIX软件如何进行非对称时延测试.文章分为四部分,第一部分为非对称时延概述,第二部分为测试说明,第三部分为测试配置,第四部分为测试报告. 第一部分:非对称时延概述 1.RFC2544测 ...

  3. Spring官宣网传大漏洞,并提供解决方案

    Spring沦陷了!这样的标题这几天是不是看腻了?然而,仔细看看都是拿着之前的几个毫不相干的CVE来大吹特吹.所以,昨天发了一篇关于最近网传的Spring大漏洞的文章,聊了聊这些让人迷惑的营销文.以及 ...

  4. 关于CPU、指令集、架构、芯片的一些科普

    作者:王强链接:https://zhuanlan.zhihu.com/p/19893066来源:知乎 随着智能设备的广泛普及,这几年媒体上越来越多的出现关于"架构""AR ...

  5. python学习笔记(十)——进程间通信

    python 在进程间通信时有很多方式,比如使用Queue的消息队列,使用 pip的管道通信,share memory 共享内存或 semaphore 信号量等通信方式. 这里我们演示一下通过消息队列 ...

  6. 3_Phase Portrait_相图_相轨迹

  7. 一个命令完成[打包+同步七牛cdn+上传服务器]

    webpack+gulp+qshell+npm-scripts实现一个命令完成[打包+同步cdn+上传服务器] 说明 由于我们用的七牛云存储,所以cdn也是走的七牛,所以并不适用于其他的cdn,但是思 ...

  8. 【Weex笔记】-- Animate.css的使用

    animate.css是一个使用CSS3的animation制作的动画效果的CSS集合,里面预设了很多种常用的动画,且使用非常简单.本文将详细介绍animate.css的使用. 一,安装辅助依赖 np ...

  9. sql server学习总结一

    一,数据库的三级模式结构 1.    模式 模式又称逻辑模式或者概念模式,是数据库中全体数据的逻辑结构和特征的描述,一个数据库只有一个模式,模式处于三级结构的中间层. 2.    外模式 外模式又称用 ...

  10. 用反射实现JavaBean和Map之间的转换

    学习内容: 需求 由于JavaBean结构与Map类似,我们可以把JavaBean与Map进行转换 代码如下: package com.yy; import java.beans.BeanInfo; ...