zoukankan      html  css  js  c++  java
  • 【Docker搭建】1. 在Docker中安装MySQL5.7

    1. 安装 Docker ,详细请看安装教程。若已安装,请看 2.

    2. 拉取 MySQL 镜像

    docker pull mysql:5.7

    3. 设置 MySQL 配置文件

    将全部的配置文件和关联的文件夹统一放到 /opt/docker/mysql

    创建 MySQL 配置文件文件夹
    mkdir -p /opt/docker/mysql/conf.d

    增加并修改配置文件 config-file.cnf
    vim /opt/docker/mysql/conf.d/config-file.cnf

    输入如下内容:

    [mysqld]
    # 设置表名不区分大小写  linux下默认是区分的,windows下默认不区分
    lower_case_table_names=1 
    #server-id=1
    datadir=/var/lib/mysql
    #socket=/var/lib/mysql/mysqlx.sock
    #symbolic-links=0
    # sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    

    4. 启动

    创建 MySQL 数据文件夹
    mkdir -p /opt/docker/mysql/var/lib/mysql

    启动,设置默认密码 root,TZ 设置容器的默认时区

    docker run --name mysql 
        --restart=always 
        -p 3306:3306 
        -v /opt/docker/mysql/conf.d:/etc/mysql/conf.d 
        -v /opt/docker/mysql/var/lib/mysql:/var/lib/mysql 
        -e MYSQL_ROOT_PASSWORD=root 
        -e TZ=Asia/Shanghai 
        -d mysql:5.7
    

    5. 修改密码

    进入容器
    docker exec -it mysql bash

    进入 MySQL
    mysql -uroot -p
    输入刚才我们设置的密码 root

    授权
    mysql> GRANT ALL ON *.* TO 'root'@'%';

    刷新权限
    mysql> flush privileges;

    更新加密规则
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;

    更新 root 密码
    mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

    刷新权限
    mysql> flush privileges;

    退出容器
    exit

    6. 常用命令

    启动容器
    docker start mysql

    停止容器
    docker stop mysql

    重启容器
    docker restart mysql

    进入容器
    docker exec -it mysql bash

    删除容器
    docker rm mysql

    查看日志
    docker logs -f mysql

    备份数据
    docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p 密码' > /usr/local/all-databases.sql

    恢复数据
    docker exec -i mysql sh -c 'exec mysql -uroot -p 密码' < /usr/local/all-databases.sql

    7. 其他问题

    only_full_group_by 问题
    如果安装的版本是5.7版本, 查询数据时出现如下错误:
    this is incompatible with sql_mode=only_full_group_by

    1. 查询sql_mode

    select @@sql_mode

    结果如下
    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    2. 重置

    删除其中的ONLY_FULL_GROUP_BY配置,重新设置到config-file.cnf
    vim /opt/docker/mysql/conf.d/config-file.cnf

    [mysqld]
    # 表名不区分大小写
    lower_case_table_names=1 
    #server-id=1
    datadir=/var/lib/mysql
    #socket=/var/lib/mysql/mysqlx.sock
    #symbolic-links=0
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    3. 重启容器

    docker restart mysql

  • 相关阅读:
    HNOI2003 消防局的设立
    APIO2007 风铃
    SDOI2006 保安站岗
    消息传递
    [POI2008]STA-Station
    JLOI2015 城池攻占
    BOI2004 sequence
    Monkey King
    APIO2012 Dispatching
    HTML meta 文本 格式排版 链接图表 列表 表单 frame后台布局实例
  • 原文地址:https://www.cnblogs.com/zilongmao/p/14481397.html
Copyright © 2011-2022 走看看