我使用的是Windows机器,运行的是MySql映像
我能够使用用户名和密码从容器连接到MySQL DB。
使用MySQL:8.0镜像和此docker-compose配置:
version: '3'
services:
mysql:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
MYSQL_DATABASE: mydatabase
MYSQL_USER: user
MYSQL_PASSWORD: abcd1234
ports:
- 3306:3306
volumes:
- ./data:/var/lib/mysql
但是当尝试从容器外部连接时,我得到了超时。我仔细检查了一下:
1.主机和端口(主机取自docker inspect network->ipaddress,端口3306)
1.防火墙和网络(添加了允许端口3306的规则)
无法ping或telnet容器-接收超时
当前日志状态:
2023-06-22T00:11:06.926901Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld:准备好连接。版本:'8.0.33'套接字:'/var/run/mysqld/mysqld.sock'端口:3306 MySQL Community Server - GPL。
检查连接脚本:
from MySQLdb import _mysql
# MySQL connection parameters
username = 'user'
password = 'abcd1234'
host = '172.19.0.2'
port = '3306'
database = 'mydatabase'
if __name__ == '__main__':
db = _mysql.connect(host=host, user=username,
password=password, database=database)
print(db)
我能错过什么?
1条答案
按热度按时间avwztpqn1#
所以我不能使用docker IP地址,但它可以使用localhost。