繁体   English   中英

如何通过SSH连接到MySQL Docker容器?

[英]How to connect to a MySQL Docker Container via SSH?

当我尝试通过SSH隧道连接到Host Mashine(vServer)然后尝试通过内部docker Container-IP连接时,我无法连接到MySQL。

这是我的docker-compose文件。

version: '2'
services:
  mysql:
    build: ./mysql
    environment:
      MYSQL_ROOT_PASSWORD: test
    volumes:
      - ./db:/var/lib/mysql

我找到的唯一解决方案是将mysql容器的MySQL-Port转发给Host-Mashine。

version: '2'
services:
  mysql:
    build: ./mysql
    environment:
      MYSQL_ROOT_PASSWORD: test
    volumes:
      - ./db:/var/lib/mysql
   ports:
     - 3306:3306

然后我可以通过主机IP连接到MySQL,但这是没有SSH直接通过TCP和端口。 对于我来说,将MySQL服务引入互联网是一种禁忌。

原因可以在这里找到https://security.stackexchange.com/questions/63881/is-it-not-safe-to-open-mysqls-port-to-the-internet为什么带上你的不是一个好习惯mysql端口进入互联网。


那么用SSH连接我的docker mysql容器但是保持mysql端口关闭是一个好习惯呢?

一种简单的方法是仅将MySQL端口绑定到localhost地址。 假设主机在Docker之外有一个mysql客户端。

ports:
  - 127.0.0.1:3306:3306

您也可以完全省略ports部分(根本没有端口绑定),并使用已经在容器内的mysql客户端。

docker-compose exec mysql bash

然后在容器内运行mysql命令来执行您想要执行的任何查询。

实现此目的的一种简单方法是将docker conatiner的ssh端口转发到主机上的某个端口,即

ports:
   - 22:<some free host port>

然后通过ssh访问容器到您使用的主机端口。 请注意,使用端口22是个坏主意,因为这会导致与主机上运行的ssh服务器发生冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM