【发布时间】:2020-09-17 18:36:39
【问题描述】:
我正在尝试通过 SSH 隧道从工作台访问我的 mysql 数据库,mysql 在一个容器中(使用 docker-compose)。
这是我在 docker-compose 中的 mysql 容器配置:
mysql:
image: mysql:5.7
container_name: mysql
expose:
- 3306
ports:
- '3306:3306'
volumes:
- ./mysql:/var/lib/mysql
environment:
- "MYSQL_ROOT_PASSWORD=#####"
- "MYSQL_DATABASE=#####"
- "MYSQL_USER=#####"
- "MYSQL_PASSWORD=#####"
restart: always
但是我收到“无法连接到 MySQL”错误,就像我的端口没有很好地从 SSH 转发到 MySQL 容器(因此,没有击中好门)。
请注意,我不允许从 mysql 进行远程访问,因为我只想保持 SSH/localhost 访问。
你有什么想法吗?谢谢
【问题讨论】:
-
ssh -L选项应该转发到容器上已发布的ports:;你能显示你正在运行的实际命令和你得到的实际错误吗? -
当我试图通过工作台处理我的连接时,我无法控制命令,但如果我登录到 ssh,然后尝试类似:
mysql -u <mysql_user> -p -h localhost -p 3306我得到:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) -
mysql客户端将localhost误解为具体表示该套接字文件;您可能会看到-h 127.0.0.1(使用localhost众所周知的IPv4 地址)是否有所作为。 -
你是对的,127.0.0.1 更改了 mysql 响应:
Can't connect to MySQL server on '127.0.0.1' (111)。也许是绑定问题?
标签: mysql docker docker-compose