1

これについていくつかのスレッドがあることは知っていますが、私はすべてを試しましたが、私は機知に富んでいます.EC2でホストされているMySQLデータベースに接続できるようにしたいだけです.

  1. EC2 のインスタンスのセキュリティ グループにポート 3306 を追加しました。

  2. my.cnf ファイルから bind_address (skip-networking はデフォルトで使用されなくなりました) を削除し、MySQL を再起動しました。また、代わりに bind_address=(外部 IP、54 で始まる) と bind_address=0.0.0.0 も試しました。

  3. UFW ステータスは非アクティブです。

  4. サーバー上で、次を実行します

    mysql -u remote-user -p -h MY_EXTERNAL_IP

動作します!しかし、クライアントからは機能しません。次のようになります。

`ERROR 2003 (HY000): Can't connect to MySQL server on 'MY_EXTERNAL_IP' (111)`
  1. 現在の MySQL ユーザーを次のように作成しました。

    GRANT USAGE ON *.* TO 'remote-user'@'localhost' IDENTIFIED BY 'password';

    GRANT USAGE ON *.* TO 'remote-user'@'%' IDENTIFIED BY 'password';

  2. 私も走った:

    sudo iptables -P INPUT ACCEPT

    sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

    sudo iptables -I INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

  3. Telnet が接続しない:

    echo X | telnet -e X MY_EXTERNAL_IP 3306 telnet: Unable to connect to remote host: Connection refused

ただし、ssh ポートには接続します。

Trying 54.221.103.104...
Connected to 54.221.103.104.

そしてnetstat -a | grep 'mysql'与えます:

tcp        0      0 *:mysql                 *:*                     LISTEN     
unix  2      [ ACC ]     STREAM     LISTENING     20762    /var/run/mysqld/mysqld.sock

お願いします、私は頭がいっぱいです。これの何が問題なのかわかりません。何時間も取り組んできました。

4

2 に答える 2

1

/etc/mysql/my.cnf のバインド アドレスを 127.0.0.1 から 0.0.0.0 に変更すると問題が解決し、ポート 3306 でリモートで TELNET を問題なく実行できました。

また、mysql ユーザーが localhost mysql ユーザーとしてのみ設定されておらず、適切な権限を持っていることも確認してください。

于 2016-06-14T18:48:09.843 に答える