zoukankan      html  css  js  c++  java
  • 20211112_mysql_8.0docker部署踩坑

    1. Failed to initialize DD Storage Engine
    这个错误应该是要删除 /var/lib/mysql 下你的数据文件才行, 如果你的data挂载出来就删除挂载的目录
    2. Different lower_case_table_names settings for server ('0') and data dictionary ('1').
    这个可以说是8.0的一个经典错误了, 在docker-compose下怎么部署都不行, 除非你不加这一句 lower_case_table_names=1 
    但是不加这一句的话, 项目中又使用了定时任务, 定时任务的表名都是大写的 
    两种解决方案: 
    1. 让开发在生成表的时候, 全部改成小写的表名; 
    2. 使用docker run来运行, 不要使用docker-compose
     
    docker run语句:
    docker pull mysql:8.0.22 #拉镜像 --不用dockerfile文件, 拉完镜像直接run 
    docker run --name us-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456789 -d \
    -v /home/wi/mysql/conf:/etc/mysql/conf.d \
    -v /home/wi/mysql/data:/var/lib/mysql \
    -v /home/wi/mysql/logs:/logs \
    -v /home/wi/mysql/sql:/home/sql \
    --network wi_default \
    -e MYSQL_ROOT_PASSWORD=123456789 \
    -e TZ="Asia/Shanghai" \
    -v /etc/localtime:/etc/localtime:ro \
    --restart=always \
    mysql:8.0.22 \
    --character-set-server=utf8mb4 \
    --collation-server=utf8mb4_unicode_ci \
    --lower_case_table_names=1 #就是这个, 这句话一定要加在最后, 最少要加在镜像的后面
    run完之后, 还没完, 这种是不能直接使用功能终端工具连接的, 需要进入容器操作一下:
    docker exec -it 容器id bash
    mysql -u root -p 
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; 
    #这是改root用户通过本地连接时的密码验证方式
    2ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 
    #这是改root用户通过 任意地址 连接时的密码验证方式
    
    
    完了之后刷新权限:
    flush privileges; # 完后之后就可以使用终端连接了

    不要想着用docker-compose来部署, 没有用的, 比如下面的命令, 我试了各种方法, 直接用docker-compose不行的:
    version : '3.8'
    services: 
    # mysql 8      
      us-mysql:
        container_name: us-mysql
        image: mysql:8.0.22
        # build:
        #   context: ./mysql
        ports:
          - "3306:3306"
        restart: always
        volumes:
          # - /home/wi/mysql/my.cnf:/etc/mysql/my.cnf
          - /home/wi/mysql/conf:/etc/mysql/conf.d
          - /home/wui/mysql/data:/var/lib/mysql
          - /home/wi/mysql/logs:/logs
          - /home/wi/mysql/sql:/home/sql
        command:  #这个命令通过配置文件完成
          --default-authentication-plugin=mysql_native_password
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
          # --lower_case_table_names=1   #这一句就是万恶之源
          --max_allowed_packet=128M 
        # command:
        #   -- apt-get update
        #   -- apt-get install vim
        environment:
          TZ: Asia/Shanghai
          MYSQL_DATABASE: 'us'
          MYSQL_ROOT_PASSWORD: 123456789 
          # MYSQL_USER: users
          # MYSQL_PASSWORD: users
        networks:
          - persist
    
    #networks
    networks:
        persist:
          external:
            name: wi_default


  • 相关阅读:
    团队博客——1
    团队博客3
    团队博客6
    团队博客2
    团队博客8
    团队博客4
    团队博客7
    安装“消息队列 (MSMQ)”
    服务端上传文件到共享目录
    数据库变成可疑状态
  • 原文地址:https://www.cnblogs.com/wxylog/p/15545982.html
Copyright © 2011-2022 走看看