SQLSTATE[HY000] [1045] 使用 Docker 拒绝用户“root”@“172.19.0.4”的访问

zla*_*tan 7 mysql laravel docker

我目前正在学习在 Windows 上使用 Docker,我正在学习本教程。对于 Docker 设置,我使用的是 Laradock。我正在尝试运行mysql apache2 rabbitmq 和 phpmyadmin容器我所做的一切都与视频中的一样,但是当我尝试迁移我的表时,出现以下错误:

Illuminate\Database\QueryException : SQLSTATE[HY000] [1045] 用户 'root'@'172.19.0.4' 访问被拒绝(使用密码:YES)

我在 phpmyadmin 中创建了空数据库。

一切都在我的项目 .env 和 laradock/.env 中配置

我的项目环境:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=my_database_name
DB_USERNAME=root
DB_PASSWORD=*********
Run Code Online (Sandbox Code Playgroud)

我仔细检查了我的密码,它是正确的。

我的 laradock/.env 配置:

MYSQL_VERSION=latest
MYSQL_DATABASE=my_database_name
MYSQL_USER=root
MYSQL_PASSWORD=******
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=******
Run Code Online (Sandbox Code Playgroud)

Docker-compose.yml 配置:

mysql:
  build:
    context: ./mysql
    args:
      - MYSQL_VERSION=${MYSQL_VERSION}
  environment:
    - MYSQL_DATABASE=${MYSQL_DATABASE}
    - MYSQL_USER=${MYSQL_USER}
    - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    - TZ=${WORKSPACE_TIMEZONE}
  volumes:
    - ${DATA_PATH_HOST}/mysql:/var/lib/mysql
    - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  ports:
    - "${MYSQL_PORT}:3306"
  networks:
    - backend
Run Code Online (Sandbox Code Playgroud)

为了确保我的所有容器都在工作,我输入了这个命令,我得到了以下响应:

docker-compose ps
Run Code Online (Sandbox Code Playgroud)

上一个命令的响应

我的 phpmyadmin 中的 root 用户:

图片

zla*_*tan 1

通过将我的 .env mysql 用户名和密码配置更改为:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=my_database_name
DB_USERNAME=root
DB_PASSWORD=root
Run Code Online (Sandbox Code Playgroud)

并将 laradock/.env 配置中的 mysql 版本更改为:

MYSQL_VERSION=5.7
MYSQL_DATABASE=my_database_name
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
Run Code Online (Sandbox Code Playgroud)

之后,我停止了所有容器:

docker-compose down
Run Code Online (Sandbox Code Playgroud)

下一步是使用新配置构建 mysql 容器:

docker-compose build --no-cache mysql
Run Code Online (Sandbox Code Playgroud)

之后,我再次运行所有容器

docker-compose up -d mysql apache2 rabbitmq phpmyadmin
Run Code Online (Sandbox Code Playgroud)

导航到工作区工作目录并迁移我的表:

php artisan migrate
Run Code Online (Sandbox Code Playgroud)

一切都按预期进行:

迁移表创建成功。

迁移:2018_11_28_114446_create_accounts_table

迁移:2018_11_28_114446_create_accounts_table