mysql 无法找到该页无法找到该页

jjhzyzn0  于 2023-06-28  发布在  Mysql
关注(0)|答案(1)|浏览(101)

我使用的是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)

我能错过什么?

avwztpqn

avwztpqn1#

所以我不能使用docker IP地址,但它可以使用localhost。

from MySQLdb import _mysql

# MySQL connection parameters
username = 'user'
password = 'abcd1234'
host = '127.0.0.1'
port = '3306'
database = 'mydatabase'

if __name__ == '__main__':
    db = _mysql.connect(host=host, user=username,
                        password=password, database=database)

    print(db)

相关问题