Docker 是一种开源的容器化技术,可以将应用程序及其依赖打包成一个独立的容器,实现快速部署和运行。MySQL 是一种流行的关系型数据库管理系统。将 Docker 容器连接到宿主机的 MySQL 数据库,可以实现容器化应用与数据库的高效集成。
localhost
或宿主机的 IP 地址访问 MySQL。假设宿主机的 MySQL 服务运行在 localhost:3306
,数据库名为 mydb
,用户名为 root
,密码为 password
。
在 Docker 容器中运行应用时,可以通过宿主机的 IP 地址和端口连接 MySQL:
docker run -d --name myapp myapp_image
在应用代码中,使用宿主机的 IP 地址和端口连接 MySQL:
import mysql.connector
config = {
'user': 'root',
'password': 'password',
'host': '宿主机IP地址',
'database': 'mydb',
'port': 3306
}
cnx = mysql.connector.connect(**config)
在启动容器时,使用 --network host
参数:
docker run -d --name myapp --network host myapp_image
在应用代码中,可以直接通过 localhost
连接 MySQL:
import mysql.connector
config = {
'user': 'root',
'password': 'password',
'host': 'localhost',
'database': 'mydb',
'port': 3306
}
cnx = mysql.connector.connect(**config)
原因:可能是 MySQL 服务未启动或端口未开放。
解决方法:
telnet
或 nc
命令测试端口连通性。telnet 宿主机IP地址 3306
原因:可能是 MySQL 用户权限不足或密码错误。
解决方法:
GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'宿主机IP地址' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
原因:可能是 Docker 容器网络配置错误。
解决方法:
docker inspect 容器ID
通过以上信息,您应该能够成功地将 Docker 容器连接到宿主机的 MySQL 数据库,并解决常见的连接问题。
领取专属 10元无门槛券
手把手带您无忧上云