• docker安装mysql并挂载配置文件和修改密码


    docker安装mysql并挂载配置文件和修改密码

    docker从仓库中拉取最新版的mysql镜像,如果没加标签的话,默认获取最新的版本

    docker pull mysql
    docker pull mysql:8.0.28 带版本

    挂载数据卷以及配置文件

    运行mysql命名容器名称为mysqe并且设置root账号初始密码为root
    docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=“root” mysql
    参数说明: docker run:运行docker容器命令
    –name mysql :给容器设置别名
    -p 3306:3306:将容器的3306端口映射到宿主机的3306端口
    -e MYSQL_ROOT_PASSWORD=你的密码 : 初始化root用户登录密码
    -d : 后台运行容器,并返回容器id mysql:8.0.18:也可以使用镜像id,就是image ID
    -v 挂载文件或目录 :前表示主机部分,:后表示容器部分。
    –name=“名字” 指定容器名字
    -d 后台方式运行
    -it 使用交互方式运行,进入容器查看内容
    -p 主机端口:容器端口

    进入Docker容器内

    docker exec -it 容器id /bin/bash

    确定Docker内 MySQL 文件相关路径

    查找Docker内,MySQL配置文件my.cnf的位置 mysql --help | grep my.cnf
    在这里插入图片描述

    创建本地路径并挂载Docker内数据

    创建本地文件夹
    mkdir -p /home/docker/mysql/conf && mkdir -p /home/docker/mysql/data && mkdir -p /home/docker/mysql/logs

    修改文件权限为可编辑 *表示所有文件

    chmod -R 777 /home/docker/*

    修改配置文件

    执行下面命令进入到conf 目录中,并在该目录中创建my.cnf配置文件
    cd conf
    touch my.cnf

    # Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; version 2 of the License.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
    
    #
    # The MySQL  Server configuration file.
    #
    # For explanations see
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
    
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    secure-file-priv= NULL
    default-time-zone = '+8:00'
    
    #最大链接数
    max_connections=1024
    
    #是否对sql语句大小写敏感,1表示不敏感
    lower_case_table_names=1
    log_bin_trust_function_creators=1
    #启用log-bin
    log-bin=mysql-bin
    
    #设置日志格式
    binlog_format=mixed
    
    #设置binlog清理时间
    expire_logs_days=7
    
    # 数据表默认时区
    default-time-zone='+08:00'
    
    # Custom config should go here
    !includedir /etc/mysql/conf.d/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    将测试容器里 MySQL 的配置文件复制到该路径。日后需改配置,直接在挂载路径的配置文件上修改即可

    docker cp mysql:/etc/mysql/my.cnf /home/docker/mysql/conf
    · --name:为容器指定一个名字
    · -p:指定端口映射,格式为:主机(宿主)端口:容器端口
    · -e:username=“xxx”,设置环境变量
    · --restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
    · -mount:绑定挂载
    · -d:后台运行容器,并返回容器 id

    创建 MySQL 容器并启动

    docker run -p 3306:3306 --name mysql -v /home/docker/mysql/logs:/var/log/mysql -v /home/docker/mysql/data:/var/lib/mysql -v /home/docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --restart=always --privileged=true -d mysql:8.0.28

    停止docker

    docker stop 容器id

    删除docker

    docker rm容器id

    Docker启动容器自启

    docker update mysql --restart=always

    查看容器运行状态和日志

    查看容器运行状态:
    docker ps -a | grep 容器id

    查看容器日志:

    查看最后200条日志
    docker logs --tail=200 容器id

    滚动监听
    docker logs -f 容器id

    标题修改密码

    1、进入容器
    docker exec -it 容器id bash

    2、登录mysql
    mysql -u root -p

    3、使用mysql数据表
    use mysql;

    4、修改密码
    ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘密码’;

    5、刷新权限
    flush privileges;

    6、quit; (然后退出Mysql)

    7、重启容器
    在这里插入图片描述

    开启远程登录

    (解决mysql Operation ALTER USER failed for ‘root’@’%')

    1、进入容器
    docker exec -it 容器id bash

    2、登录mysql
    mysql -u root -p

    3、使用mysql数据表
    use mysql;

    4、查看user表中的数据:
    select Host, User from user;
    localhost 为本地登录
    在这里插入图片描述
    6、修改user表中的Host:
    update user set Host=‘%’ where User=‘root’;
    说明: % 代表任意的客户端,可替换成具体IP地址。
    在这里插入图片描述
    注意:一定要记得在写sql的时候要在语句完成后加上" ; "

  • 相关阅读:
    素皮材质的手机壳,如何才能做到经久耐用?
    java基础
    java毕业生设计在线购书商城系统计算机源码+系统+mysql+调试部署+lw
    网络安全工程师的职责 103.219.28.X
    Java EE——网络层IP协议的格式与内容解析
    神经网络迭代次数的一个近似关系
    互联网Java工程师面试题·Spring篇·第六弹
    python进制和编码
    vscode搭建Verilog HDL开发环境
    海盗分金博弈
  • 原文地址:https://blog.csdn.net/qq_25288617/article/details/125423194