docker上的Mysql给出“连接被拒绝”错误

时间:2021-02-20 08:04:56

标签: mysql laravel docker-compose laravel-8 connection-refused

我使用 docker-compose 创建了我的 Laravel 项目。我在本地创建了一个名为 fhblog 的数据库。当我进入 php 容器并运行 In set_callback().. In foo().. Raku callback.. got string: hello from C Raku return value: 32 命令时,出现以下错误。

php artisan migrate

我搜索了问题的解决方案并按照人们的建议进行了操作,但错误无法解决。

我的 .env 文件

SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = fhblog and table_name = migrations and table_type = 'BASE TABLE')

我的 mysql 容器

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=fhblog
DB_USERNAME=fhblog
DB_PASSWORD=root

在我的研究中,建议运行 . . . db: image: mysql:5.7.22 container_name: mysql restart: unless-stopped tty: true ports: - "3306:3306" environment: MYSQL_ROOT_USER: root MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: fhblog MYSQL_USER: fhblog MYSQL_PASSWORD: root SERVICE_TAGS: dev SERVICE_NAME: mysql volumes: - ./docker/mysql/db:/var/lib/mysql - ./docker/mysql/my.cnf:/etc/mysql/my.cnf networks: - app-network . . . php artisan cache:clear 命令,因为它们可以保留在“缓存”中。这些命令也没有解决我的问题。错误在哪里?

2 个答案:

答案 0 :(得分:1)

我之前尝试过我的 mysql IP。当我在 DBeaver 上收到连接拒绝错误时,它给了我 17.23.0.1 的 IP 地址。我以为这是我的mysql IP,就这样试过了。我想查看我的容器 IP 并尝试了以下命令。出来的IP不一样。有了这个 IP,我终于可以运行 php artisan migrate 代码了。

docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

答案 1 :(得分:0)

我认为你应该使用mysql的内部ip而不是容器名称; 登录到 mysql 容器并运行 bash 然后输入 ifconfig 可能你的ip地址是这样的

172.0.0.23

复制粘贴到前面

DB_HOST=

但首先尝试使用容器名称作为您的

DB_HOST=mysql

甚至将其重命名为 mysql 以外的其他名称

例如 mysql_container

container_name: mysql_container
...
DB_HOST=mysql_container
相关问题