在 Docker 容器内连接本地 MySQL 数据库?

Connecting local MySQL database inside a Docker container?

这是我尝试连接的方式。但它显示:

Host 'host.docker.internal' is not allowed to connect

YAML:

 environment:
       - MYSQL_DSN=mysql:host=192.168.0.1;port=3307;dbname=dbname

您的 MySQL 用户不允许外部连接。

使用“GRANT”更新您的用户以允许外部连接或使用“CREATE USER”创建新用户:https://linuxize.com/post/how-to-create-mysql-user-accounts-and-grant-privileges/

要接受所有连接,请使用 % 通配符作为主机部分。

  1. 创建 mysql 数据作为容器:命名为:mysql-数据
  2. 为 mysql 服务器创建 docker 容器以使用在步骤 1 中创建的 mysql 数据库。这是你的内部 docker conatiner
  3. mysql 客户端应该在主机上

以上 2 个步骤使用 yaml 文件作为:

services:
  mysql-data:
    image: image_path/mysql-data:latest
    container_name: mysql-data

  my-container-name:
    image: mysql/mysql-server:5.6
    container_name: my-container-name
    env_file:
      - MYSQL_ROOT_HOST=%
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_USER=username
      - MYSQL_PASSWORD=password
    ports:
      - 9999:3306
    volumes_from:
      - mysql-data

使用命令登录 mysql 数据库:

mysql -h <your-host-ip> -P9999 -uusername -ppassword