1. 程式人生 > 實用技巧 >docker-compose 安裝 mysql並初始化使用者與sql檔案

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語句,因為初始化順序是按檔名來的。