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. 一道关于压缩包的ctf题目(包括暴力破解,明文攻击,伪加密)

    关于题目附件 链接:https://pan.baidu.com/s/1PRshlizSndkgxkslnqJrHA 提取码:p76e zip三连击 下载附件得到题目 手机号码一般是11位,那么我们设置 ...

  2. 机器学习 machine learn

    机器学习 机器学习 概述 什么是机器学习 机器学习是一门能够让编程计算机从数据中学习的计算机科学.一个计算机程序在完成任务T之后,获得经验E,其表现效果为P,如果任务T的性能表现,也就是用以衡量的P, ...

  3. 论文解读( N2N)《Node Representation Learning in Graph via Node-to-Neighbourhood Mutual Information Maximization》

    论文信息 论文标题:Node Representation Learning in Graph via Node-to-Neighbourhood Mutual Information Maximiz ...

  4. 使用Webpack+Gulp开发运行于Dcloud平台HTML5+引擎的混合APP项目经验分享

    什么是5+Runtime? 首先简单介绍一下5+Runtime: HTML5 Plus Runtime(5+Rumtime)是由Dcloud开发的一套"增强版的手机浏览器引擎",与 ...

  5. Linux 0.11源码阅读笔记-中断过程

    Linux 0.11源码阅读笔记-中断过程 是什么中断 中断发生时,计算机会停止当前运行的程序,转而执行中断处理程序,然后再返回原被中断的程序继续运行.中断包括硬件中断和软件中断,硬中断是由外设自动产 ...

  6. linux系统引导过程

    linux系统引导过程 linux-0.11引导时,将依次运行BIOS程序.bootsect.s.setup.s和head.s,完成引导过程后进入到main函数运行.BIOS完成硬件的检查与初始化等工 ...

  7. java中接口interface可以持有多个类的共享常量

    3.接口持有多个类的共享常量  接口另一主要功能,马克-to-win: 可以使用接口来引入多个类的共享常量.所有的这些变量名都将作为常量看待.所有定义在接口中的常量都默认为public.static和 ...

  8. ABP源码分析 - 约定注册(3)

    入口 //ConfigureServices foreach (var module in Modules) { if (module.Instance is AbpModule abpModule) ...

  9. Mybatis-sql语句的抽取

    1.抽取之前的UserMapper.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  10. 小程序已成为超级APP必选项,逐鹿私域“留量”

    截止2021年底,中国移动互联网月活跃用规模达到11.74亿人,增速逐渐呈放缓趋势,用户渗透率接近天花板.客户的增长速度越趋于平缓,品牌在不同成长阶段也要适应增长节奏的变化,越来越多主流商家不得不利用 ...