Dockerコンテナ内のサーバーでInluxDBを実行しています。
同じサーバーから実行した場合、このコマンドは問題ありません。
curl -G http://localhost:8086/query -u my_user --data-urlencode "q=SHOW DATABASES"
認証は問題なく、データベースを出力します。
しかし、ローカルホストをパブリックIPに変更すると、同じサーバーからも、他のサーバーからも機能しません(これが主な目標であり、別のサーバーからも機能するはずです。
curl -G http://ip_of_the_same_server:8086/query -u my_user --data-urlencode "q=SHOW DATABASES"
コンテナが任意のipv4(0.0.0.0)からのポートでリッスンしているかどうかを確認できます
docker ps例:0.0.0.0:8086-> 3306/tcp
サーバーはファイアウォールなどを介してネットワークにどのように接続されていますか。ファイアウォールを介して接続されている場合は、最初にポート8086が開いているかどうかを確認し、telnet別のサーバーからのポート
Telnetが機能する場合は、別のサーバーのIPアクセス用にmysqlでユーザーを作成したかどうかを確認する必要があります。また、mysqlにアクセスするには、別のサーバーのIPアドレスでユーザーを作成する必要があります。または、アクセスで「user」@「%」を使用できます。ユーザーの作成中に必要なデータベースにこれにより、任意のIPからそのユーザーが許可されます
* dbnameのすべての特権を 'username' @ 'another-server-ip'に付与します。
または* dbnameのすべての特権を 'username @'% 'に付与します。
'%'は、任意のホストまたはIPから許可されます
使用法に従って助成金を使用します例:選択、挿入、更新など。
MysqlのデータボリュームをHostフォルダーにマップするのに適しています。バックアップの管理とコンテナーの管理が簡単です。
docker run --name mysql-server -p 3307:3307 -v/var/mysql_data/mysql:/ var/lib/mysql -v/opt/done/mysql/myを試すことができます.cnf:/etc/mysql/my.cnf -it mysql sh
上記の例では、ボリュームはコンテナの外部のローカルホストフォルダへの異なるパスにマウントされています