连接到mysql容器时如何修复“用户'root'@'172.22.0.4'访问被拒绝(使用密码:YES)”?

joe*_*inz 5 mysql docker

我正在 docker 容器中创建一个 laravel 项目,以及 MySQL 和 phpmyadmin,当尝试迁移(或从 phpmyadmin 访问数据库)时,我收到访问被拒绝错误。

我已经尝试了几种 SOF 解决方案,但没有一个起作用,也尝试了 GitHub issues 中的解决方案。

这是我的 docker-compose.yml

version: "3"

services:
  web:
    container_name: ${APP_NAME}_web
    build:
      context: ./docker/web
    ports:
      - 9000:80
    volumes:
      - ./:/var/www/app
    networks:
      - mynet
  db:
    image: mysql:5.7
    container_name: db
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: laracocodb
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - mysqldata:/var/lib/mysql/
    networks:
      - mynet

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpma
    links:
      - db:db
    ports:
      - 9191:80
    environment:
      MYSQL_USERNAME: root
      MYSQL_ROOT_PASSWORD: root
      PMA_HOST: db
    networks:
      - mynet
networks:
  mynet:
    driver: bridge
volumes:
  mysqldata:
    driver: local
Run Code Online (Sandbox Code Playgroud)

无论我在哪里访问数据库(从 db 容器 bash、从 phpmyadmin 索引页或尝试迁移数据库时从 Web 服务),错误总是拒绝访问

Gee*_*bey 3

我也多次遇到这个问题,默认情况下MySQL允许root用户访问localhost,这意味着即使你打开了3306:3306端口,你仍然需要添加用户。

按照这些命令操作,错误就会解决!

/sf/answers/785791191/