#java #mysql #proxy
#java #mysql #прокси
Вопрос:
Этот вопрос может показаться дублирующим, но на самом деле это не так.Я прочитал много других вопросов и ответов с stackoverflow, а также с другого веб-сайта, но они не соответствуют моим требованиям.
В большинстве прокси-вопросов дело заключается просто в подключении из X => Z, проходящем через Y в качестве прокси.
Мое требование состоит в том, чтобы изменить запрос, поступающий от X через прокси (Y), и отправить его в Z, а затем получить результат обратно в X.
Вот еще немного объяснений:
Я хочу создать службу демона, которая действует как прокси (localhost: 3310) для базы данных MySQL (localhost: 3306) ни один клиент не знает адрес базы данных, они просто знают IP-адрес прокси, думая, что это база данных. Поэтому они пытаются подключиться к нему по имени хоста (localhost: 3310) и действительному имени пользователя и паролю MySQL.
Теперь, когда запрос поступает на порт 3310, прокси, который должен быть на java, просто изменяет запрос, скажем, например ( select name from employee;
=> select substr(name,1,3) from employee;
) и отправляет измененный запрос на сервер MySQL и получает ответ обратно в пользовательское приложение (Desktop / Web).
(Как) Возможно ли это сделать на Java?
Комментарии:
1. Я сильно подозреваю, что это проблема X-Y , и решение проблемы, с которой вы столкнулись таким образом, заставит вас переопределить серверную часть протокола wire protocol MySQL на Java и понять (проанализировать) значительную часть языка SQL, чтобы знать, что изменять и как. Выполнимо, но огромная трата времени на то, что, как я подозреваю, может быть решено с помощью view .
2. Логика моей программы более сложна для выполнения с помощью view (это намного больше, чем простой запрос, который я привел в качестве примера). также я хочу прокси, чтобы ни у кого не было IP-адреса моей базы данных.
3. В таком случае смотрите первую часть моего комментария. Раньше было github.com/mysql/mysql-proxy но этот проект, по-видимому, был заброшен. Однако должно быть возможно использовать его для вашей цели, и, по крайней мере, вы можете пропустить этап переопределения проводного протокола.
4. Привет, Маджид Н.К., есть ли у вас какое-либо решение для этого….