Я запускаю 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
В приведенном выше примере тома монтируются по другому пути вне контейнера в папку локального хоста.