当前位置: 首页 > 知识库问答 >
问题:

拒绝访问用户'root'@'192.168.128.3'在Laravel项目中的Docker

许自强
2023-03-14

我试图在Docker建立Laravel项目。我的码头工人。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_1php artisan迁移我得到错误:**照明\数据库\QueryExc0019

SQLSTATE[HY000][1045]拒绝访问用户'root'@'192.168.144.3'(使用密码:YES)(SQL:选择*从information_schema.tables其中table_schema=IDTY和table_name=迁移和table_type='BASE TABLE')***

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

共有3个答案

秦才
2023-03-14

您不需要定义MYSQL_USER=root。试试这个(它也会创建identidb):

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"
欧阳勇
2023-03-14

我认为您应该删除卷数据,然后再试一次。

隆功
2023-03-14

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

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.144.3' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
 类似资料:
  • 伙计们,我有共同的问题。我想用PHP将MySQL数据库中的数据显示到HTML页面中。 使用此代码: 但我有

  • 问题内容: 我正在尝试从数据库中获取记录。但我正面临拒绝访问的问题。我尝试了在堆栈溢出中提到的其他解决方案,例如向用户授予特权。 访问数据库的代码: 错误的堆栈跟踪: 在这种情况下可能是什么问题。我尝试创建一个新的数据库,但是也没有用。 问题答案: 问题是授予表根用户的权限。’root’@’%’没有任何权限。.就像我以前用作连接地址一样,因此它给出了拒绝访问错误.. 是IP地址的通配符。所以mys

  • 这是我的代码: 对于dbServername,我尝试过使用localhost、localhost:8080、localhost:3306和127.0.0.1,但只有127.0.0.1和localhost:3306似乎通过了测试,并给出了可能的错误。我在localhost(没有这样的文件或目录*)和localhost:8080(MySQL已经消失)中遇到了不同的错误。 因此,考虑到IP as dbS

  • 在Ubuntu中使用MySQL我做了以下步骤: 我收到一个错误: 拒绝用户“root”@"localhost“的访问(使用密码:YES)

  • 为了上学,我必须使用PHP和MySQL建立和基本的网站。网站的功能是允许用户注册,然后登录和退出。为了做到这一点,因为我没有PHP的先验知识,我试图遵循这个教程。我得到了戈达迪的服务器空间,并使用MySQL创建了一个名为details_db的数据库。我创建了教程告诉我的文件并上传到服务器。现在,当我进入网站时,我得到了这些错误。 警告:mysql_connect():拒绝访问用户'root'@'l

  • 我正在尝试从Spring启动连接MySQL db,但我收到此错误为: 我的application.properties档案看起来像 用户名“root”和密码“root”正确,因为我可以从命令行登录到root。我已经尝试了java.sql中的所有方法。SQLException:用户“root”@“ocalhost”的访问被拒绝(使用密码:YES)