laravel连接时,mac os上的mysql docker在caching_sha2上“崩溃”

时间:2018-08-09 20:33:45

标签: docker laravel-5 php-7 mysql-8.0

我在Mac Mini上进行了出厂重置,我只想在OS X上直接安装Docker和一些基本工具(如git),而对于其他我想使用docker的软件,我要使用其他软件,例如php,phpstorm,nginx ,节点,mysql,postgres,phpmyadmin,mysql-workbench ...的许多版本。我想使用docker安装它们以轻松管理它们。对于此工具中的每一个,我都想使用例如我的项目或db storagem的代码,配置等...

在安装mysql 8期间,我遇到一个奇怪的问题-我能够通过phpmyadmin和mysql-workbench作为root登录到db,但是我的php 7 laravel应用在连接期间“挂起”。这是mysql dockerfile:

version: '3.1'

services:

  db:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: terefere321
      MYSQL_ROOT_HOST: "%"
    ports:
      - 3306:3306
    volumes:
    - ./db_files:/var/lib/mysql

这是docker文件+脚本,可让我在docker上通过cmd运行php:

FROM php:7.2-apache

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN apt-get update &&\
    apt-get install -y \
    git \
    zlib1g-dev \
    zip \
    unzip \
    &&\ 
    docker-php-ext-install pdo pdo_mysql zip &&\
    a2enmod rewrite 

Bash脚本运行php-cmd docker容器并“登录”以获取命令行:

set -e
cd -- "$(dirname "$0")"  # go to script dir - (for macos double clik run)
docker build -t php-cmd .
docker rm -f php-cmd
docker run -d --name php-cmd -v /Volumes/work:/var/www/html php-cmd
docker exec -it php-cmd /bin/bash

这里/Volumes/work是包含我的项目代码的目录。 “登录”后,我运行php artisan migrate,应用挂起30秒,并抛出错误:

  

SQLSTATE [HY000] [2006] MySQL服务器已消失PDO :: __ construct():

     

执行caching_sha2 auth时,服务器意外重新放置:109

1 个答案:

答案 0 :(得分:1)

向mysql8 dockerfile添加default-authentication-plugin=mysql_native_password命令-因此您应该获得:

version: '3.1'

services:

  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: terefere321
      MYSQL_ROOT_HOST: "%"
    ports:
      - 3306:3306
    volumes:
    - ./db_files:/var/lib/mysql