簡體   English   中英

如何使用 docker-compose 服務器在 Docker 中運行 MySQL 命令終端

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM