代码之家  ›  专栏  ›  技术社区  ›  Kamil Kiełczewski

mac os上的mysql docker在laravel连接时在缓存上“崩溃”

  •  1
  • Kamil Kiełczewski  · 技术社区  · 7 年前

    我在我的MacMini上重置了工厂,我只想在OSX上直接安装Docker和一些基本的工具,比如git,但是其他的软件我想用Docker-其他的软件我是说像php,phpstorm,nginx,node,mysql,postgres,phpmyadmin,mysql workbench。。。有很多版本。我想用docker来安装它们以便于管理。对于每一个工具,我都需要映射文件夹,例如我的项目代码或数据库存储、配置等。。。

    在安装mysql 8的过程中,我遇到了一个奇怪的问题-我可以通过phpmyadmin和mysql workbench以根用户身份登录到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上通过命令运行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 
    

    运行php cmd docker container的Bash脚本,并“登录”它以获取命令行:

    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::\uu construct():

    执行缓存时出现意外的服务器响应\u sha2身份验证:109

    1 回复  |  直到 7 年前
        1
  •  1
  •   Kamil Kiełczewski    7 年前

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

    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
    
    推荐文章