

DockerでCentOS6を立ててその中に入り、MySQLをインストール  
(決してMySQLのコンテナを立てていません。※そのため,Dockerfileとdocker-compose.ymlがない状態です)

このとき,ローカルの外部SQLWorkBenchから接続するにはどうしたらいいのでしょうか？

MySQLのコンテナをdockerで立てたものから,mysqlworkbenchとの接続の記事はたくさんあるのですが、上のケースは見当たりません。

firewallのポートを開ければつながるという記事も見て、iptablesをインストールしてport3306を開けたのですが、接続できませんでした。

ご存知の方ご教示お願いいたします。

**実行環境**  
Docker version 19.03.5, build 633a0ea  
MySQL Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline
5.1  
CentOS 6.10  
MySQLWorkBench:8.0.18

* * *
[code]

    > docker ps
    CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                                            NAMES
    17ab93fdf500        38596547d8dd        "/bin/bash --login"   3 minutes ago       Up 3 minutes        0.0.0.0:3000->3000/tcp, 0.0.0.0:3306->3306/tcp   rails_main
    
[/code]

とportは3000,3306を開けております。(よって、rails s して時,licalhost:3000でブラウザに写っています)

Docker内のCent0S6

[code]

    >vi /etc/my.cnf
    
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    default-character-set=utf8
    bind-address=127.0.0.1 # これを追加して、localhostからのを許可
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    [client]
    default-character-set=utf8
    
[/code]

[code]

    vi /etc/hosts.allow
    
    mysqld: ALL: allow  # 追加
    
[/code]

[code]

    >iptables --list  
    (docker runの時に--cap-add=NET_ADMIN をつけ,firewallが起動できるようにしている)
    
    Chain INPUT (policy DROP)
    target     prot opt source               destination         
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http 
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp-data 
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:hbci 
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:mysql  ## ここsqlを全て受け付ける
    
    Chain FORWARD (policy DROP)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain RH-Firewall-1-INPUT (0 references)
    target     prot opt source               destination         
    
    Chain SERVICE (0 references)
    target     prot opt source               destination 
    
[/code]

MySQL Workbench の接続は以下の通りです。

  * Conection Method: Standard(TCP/IP)
  * host:127.0.0.1
  * port:3306
  * name:root
  * password:123456

これで接続を行っています。エラー内容は以下です

[code]

    Failed to Connect to MySQL at 127.0.0.1:3306 with user root
    Lost connection to MySQL server at 'reading initial communication packet', system error: 0
    
[/code]

ちなみに

> select host,user ,password from mysql.user;
[code]

    +--------------+----------+-------------------------------------------+
    | Host         | User     | Password                                  |
    +--------------+----------+-------------------------------------------+
    | localhost    | root     | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    | 0087ea0ee65d | root     | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    | 127.0.0.1    | root     | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    | localhost    |          |                                           |
    | 0087ea0ee65d |          |                                           |
    | %            | root     | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    +--------------+----------+-------------------------------------------+
    
[/code]

*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 これが123456のhashされたものかな？


CC BY-SA 4.0
2019-12-05T09:39:53.897
61140
2019-12-10T00:39:06.197
2019-12-10T00:39:06.197
3060
36929
question
mysql docker mysql-workbench
Docker コンテナ上の MySQLにホストOSから MySQL Workbenchで接続するには？