我正在 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 服务),错误总是拒绝访问
我也多次遇到这个问题,默认情况下MySQL允许root用户访问localhost,这意味着即使你打开了3306:3306端口,你仍然需要添加用户。
按照这些命令操作,错误就会解决!