Не могу получить доступ с публичного IP, но с локального хоста
Я запускаю InluxDB на моем сервере в докер-контейнере.
эта команда в порядке, когда выполняется с того же сервера:
curl -G http://localhost:8086/query -u my_user --data-urlencode "q=SHOW DATABASES"
аутентификация в порядке, и он печатает базы данных.
Но когда я меняю localhost на публичный IP, он не работает с того же сервера, а также с какого-то другого сервера (что является основной целью, он должен работать с другого сервера).
curl -G http://ip_of_the_same_server:8086/query -u my_user --data-urlencode "q=SHOW DATABASES"
1 ответ
Вы можете проверить, прослушивает ли ваш порт порт с любого ipv4(0.0.0.0)
Пример Docker PS: 0.0.0.0:8086->3306/tcp
Как ваш сервер подключен к сети через брандмауэр и т. Д., Если он подключен через брандмауэр, то сначала проверьте, открыт ли порт 8086, и можете ли вы подключиться к порту через telnet с другого сервера.
Если telnet работает, то вам нужно подтвердить, что вы создали пользователя в MySQL для IP-доступа другого сервера, вам нужно создать пользователя с IP-адресом другого сервера для доступа к MySQL или вы можете использовать 'user' @ '%' с доступом к необходимой БД при создании пользователя это позволит этому пользователю с любого ip
* ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ ПО dbname TO 'username'@'another-server-ip';
или * ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА dbname TO 'username@'%';
"%" разрешит с любого хоста или ip
использовать гранты в соответствии с вашим использованием, например: выбрать, вставить, обновить и т. д.
Хорошо сопоставлять объемы данных mysql с папкой хоста, легко управлять резервными копиями и управлять контейнерами.
вы можете попробовать запустить docker --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
В приведенном выше примере тома монтируются по другому пути вне контейнера к локальной папке хоста.