MySQLにリモート接続できません。  
AWSのlightsailのインスタンス（Ubuntu14.04.5）を2つ運用しており、その一方からもう一方への接続を試みています。  
MySQLのバージョンは、どちらも5.6.35です。

最終的に行いたいのはレプリケーションで、レプリケーションのスレーブ側MySQLログには

> Slave I/O: error connecting to master 'hoge@xxx.xxx.xxx.xxx:3306' -  
>  retry-time: 60 retries: 37, Error_code: 2003

が出ているのですが、それ以前に、単に

```

    mysql -h xxx.xxx.xxx.xxx -u hoge
    
```

としても、以下のエラーで接続できない状況です。

> ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx'  
>  (110)

telnetでも

```

    telnet xxx.xxx.xxx.xxx 3306
    
```

が

> telnet: Unable to connect to remote host: Connection timed out

と、接続できないため、ポート周りかと思うのですが、原因・対策がわかりません。

行ったことは以下の通りです。  
MySQLユーザhogeの接続許可設定確認  
（hogeは、`grant replication slave on *.* to hoge@'%' identified by
'password';`で作成したもの。）

```

    mysql> select user, host from mysql.user;
    +-------------+------------------+
    | user        | host             |
    +-------------+------------------+
    | repl        | %                |
    | root        | 127.0.0.1        |
    | root        | ::1              |
    | root        | ip-xxx-xxx-xx-xx |
    | rails_admin | localhost        |
    | root        | localhost        |
    +-------------+------------------+
    
```

my.cnfのbind-accessのコメントアウト

```

    # bind-address=127.0.0.1
    
```

ファイアウォールの確認

```

    $ sudo iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    
    $ sudo ip6tables -nv -L
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination 
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination 
    
    Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination 
    
```

ポートの確認

```

    $ sudo netstat -tlpn
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      29604/
    tcp        0      0 127.0.0.1:21            0.0.0.0:*               LISTEN      595/vsftpd
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      901/sshd
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      29604/
    tcp6       0      0 :::3306                 :::*                    LISTEN      29139/mysqld.bin
    tcp6       0      0 :::22                   :::*                    LISTEN      901/sshd
    
```

よろしくお願いいたします。
CC BY-SA 3.0
2018-03-30T01:13:28.593
42761
2020-02-20T13:11:19.123
2020-02-20T13:11:19.123
19110
25787
question
mysql ubuntu network unix
MySQLにリモート接続できない
サーバー側がポートをLISTENしていないとすると、クライアントのエラーは `Connection refused` になるはずです。`Connection
timed out` になるということは、ネットワークまわりの問題（ファイアウォールやルーティング等）だと思います。

スレーブからサーバーに対して ping が通るかどうか。

ping が通ったとしたら 3306 以外のポート(22番等)に接続できるかどうか。

クライアント側のファイアウォールも確認した方がいいかもしれません。
CC BY-SA 3.0
2018-03-31T00:38:41.027
42810
2018-03-31T00:38:41.027
3249
42761
answer