【问题标题】:Access denied for user 'root'@'192.168.128.3' in Laravel project in Docker在 Docker 的 Laravel 项目中,用户 'root'@'192.168.128.3' 的访问被拒绝
【发布时间】:2020-09-20 13:24:23
【问题描述】:

我尝试在 Docker 中设置 Laravel 项目。 我的 docker-compose.yml:

version: "2"
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      - MYSQL_DATABASE=identy
      - MYSQL_USER=root
      - MYSQL_PASSWORD=654321
      - MYSQL_HOST=db
    ports:
      - "8080:80"
    volumes:
      - .:/var/www
    depends_on:
      - db
    networks:
      - identy-network

  db:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=654321
      - MYSQL_USER=root
      - MYSQL_PASSWORD=654321
      - MYSQL_DATABASE=identy
    volumes:
      - "mysql_data:/var/lib/mysql"
      - ./data/schema.sql:/docker-entrypoint-initdb.d/schema.sql
    networks:
      - identy-network

volumes:
  mysql_data:
    driver: local

networks:
  identy-network:

我的 Dockerfile:

FROM php:7.4-apache

RUN apt-get update \
    && apt-get install -y vim git zlib1g-dev mariadb-client libzip-dev \
    && docker-php-ext-install zip mysqli pdo_mysql \
    && pecl install xdebug \
    && docker-php-ext-enable xdebug \
    && echo 'xdebug.remote_enable=on' >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo 'xdebug.remote_host=host.docker.internal' >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo 'xdebug.remote_port=9000' >>  /usr/local/etc/php/conf.d/xdebug.ini \
    && a2enmod rewrite \
    && sed -i 's!/var/www/html!/var/www/public!g' /etc/apache2/sites-available/000-default.conf \
    && mv /var/www/html /var/www/public \
    && curl -sS https://getcomposer.org/installer \
    | php -- --install-dir=/usr/local/bin --filename=composer \
    && echo "AllowEncodedSlashes On" >> /etc/apache2/apache2.conf

WORKDIR /var/www

.env:

...
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=identy
DB_USERNAME=root
DB_PASSWORD=654321
...

当我跑步时 docker exec identy-api_web_1 php artisan 迁移 我得到错误: ** 照亮\数据库\查询异常

SQLSTATE[HY000] [1045] 用户'root'@'192.168.144.3'的访问被拒绝(使用密码:YES)(SQL:select * from information_schema.tables where table_schema = identy and table_name = migrations and table_type = '基表') **

我不知道为什么它不起作用。

【问题讨论】:

    标签: mysql laravel docker


    【解决方案1】:

    我认为,您没有权限从 mysql 服务器上的远程主机访问数据库。您需要允许从 mysql 服务器上的任何主机远程访问 root。

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.144.3' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
    

    【讨论】:

      【解决方案2】:

      我认为您应该删除卷数据并重试。

      【讨论】:

        【解决方案3】:

        您不需要定义MYSQL_USER=root。试试这个(它也会创建身份数据库):

        db:
          image: mysql:8.0
          ports:
            - "3306:3306"
          environment:
            - MYSQL_ROOT_PASSWORD=654321
          networks:
            - identy-network
          volumes:
            - "mysql_data:/var/lib/mysql"
          entrypoint: sh -c "
            echo 'CREATE DATABASE IF NOT EXISTS identy;' > /docker-entrypoint-initdb.d/init.sql;
            /usr/local/bin/docker-entrypoint.sh --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"
        

        【讨论】:

        • 感谢您的努力。我不确定我是否理解得很好:我根据您的建议更改了 docker-compose yml,但仍然出现错误:'SQLSTATE[HY000] [1045] Access denied for user 'root'@'192.168.80.3' (using password : YES) ' 当我尝试执行 'docker exec identy-api_web_1 php artisan migrate'
        • 嗯,你改了docker-comose.yml后又重新构建并设置了db服务吧?
        猜你喜欢
        • 2015-07-04
        • 2020-11-13
        • 2020-09-26
        • 1970-01-01
        • 1970-01-01
        • 2013-07-28
        • 2017-07-10
        • 2023-03-20
        相关资源
        最近更新 更多