mysql 8 docker-compose

18 min read

初始化数据库文件

CREATE DATABASE IF NOT EXISTS tank;
# grant all privileges on dbname.tablename to 'nacos'@'%';
# 比如想给用户nacos赋予数据库test所有的表的权限并且不限制root用户的连接地址,代码如下
grant all privileges on tank.* to 'test'@'%';
# 刷新权限
flush privileges;

Mysql8 docker-compose

version: "3"
services:
  db:
    image: mysql
    container_name: mysql

    environment:
      TZ: Asia/Shanghai
      MYSQL_USER: test   #创建test用户
      MYSQL_PASSWORD: test  #设置test用户的密码
      MYSQL_ROOT_PASSWORD: root  # root 密码
    ports:
      - "3306:3306"
    restart: always
    volumes:
      - './docker/db/mysql:/var/lib/mysql'
      - './docker/db/conf:/etc/mysql/conf.d'
        # 初始化目录挂载
      - './mysql/init/:/docker-entrypoint-initdb.d/:rw'
    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

强制重新构建

docker-compose up --force-recreate

删除所有数据

docker-compose down -v