docker-compose 安裝 mysql並初始化用戶與sql文件


docker-compose.yml文件

version: '3'
 
services:
  mysql8.0:
    # 鏡像名
    image: mysql:8.0.21
    # 容器名(以后的控制都通過這個)
    container_name: mysql8.0
    # 重啟策略
    restart: always
    environment:
      # 時區上海
      TZ: Asia/Shanghai
      # root 密碼
      MYSQL_ROOT_PASSWORD: root
      # 初始化數據庫(后續的初始化sql會在這個庫執行)
      MYSQL_DATABASE: nacos_config
      # 初始化用戶(不能是root 會報錯, 后續需要給新用戶賦予權限)
      MYSQL_USER: nacos
      # 用戶密碼
      MYSQL_PASSWORD: nacos
      # 映射端口
    ports:
      - 3306:3306
    volumes:
      # 數據掛載
      #- /root/mysql/data/:/var/lib/mysql/
      # 配置掛載
      #- /root/mysql/conf/:/etc/mysql/conf.d/
      # 初始化目錄掛載,注意此處我只跑了這個掛載,只是為了說明其他配置不應該數據初始化
      - /root/mysql/init/:/docker-entrypoint-initdb.d/
    command:
      # 將mysql8.0默認密碼策略 修改為 原先 策略 (mysql8.0對其默認策略做了更改 會導致密碼無法匹配)
      --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

如果在sql文件內,需要手動賦予用戶權限

    # grant all privileges on dbname.tablename to 'userName'@'%';
    # 比如想給用戶nacos賦予數據庫test所有的表的權限並且不限制nacos用戶的連接地址,代碼如下
    grant all privileges on test.* to 'nacos'@'%';
    # 刷新權限
    flush privileges;

三 mysql8.*才開始出現的坑

1.初始化的用戶不能是root!差評!

2.默認密碼策略的要改為mysql_native_password,否則就是報錯!差評

3.如果是幾個.sql文件,記得寫上user database語句,因為初始化順序是按文件名來的。

 


免責聲明!

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



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