2016-05-14 20 views
0

私はMySQL Workbenchからドッキングされたmysqlサーバに接続しようとしています。私が作成するには、このライブラリを使用していMySQL WorkbenchからドッキングされたMySQLサーバに接続できません

FROM ubuntu:latest 

# package updates & install mysql 
RUN apt-get update && apt-get install -y mysql-server 
RUN apt-get -y install supervisor 

ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf 

# bind sql script 
ADD musicdb.sql /tmp/musicdb.sql 

RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf 

EXPOSE 3306 

RUN /bin/bash -c "/usr/bin/mysqld_safe &" && \ 
sleep 5 && \ 
mysql -u root -e "CREATE DATABASE musicdb" && \ 
mysql -u root musicdb < /tmp/musicdb.sql 

CMD ["/usr/bin/supervisord", "-n"] 

、実行して、Java等からコンテナ:へ

https://github.com/spotify/docker-client

私の実際の方法私は、Windows 10を使用していますと、ここに私のDockerfileですJavaでこれを行うには:

public static void createContainerWithPorts(){ 
     DockerClient docker; 


     try { 
      docker = DefaultDockerClient.fromEnv().build(); 

//PortBindings 
      Map<String, List<PortBinding>> portBindings = new HashMap<>(); 

      List<PortBinding> hostPorts = new ArrayList<>(); 

      hostPorts.add(PortBinding.of("0.0.0.0", "3306")); 
      portBindings.put("3306", hostPorts); 

      HostConfig hostConfig = HostConfig.builder().portBindings(portBindings).build(); 
      ContainerConfig containerConfig = ContainerConfig.builder().hostConfig(hostConfig).image("mysql-container").exposedPorts("3306").build(); 

//create container 
      ContainerCreation contaierCreation = docker.createContainer(containerConfig); 
      String id = contaierCreation.id(); 

//start container 
      docker.startContainer(id); 

      ContainerInfo containerInfo = docker.inspectContainer(id); 
      System.out.println(containerInfo.toString()); 

      Scanner scanner = new Scanner(System.in); 
      scanner.next(); 
      docker.killContainer(id); 
      docker.removeContainer(id); 
      docker.close(); 
     } catch (DockerCertificateException e) { 
      e.printStackTrace(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } catch (DockerException e) { 
      e.printStackTrace(); 
     } 
    } 

Javaは、作成済みのDocker Imageからコンテナの罰金をビルドします。実際に稼動しているDocker Containerを見ると、ポートバインディングが機能しているように見えます。 docker exec -it SQLContainer bashでコンテナにアクセスすると問題なく動作し、SQL Serverにアクセスできます。 MySQL Workbench Error Message

誰かが私が間違ってやっている知っています:私は、MySQL Workbenchで接続しようとすると、私は下の写真のようにエラーメッセージが

得ましたか。

おかげで、

答えて

1

私はあなたのMySQLサーバの新規ユーザーを作成し、ユーザーが使用できる場所から指定する必要があると思います。これは、私が信じるlocalhostを介してのみrootアクセスが利用できるからです。

ので、新しいユーザーを作成するには、あなたがあなたのサーバを起動RUNコマンドに少し何かを追加する必要があります:

RUN /bin/bash -c "/usr/bin/mysqld_safe &" && \ 
sleep 5 && \ 
mysql -u root -e "CREATE DATABASE musicdb" && \ 
mysql -u root musicdb < /tmp/musicdb.sql && \ 
mysql -u root -e "CREATE USER 'newUser'@'%' IDENTIFIED BY 'somePassword'" && \ 
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'newUser'@'%' WITH GRANT OPTION" 

あなたがからアクセスできる名前newUserを持つ新しいユーザーを作成する方法をどこでも。

関連する問題