Cal*_*leb 52 mysql macos docker docker-compose
我有一个docker mysql映像正在运行,以下是docker-compose.yml文件的样子:
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: ""
MYSQL_ALLOW_EMPTY_PASSWORD: yes
ports:
- "3306:3306"
Run Code Online (Sandbox Code Playgroud)
这很好用.
我的问题是:如何从主机(我的macbook)上的命令行mysql客户端连接到该容器上运行的MySQL实例?
澄清:
docker命令来实现这一点.相反,我想mysql直接从终端使用客户端(不通过docker容器进行隧道传输).我没有在本地运行MySQL,因此端口3306应该是开放的并且可以使用.
我用来启动容器的命令是: docker-compose run
Tho*_*eil 68
docker-compose up由于您3306在docker主机上发布了端口,因此您将连接到该主机127.0.0.1:3306.
docker-compose run在这种情况下,将docker-compose.yml忽略文件的端口映射部分.要考虑端口映射部分,您必须添加--service-ports选项:
docker-compose run --service-ports db
Run Code Online (Sandbox Code Playgroud)
请注意,默认情况下,当您告诉它连接时,mysql客户端会尝试使用unix套接字进行连接localhost.所以使用127.0.0.1而不是localhost:
$ mysql -h 127.0.0.1 -P 3306 -u root
Run Code Online (Sandbox Code Playgroud)
欢迎使用MySQL监视器.命令以;结尾; 或\ g.您的MySQL连接ID是1服务器版本:5.6.26 MySQL社区服务器(GPL)
版权所有(c)2000,2015,Oracle和/或其附属公司.版权所有.
Oracle是Oracle Corporation和/或其附属公司的注册商标.其他名称可能是其各自所有者的商标.
输入'help;' 或'\ h'寻求帮助.输入'\ c'清除当前输入语句.
MySQL的>
$ mysql -h localhost -P 3306 -u root
Run Code Online (Sandbox Code Playgroud)
ERROR 2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)
cro*_*dle 11
在 Docker 镜像中登录 MySQL 的一种简单方法是:
sudo docker exec -it <CONTAINER_ID> mysql -u root -p
root默认情况下,mySQL 的帐户没有设置密码,它是空白的,只需按回车/返回键,除非您更改了 root 密码。
成功执行后,上面的命令会给你 mysql 提示。
干杯!
Cal*_*leb 10
我知道了!!答案是--service-ports在运行时使用该选项docker-compose:
docker-compose run --service-ports db (原始的docker-compose.yml文件工作正常)
感谢大家的帮助!
如果你的 Docker MySQL 主机运行正常,你可以从本地机器连接到它,但你应该像这样指定主机、端口和协议:
mysql -h localhost -P 3306 --protocol=tcp -u root
Run Code Online (Sandbox Code Playgroud)
因为你在 Docker 容器中运行 MySQL,所以 socket 不可用,你需要通过 TCP 连接。在 mysql 命令中设置“--protocol”将改变它。
| 归档时间: |
|
| 查看次数: |
65550 次 |
| 最近记录: |