Назад | Перейти на главную страницу

Невозможно получить доступ с общедоступного 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"

Вы можете проверить, прослушивает ли ваш контейнер порт с любого ipv4 (0.0.0.0)

докер ps пример: 0.0.0.0:8086->3306/tcp

Как ваш сервер подключен к сети через брандмауэр и т. Д., Если он подключен через брандмауэр, сначала проверьте, порт 8086 открыто, и вы можете телнет на порт с другого сервера

Если telnet работает, вам необходимо подтвердить, что вы создали пользователя в mysql для IP-доступа к другому серверу, вам необходимо создать пользователя с IP-адресом другого сервера, чтобы получить доступ к mysql, или вы можете использовать 'user' @ '%' с доступом к требуемой базе данных при создании пользователя, это позволит этому пользователю с любого IP-адреса

* ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА dbname 'username' @ 'another-server-ip';

или * ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА ИМЯ БД 'username @'% ';

'%' разрешит с любого хоста или IP

использовать гранты в соответствии с вашим использованием, например: выбрать, вставить, обновить и т. д.

Удобно отображать объемы данных mysql в папку хоста, легко управлять резервными копиями и управлять контейнерами.

можешь попробовать 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 - это mysql sh

В приведенном выше примере тома монтируются по другому пути вне контейнера в папку локального хоста.