zoukankan      html  css  js  c++  java
  • docker搭建mysql:5.7.29

    拉取对应版本镜像

    docker pull mysql:5.7.29
    

    mysql:5.7.29容器中目录结构

    |-- conf.d
    |   |-- docker.cnf
    |   |-- mysql.cnf
    |   |-- mysqldump.cnf
    |-- my.cnf -> /etc/alternatives/my.cnf
    |-- my.cnf.fallback
    |-- mysql.cnf
    |-- mysql.conf.d
        |-- mysqld.cnf
    

    注意:不要映射:/etc/mysql/my.cnf,该文件是个软连。即使映射成功配置文件是不会生效的。

    编写脚本

    ├─mysql5.7
    │      ├─conf
    │      │  └─mysql.conf.d
    │      │          mysqld.cnf
    │      └─scripts
    │              run.sh
    

    文件:mysqld.cnf

    [mysql]
    default-character-set=utf8
    
    [mysqld]
    basedir=/usr/local/mysql/
    datadir=/usr/local/mysql/data/
    
    pid-file=/var/run/mysqld/mysqld.pid
    socket=/var/run/mysqld/mysqld.sock
    
    # 错误日志
    log-error=/var/log/mysql/error.log
    
    # 默认存储引擎
    default-storage-engine=InnoDB
    
    # 服务器ID
    server-id=1
    
    # 开启BIN LOG日志
    log-bin=mysql-bin
    
    # 设置SQL模式
    sql_mode="IGNORE_SPACE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    
    # 服务器默认字符集
    character_set_server=utf8
    
    # 默认字符集
    collation_server = utf8_general_ci
    

    注意:character_set_databasecollation_database 这两个参数在MySQL5.7版本中已经弃用不再使用
    官网文档:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

    文件:run.sh

    #!/usr/bin/env bash
    
    # 设置MySQL端口
    mysql_port=$1
    if [ ! "$mysql_port" ]; then
      mysql_port=3306
    fi
    
    # 脚本当前目录
    scrpts_path=$(cd $(dirname "$0") || exit; pwd)
    
    # MySQL根目录
    dirpath=$(dirname "$scrpts_path")
    
    # 创建MySQL数据存储目录
    mkdir -p "$dirpath"/data
    
    # 启动MySQL服务
    docker rm mysql_"$mysql_port" -f
    
    docker run -d -p "$mysql_port":3306 --name mysql_"$mysql_port" 
    -v="$dirpath"/conf/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf 
    -v="$dirpath"/data:/usr/local/mysql/data/ 
    -v="$dirpath"/data:/var/log/mysql 
    -e MYSQL_ROOT_PASSWORD=123 
    mysql:5.7.29
    

    说明

    • 修改容器中的配置文件
    • 修改mysql数据目录
    • 设置mysql初始密码

    启动MySQL服务

    sh scripts/run.sh
    

    执行:docker ps 查看服务是否启动成功

    注意:data 目录不要随便删除

    注意:该镜像自动创建远程账号:root 密码就是初始密码

    进入MySQL服务容器内

    docker exec -it mysql bash
    

    连接MySQL

    mysql -uroot -p
    
    # 初始密码:123
    

    修改密码

    按需操作

    # 修改本地连接账号-置空
    alter user 'root'@'localhost' identified by '';
    
    # 修改远程账号密码-置空
    alter user 'root'@'%' identified by '';
    

    注意:此时连接mysql服务器root密码不再是初始密码,而是刚才设定的密码

    ---------------至此部署完毕---------------

  • 相关阅读:
    msf提权命令/meterpreter下的几个命令
    ms17010漏洞复现-2003
    复现IIS6.0远程命令执行漏洞
    代码审计之Finecms任意文件下载漏洞
    逻辑运算符
    RIP动态路由的配置
    跟着百度学习php之ThinkPHP的运行流程-2
    静态路由配置
    跟着百度学习php之ThinkPHP的运行流程-1
    外挂是怎么写的?
  • 原文地址:https://www.cnblogs.com/zhanghuizong/p/12668543.html
Copyright © 2011-2022 走看看