簡體   English   中英

主機模式下使用127.0.0.1:3306無法連接mysql服務器

[英]Cannot connect mysql server by using 127.0.0.1:3306 under host mode

我正在使用主機模式運行一個 mysql 容器,這是我docker-compose.yml

  mysql:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./mysql/datadir:/var/lib/mysql
      - ./mysql/mysql-files:/var/lib/mysql-files
      - ./mysql/conf.d:/etc/mysql
    network_mode: host
    container_name: mysql

按照我的理解,主機模式將共享主機的網絡,因此端口3306 ,MySQL的容器,搬運工聽了應該等於聽了主機上的3306端口。 所以我應該可以通過127.0.0.1:3306localhost:3306訪問 mysql 但事實是失敗的。
為什么? 有什么不對?

我可以使用橋接模式連接到 mysql。 但是由於種種原因,我需要使用主機模式

檢查以下內容,

  1. 僅 Linux 主機支持主機網絡。
  2. 檢查端口 3306 的主機防火牆設置,如果該端口已打開且可用。
  3. 使用ip addr show查看 ip 地址
  4. 使用 netstat 命令驗證哪個進程綁定到端口 80。 您需要使用 sudo,因為該進程歸 Docker 守護程序用戶所有,否則您將無法看到其名稱或 PID。

sudo netstat -tulpn | grep :80

您使用的登錄名有什么權利? Docker 有自己的網絡管理方式,因此如果您的登錄名使用 'localhost' 或 127.0.0.1',您的容器將不會看到它。 嘗試docker inspect <yourContainerId> | grep IPAddress docker inspect <yourContainerId> | grep IPAddress ,您將在 docker 網絡中看到容器的“真實”地址。

如果您授予登錄名@'%' 的權限,那么它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM