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

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM