SQLSTATE[HY000] [2002] 连接被拒绝 Laravel 5.6 和 Laradock
SQLSTATE[HY000] [2002] Connection refused Laravel 5.6 and Laradock
我的数据库有问题 mysql。我无法访问它,我有一个 laravel 项目,我添加了 Laradock 以便能够使用带有 Docker 的容器。我启动了两个容器,在我的 laradock 目录中键入 docker-compose up -d mysql nginx。启动容器后,我可以访问 Laravel 的主页,但是当我想与我的数据库通信时出现以下错误:
SQLSTATE [HY000] [2002] Connection refused.
有人知道我问题的根源。谢谢。
i am on ubuntu 17.10
Docker version 17.12.0-ce, build c97c6d6
我在项目中的 .env 文件在这里
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=db_authors
DB_USERNAME=root
DB_PASSWORD=root
.env 文件夹中的 laradock 文件是
MYSQL_VERSION=8.0
MYSQL_DATABASE=db_authors
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
这是我的 docker-compose.yml
中的 mysql 容器
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_SAVE_PATH}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
我的容器启动良好,这是我通过
得到的结果
docker-compose up -d mysql nginx
Creating network "laradock_default" with the default driver
Creating laradock_mysql_1 ... done
Creating network "laradock_backend" with driver "bridge"
Creating laradock_workspace_1 ... done
Creating laradock_applications_1 ...
Creating laradock_php-fpm_1 ... done
Creating laradock_php-fpm_1 ...
Creating laradock_nginx_1 ... do
尝试以下操作:
1 - 输入 MySQL 容器:docker-compose exec mysql bash。
2 - 输入 mysql:mysql -uroot -proot
3 - 查看所有用户:SELECT User FROM mysql.user;
4 - 运行 任何命令显示数据库、显示表,select * 来自......
有用吗?你能这样登录MySQL吗?
我的数据库有问题 mysql。我无法访问它,我有一个 laravel 项目,我添加了 Laradock 以便能够使用带有 Docker 的容器。我启动了两个容器,在我的 laradock 目录中键入 docker-compose up -d mysql nginx。启动容器后,我可以访问 Laravel 的主页,但是当我想与我的数据库通信时出现以下错误:
SQLSTATE [HY000] [2002] Connection refused.
有人知道我问题的根源。谢谢。
i am on ubuntu 17.10
Docker version 17.12.0-ce, build c97c6d6
我在项目中的 .env 文件在这里
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=db_authors
DB_USERNAME=root
DB_PASSWORD=root
.env 文件夹中的 laradock 文件是
MYSQL_VERSION=8.0
MYSQL_DATABASE=db_authors
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
这是我的 docker-compose.yml
中的 mysql 容器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_SAVE_PATH}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
我的容器启动良好,这是我通过
得到的结果docker-compose up -d mysql nginx
Creating network "laradock_default" with the default driver
Creating laradock_mysql_1 ... done
Creating network "laradock_backend" with driver "bridge"
Creating laradock_workspace_1 ... done
Creating laradock_applications_1 ...
Creating laradock_php-fpm_1 ... done
Creating laradock_php-fpm_1 ...
Creating laradock_nginx_1 ... do
尝试以下操作: 1 - 输入 MySQL 容器:docker-compose exec mysql bash。 2 - 输入 mysql:mysql -uroot -proot 3 - 查看所有用户:SELECT User FROM mysql.user; 4 - 运行 任何命令显示数据库、显示表,select * 来自......
有用吗?你能这样登录MySQL吗?