sql >> データベース >  >> RDS >> Mysql

1130ホスト'amazon-ec2-ip'はこのMySQLサーバーへの接続を許可されていません

    この問題を投稿した後、作業中に、EC2サーバーにpingを実行したり、EC2サーバーにtelnetで接続したりすることさえできないことに気付きました。したがって、基本的なことは間違っていなければなりませんでした。最後に、友人が問題を手伝ってくれました。予想通り、問題はEC2に非常に固有のものでした。

    詳細は次のとおりです。

    EC2インスタンスを作成すると、次のような外部IPアドレスが取得されます:ec2-XX-XXX-XXX-XX.ap-southeast-1.compute.amazonaws.com

    mysqlでアクセス許可を設定しているときに、上記のIPアドレスにアクセス許可を付与していました。つまり:

    GRANT ALL PRIVILEGES on . to [email protected]'ec2-XX-XXX-XXX-XX.ap-southeast1.compute.amazonaws.com' IDENTIFIED BY 'password';
    

    別のローカルEC2インスタンスからEC2インスタンスに通信しようとすると、これは機能しません。このためには、EC2インスタンスの「内部IPアドレス」を指定する必要があります。これは、ipコマンドを使用して見つけることができます:

    ip a:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
    valid_lft forever preferred_lft forever
    
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 12:31:41:02:58:47 brd ff:ff:ff:ff:ff:ff
    inet **XX.XX.XX.XXX/23** brd YY.YYY.YY.YYY scope global eth0
    inet6 fe80::1031:41ff:fe02:5847/64 scope link 
    valid_lft forever preferred_lft forever
    

    正しく機能させるには、IPアドレス「XX.XXX.XX.XXX/23」にアクセス許可を付与する必要があります。これで機能するはずです。同様に、「mysql」データベースに接続している間、mysqlコマンドに提供されるホスト名もホストEC2インスタンスの「内部IPアドレス」である必要があります。



    1. 不正な指示:Djangoを実行している場合は4

    2. SQL Serverで「datetimeoffset」を「datetime2」に変換します(T-SQLの例)

    3. フィールドをmax(field)+1に更新するmysqlクエリ

    4. MySQLエラー1153-'max_allowed_pa​​cket'バイトより大きいパケットを取得しました