如何将mysql工作台连接到docker中运行mysql?

我在泊坞窗容器内使用mysql服务器,并能够访问泊坞内。 如何在我的本地(主机)上运行的mysql工作台上创build连接。

2docker相关条件:

  • 首先,您的docker运行必须将mysql端口映射到主机端口:

    docker run -p host:container 

(例如: docker run -d -p 3306:3306 tutum/mysql

  • 第二,如果你在一个虚拟机(docker-machine,使用boot2docker)中使用docker,你需要使用docker-machine ip <VMname>和主机映射端口。

     http://$(docker-machine ip <VMname>):hostPort 

如果您需要使用localhost ,则需要在VirtualBox级别执行一些端口转发 :

 VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port3306,tcp,,3306,,3306" VBoxManage controlvm "boot2docker-vm" natpf1 "udp-port3306,udp,,3306,,$3306" 

(如果虚拟机正在运行, modifyvm controlvmmodifyvm为虚拟机已停止)(将虚拟机的名称replace为“ boot2docker-vm ”:请参阅docker-machine ls


2 mysql相关的条件:

  • nkratzke/EasyMySQL/Dockerfile ,您需要启用远程访问:

     # Enable remote access (default is localhost only, we change this # otherwise our database would not be reachable from outside the container) RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf 
  • 在Docker镜像中启动数据库时,您需要创build用户。
    例如,请参阅由Dockerfile CMD调用的nkratzke/EasyMySQL/start-database.sh

     /usr/sbin/mysqld & sleep 5 echo "Creating user" echo "CREATE USER '$user' IDENTIFIED BY '$password'" | mysql --default-character-set=utf8 echo "REVOKE ALL PRIVILEGES ON *.* FROM '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8 echo "GRANT SELECT ON *.* TO '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8 echo "finished" 

您必须在Docker容器中进行less量configuration。 请按照以下步骤。

  1. 在你的docker-compose.yml中指定mysqlconfiguration块。 我有我的docker-compose.yml文件中的服务对象下面的mysql块。

     services: db: image: mysql volumes: - "./.data/db:/var/lib/mysql" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: mydb MYSQL_USER: user MYSQL_PASSWORD: pass ports: 42333:3306 
  2. 重新启动docker容器并运行下面的命令到达mysql容器中的bash shell

     docker ps docker exec -it <mysql container name> /bin/bash 

    在容器里面,连接到mysql的命令行types,

     mysql -u root -p 

    使用docker -compose.yml中指定的MYSQL_ROOT_PASSWORD。 执行以下命令来创build新用户。

     create user 'user'@'%' identified by 'pass'; grant all privileges on *.* to 'user'@'%' with grant option; flush privileges; 

    百分号(%)表示所有的ip。 重新启动泊坞窗容器。

  3. 在您的MySQL Workbench中提供连接详细信息。 使用您的docker-compose.yml文件中指定的MYSQL_PASSWORD。

    在这里输入图像说明

你现在应该可以连接到你的mysql容器。

我通过在Hostname:127.0.0.1 (Localhost)中设置字段值来解决这个问题,默认端口为3306。