Mysql

無法訪問 mysql docker

  • May 9, 2021

docker-compose用來創建mysql容器。我得到主機 IP 172.21.0.2。但是當我連接mysql時。我得到錯誤:

  1. 我的docker-compose.yml
version: '2'
services:

### Mysql container
   mysql:
     image: mysql:latest
     ports:
      - "3306:3306"
     volumes:
      - /var/lib/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test_db
      MYSQL_USER: test
      MYSQL_PASSWORD: test_pass
  1. 獲取我的主機 IP docker inspect db_mysql_1 | grep IPAddress

"IPAddress": "172.21.0.2", 3. 訪問 mysql: mysql -h 172.21.0.2 -P 3306 -u root -proot

ERROR 1130 (HY000): Host '172.21.0.1' is not allowed to connect to this MySQL server

如何連接到 mysql 容器?

您可以在啟動 MySQL 容器時傳遞一個額外的環境變數,MYSQL_ROOT_HOST=<ip>這將創建一個具有從給定 IP 地址登錄的權限的 root 使用者。如果您想允許從任何 IP 登錄,您可以指定MYSQL_ROOT_HOST=%.

這僅適用於新創建的容器。

旋轉新容器時:

docker run --name some-mysql -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

在撰寫文件中,它將是:

version: '2'
services:

 ### Mysql container
 mysql:
   image: mysql:latest
   ports:
     - "3306:3306"
   volumes:
     - /var/lib/mysql:/var/lib/mysql
   environment:
     MYSQL_ROOT_PASSWORD: root
     MYSQL_DATABASE: test_db
     MYSQL_USER: test
     MYSQL_PASSWORD: test_pass
     MYSQL_ROOT_HOST: '%'  # needs to be enclosed with quotes

引用自:https://serverfault.com/questions/793058