![](/img/trans.png)
[英]MySql docker container, via terminal works, via docker-compose no
[英]How to run a MySQL command terminal in Docker, with a docker-compose server
假設我有以下撰寫文件:
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 命令提示符,使他能夠從另一個終端 window 手動管理數據庫,但我完全記得命令。
我嘗試像這樣運行一個新的 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客戶端; 如果您的主機的 package 管理器(Debian/Ubuntu APT,MacOS Homebrew,...)有一個名為mysql-client
的打包,就是這樣。
當您運行mysql
時,該工具不會將localhost
解釋為主機名,而是將其解釋為使用 Unix 套接字的信號,因此您需要使用相應的 ZA12A3079E14CED46E69BA52B8A90B211AZ 來代替。地址。1。 (如果數據庫在不同的系統上運行,請使用其 DNS 名稱或 IP 地址:這與直接在 Docker 之外的主機上運行數據庫沒有區別。)
所以從主機運行:
mysql -h 127.0.0.1 -u root -p
默認端口 3306 與發布的ports:
,系統將提示您以交互方式輸入密碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.