豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: php连接mysql docker

🤖 Ai回答:
在 PHP 中连接 MySQL Docker 容器,你可以按照以下步骤进行配置。这个过程包括:

1、启动 MySQL 容器
2、配置 PHP 连接 MySQL
3、确保网络互通

✅ 步骤 1:运行 MySQL Docker 容器

使用 `docker run` 启动一个 MySQL 容器,例如:

bash
docker run name mysql-container \
-e MYSQL_ROOT_PASSWORD=your_password \
-e MYSQL_DATABASE=myapp \
-e MYSQL_USER=myuser \
-e MYSQL_PASSWORD=mypassword \
-p 3306:3306 \
-d mysql:8.0

说明:
`-e` 设置环境变量(如用户名、密码、数据库名)
`-p 3306:3306` 将宿主机的 3306 端口映射到容器
`mysql:8.0` 使用 MySQL 8.0 镜像

✅ 步骤 2:PHP 连接 MySQL

方法一:使用 PDO(推荐)

php
<?php
try {
$pdo = new PDO(
'mysql:host=localhost;dbname=myapp;charset=utf8',
'myuser',
'mypassword',
[
PDO::ATTR_ERRMODE = PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE = PDO::FETCH_ASSOC,
]
);

// 测试查询
$stmt = $pdo-query(SELECT VERSION());
$version = $stmt-fetch();
echo MySQL Version: 、$version['VERSION()'];
} catch (PDOException $e) {
echo Connection failed: 、$e-getMessage();
}
?

方法二:使用 MySQLi

php
<?php
$mysqli = new mysqli(localhost, myuser, mypassword, myapp);

if ($mysqli-connect_error) {
die(Connection failed: 、$mysqli-connect_error);
}

echo Connected successfully;

$result = $mysqli-query(SELECT VERSION());
$row = $result-fetch_assoc();
echo MySQL Version: 、$row[VERSION()];
?

✅ 步骤 3:Docker 网络配置(可选但推荐)

如果你希望 PHP 应用也运行在 Docker 中,建议使用 Docker Compose 来管理多个服务。

示例 `docker-compose.yml`

yaml
version: '3.8'

services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: your_password
MYSQL_DATABASE: myapp
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
ports:
3306:3306
volumes:
mysql_data:/var/lib/mysql

php-app:
image: php:8.1-apache
depends_on:
mysql
ports:
8080:80
volumes:
./www:/var/www/html
networks:
app-network

volumes:
mysql_data:

networks:
app-network:
driver: bridge

然后运行:

bash
docker-compose up -d

此时,在 PHP 代码中连接 MySQL 应使用容器名作为主机:

php
$pdo = new PDO(
'mysql:host=mysql;dbname=myapp;charset=utf8', // host 是 mysql(容器名)
'myuser',
'mypassword'
);

注意:当两个服务在同一个 Docker 网络中时,可以直接用服务名(如 `mysql`)访问。

🛠️ 常见问题排查

| 问题 | 解决方案 |

| `Connection refused` | 检查 MySQL 是否已启动,端口是否映射正确 |
| `Access denied` | 检查用户名、密码、数据库权限 |
| `Can't connect to MySQL server on 'localhost'` | 如果 PHP 在容器中,应使用 `mysql` 而不是 `localhost` |
| `MySQL is not running` | 查看日志:`docker logs mysql-container` |

✅ 总结

本地 PHP → MySQL Docker:用 `localhost:3306`
PHP Docker → MySQL Docker:用 `mysql`(服务名)或自定义网络
推荐使用 `docker-compose` 管理多容器应用

如果你有具体的错误信息或场景(比如 Laravel、Symfony、CLI 脚本等),可以告诉我,我可以提供更详细的解决方案。

Ai作答

📣 商家广告


域名抢注

算命

高防vps

贵阳用友软件

广告招商


0

IP地址: 143.42.38.65

搜索次数: 93

提问时间: 2025-12-23 16:53:45

🛒 域名购买

❓️ 热门提问

🌐 域名评估

最新挖掘

🖌 热门作画

🤝 关于我们

🗨 加入群聊

🔗 友情链接

🧰 站长工具
📢

温馨提示

本站所有 问答 均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉

技术支持

本站由 🟢 豌豆Ai 提供技术支持,使用的最新版: 豌豆Ai站群搜索引擎系统 V.25.10.25 搭建本站。

上一篇 79561 79562 79563 下一篇