version: '3'

services:
  mysql:
    image: mysql:8.0.27
    restart: always
    container_name: mysql
    command:
    # MySQL8的密码验证方式默认是 caching_sha2_password,但是很多的连接工具还不支持该方式
    # 就需要手动设置下mysql的密码认证方式为以前的 mysql_native_password 方式
      --default-authentication-plugin=mysql_native_password
    ports:
      - "3306:3306"
    volumes:
      - /data/mysql/conf:/etc/mysql
      - /data/mysql/logs:/logs
      - /data/mysql/data:/var/lib/mysql
      - /data/mysql/mysql-files:/var/lib/mysql-files/
    environment:
     MYSQL_ROOT_PASSWORD: “123456”
     MYSQL_USER: 'root'
     MYSQL_PASS: '123456'
     TZ: Asia/Shanghai

注意

设置密码只有在第一次启动的时候有效,后面修改密码通过MySQL 命令修改密码。
原因
docker容器生成后数据存放在data目录,第二次启动直接从data读取数据,所以密码还是原来的密码,设置不会生效。
data目录是原来的拷贝的,设置密码也不会生效,需要通过命令修改密码。