![](/img/trans.png)
[英]PDOException::("SQLSTATE[HY000] [2002] Connection refused" in laravel
[英]PDOException: SQLSTATE[HY000] [2002] Connection refused
我刚遇到这个
PDOException: SQLSTATE[HY000] [2002] Connection refused in /var/www/html/inc/config/db.php on line 11
一开始我认为这与 mysql 服务器有关,但经过数小时的尝试和错误,我发现错误来自 PDO,如果使用 mysqli_connect 根本没有错误
$conn = new PDO("mysql:host=127.0.0.1;dbname=docker", "root", "tiger");
$conn = mysqli_connect("mysql", "root", "tiger", null);
我还尝试了不同的数据库,甚至新创建的数据库
有谁知道为什么一个工作另一个不工作? ?
编辑:我正在使用 docker-compose 来设置环境。 这里是 docker-compose.yaml
version: "3"
services:
webserver:
build:
context: ./bin/webserver
container_name: '7.1.x-webserver'
restart: 'always'
ports:
- "80:80"
- "443:443"
links:
- mysql
volumes:
- ${DOCUMENT_ROOT-./www}:/var/www/html
- ./config/php/php.ini:/usr/local/etc/php/php.ini
- ${VHOSTS_DIR-./config/vhosts}:/etc/apache2/sites-enabled
- ${LOG_DIR-./logs/apache2}:/var/log/apache2
mysql:
build: ./bin/mysql
container_name: '5.7-mysql'
restart: 'always'
ports:
- "3306:3306"
volumes:
- ${MYSQL_DATA_DIR-./data/mysql}:/var/lib/mysql
- ${MYSQL_LOG_DIR-./logs/mysql}:/var/log/mysql
environment:
MYSQL_ROOT_PASSWORD: tiger
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: 'sc-phpmyadmin'
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- '8080:80'
volumes:
- /sessions
redis:
container_name: 'sc-redis'
image: redis:latest
ports:
- "6379:6379"
mongo:
container_name: 'mongodb'
image: mongo:4.0.12-xenial
restart: 'always'
ports:
- "${HOST_MACHINE_MONGO_PORT}:27017"
volumes:
- ${MONGO_DATA_DIR-./data/mongodb}:/data/db
- ${MONGO_LOG_DIR-./logs/mongodb/mongod.log}:/var/log/mongodb/mongod.log
- ${MONGO_CONF-./config/mongodb/mongod.conf}:/etc/mongod.conf
我找到了连接不工作的原因,是因为连接试图连接到端口 8888。当它需要连接到端口 8889 时。
$conn = new PDO("mysql:host=127.0.0.1;port=8889;dbname=docker", "root", "tiger");
要在端口上查找侦听器,请执行以下操作:
netstat -tln
如果 MySQL 确实在该端口上侦听,您应该会看到如下所示的行。
tcp 0 0 127.0.0.1:3306 0.0.0.0:*
端口 3306 是 MySql 的默认端口。
如果您想知道Mysql 正在运行的本地主机的端口号,您可以在 MySQL 命令行客户端上使用此查询——
SHOW VARIABLES WHERE Variable_name = 'port';
mysql> SHOW VARIABLES WHERE Variable_name = 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.00 sec)
它将为您提供 MySQL 正在运行的端口号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.