gpt4 book ai didi

mysql - 如何在带有docker-compose服务器的Docker中运行MySQL命令终端

转载 作者:行者123 更新时间:2023-12-02 19:18:34 26 4
gpt4 key购买 nike

假设我有以下撰写文件:

networks:
my_network:

services:

...

mysql:
container_name: "mysql"
image: "mysql:5.7"
volumes:
- ./mysql.cnf:/etc/mysql/conf.d/mysql.cnf
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_USER: "user"
MYSQL_PASSWORD: "password"
MYSQL_DATABASE: "test-db"
ports:
- "3306:3306"
restart: always
networks:
- my_network

一旦运行 docker-compose up,我的服务就会启动,并且可以看到我的MySQL服务器已准备好接受连接。现在,我需要怎么做才能从容器“外部”访问mysql终端提示符?我记得曾经看到一位老师在另一个终端窗口中运行另一个docker容器,并访问MySQL命令提示符,从而使他能够从另一个终端窗口手动管理数据库,但是我记不清命令了。

我试过像这样运行一个新的Docker容器:

docker run -it --rm --name mysqlterm \
--network="compose_project_my_network" \
--link mysql mysql:5.7 \
sh -c 'exec mysql \
-h "localhost" -P 3306" \
-uroot \
-ppassword'

但是不幸的是,该容器无法连接到MySQL服务器,给了我以下错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我猜“localhost”或3306端口有问题吗?我应该在这些参数中输入什么?

预先感谢您的回答:)

最佳答案

您需要一个普通的MySQL客户端;如果您的主机的软件包管理器(Debian / Ubuntu APT,MacOS Homebrew等)具有一个名为mysql-client之类的软件包,就是这样。

当您运行mysql时,该工具不会将localhost解释为主机名,而是将其解释为使用Unix套接字的信号,因此您需要使用相应的IP地址127.0.0.1。 (如果数据库在其他系统上运行,请使用其DNS名称或IP地址:这与直接在Docker外部的主机上运行数据库没有区别。)

因此,从主机运行:

mysql -h 127.0.0.1 -u root -p

默认端口3306与已发布的 ports:匹配,系统将提示您以交互方式输入密码。

关于mysql - 如何在带有docker-compose服务器的Docker中运行MySQL命令终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61747708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com