MySQL Proxy: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
aggiunta categoria |
Recupero di 0 fonte/i e segnalazione di 1 link interrotto/i.) #IABot (v2.0 |
||
(31 versioni intermedie di 23 utenti non mostrate) | |||
Riga 1:
{{F|software|agosto 2013}}
{{
|Logo =
|Screenshot =
data_ultimo_rilascio = [[6 settembre]] [[2007]] |▼
|Didascalia =
|UltimaVersione = 0.6.0
licenza = [[GNU General Public License|GNU GPL]] |▼
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
|SistemaOperativo = multipiattaforma
|Linguaggio =
|Genere = basi di dati
|SoftwareLibero = sì
|Lingua =
}}
'''MySQL Proxy''' è un programma che si interpone fra un [[client]] e un [[server]] [[MySQL]], per consentire di effettuare operazioni sul traffico di dati, in maniera trasparente per l'utente.
MySQL Proxy usa il protocollo client/server esteso di [[MySQL]], introdotto con la versione 4.1
== Generalità ==
'''MySQL Proxy''' è un'applicazione molto leggera (200 KB in compilazione dinamica, 1.5 MB in compilazione statica con le librerie), che è stata disegnata per interporsi fra un [[client]] e un [[server]] [[MySQL]] ed eseguire operazioni sui pacchetti inviati e ricevuti.<br />Il programma ha poche opzioni di configurazione. La caratteristica che lo rende interessante e funzionale è un interprete [[Lua]] integrato, grazie al quale è possibile analizzare ed eventualmente modificare i pacchetti passati fra client e server.<br />Il client non si accorge del Proxy, che agisce da [[man in the middle]]. Il client si connette con le solite credenziali. Il Proxy intercetta la richiesta e si collega al server. Da quel momento, ogni query inviata dal client e i relativi risultati restituiti dal server passano attraverso il Proxy.
Si noti che MySQL Proxy non è un'applicazione di [[malware]], anche se la definizione resa sopra, con la sua possibilità di intercettazione, potrebbe farlo credere. L'uso del Proxy è trasparente per il client, in materia di protocollo, ovvero il client usa il server tramite il Proxy senza avvertire differenze (tranne quando usa funzioni
Nella sua forma essenziale, MySQL Proxy è uno strumento di ridirezione, che passa un pacchetto di richiesta dal client al server, prende dal server i risultati, e li passa al client. Nel passaggio di dati, il Proxy può intervenire, ed effettuare operazioni sulla query prima che venga inviata, o sui risultati, prima che vengano restituiti. Le modifiche vengono effettuate tramite script in [[Lua]], che usano funzioni predefinite per alterare lo stato dei pacchetti. Le funzioni sono le seguenti:
* ''[https://web.archive.org/web/20071011054350/http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-connect-server.html connect_server]'' in cui si può agire al momento della connessione al server;
* ''[https://web.archive.org/web/20071011054400/http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-handshake.html read_handshake]'' che avviene immediatamente dopo la connessione;
* ''[https://web.archive.org/web/20071011045257/http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-auth.html read_auth]'' in cui si passano al server le credenziali di accesso;
* ''[https://web.archive.org/web/20071011045252/http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-auth-result.html read_auth_result]'' dove viene ricevuto il risultato dell'operazione precedente;
* ''[https://web.archive.org/web/20071011043615/http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-query.html read_query]'' che si attiva per ogni query inviata al server;
* ''[https://web.archive.org/web/20071011045302/http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-query-result.html read_query_result]'' che viene richiamata quando il Proxy riceve il risultato di una query modificata;
* ''disconnect_client'' che si attiva quando un client viene disconnesso.
== Funzioni ==
MySQL Proxy ha due classi di funzioni:
# Indirizzamento del traffico a una lista predefinita di server di back-end, che possono essere a sola lettura o a piena funzionalità.
# Modifica, aggiunta, o sostituzione della query inviata dal client, e dei risultati restituiti dal server.
Riga 41 ⟶ 45:
=== Un esempio ===
Il secondo caso è differente. Per modificare la query in uscita o i risultati in entrata, è necessario scrivere un programma in [[Lua]] e lanciare il Proxy con un'opzione che lo fa caricare. Per esempio, questo script intercetta la query ''SELECT 1'' e la riscrive come ''SELECT 100''.
Riga 58 ⟶ 61:
=== Uso ===
Per usare questo script, si lancia il Proxy con l'apposita opzione
In questo esempio, se la query è ''SELECT 1'', il Proxy inserisce la query modificata nella coda interna (''proxy.queries'') e la esegue.
Per usare il
$ mysql -u UTENTE -pPASSWORD -h 127.0.0.1 -P 4040
Riga 71 ⟶ 73:
Your MySQL connection id is 609
Server version: 5.0.45-log MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql > SELECT 1;
+-----+
| 100 |
+-----+
| 100 |
+-----+
1 row in set (0.00 sec)
=== Potenzialità ===
Usando una combinazione di read_query e read_query_result, il Proxy può effettuare una o più delle seguenti operazioni:
* Passare la query al server senza modifiche (default);
* Modificare la query e passarla al server;
Riga 98:
=== Interfaccia di amministrazione ===
Quando MySQL Proxy è attivo, ci sono due porte disponibili:
* 4040 con le funzioni di proxy viste sopra.
Riga 113 ⟶ 112:
| command | description |
+---------------------------------+--------------------------------------------+
| select * from proxy_connections | show information about proxy connections |
| select * from proxy_config | show information about proxy configuration |
| select * from help | show the available commands |
+---------------------------------+--------------------------------------------+
3 rows in set (0.00 sec)
mysql> select * from proxy_connections;
+------+--------+-------+------+
| id | type | state | db |
+------+--------+-------+------+
| 0 | server | 0 | |
| 1 | proxy | 0 | |
| 2 | server | 10 | |
| 3 | proxy | 10 | |
| 4 | proxy | 10 | |
+------+--------+-------+------+
5 rows in set (0.00 sec)
mysql> select * from proxy_config;
+----------------------------+----------------+
| option | value |
+----------------------------+----------------+
| admin.address | :4041 |
| proxy.address | :4040 |
| proxy.lua_script | logs.lua |
| proxy.backend_addresses[0] | 127.0.0.1:3306 |
| proxy.fix_bug_25371 | 0 |
| proxy.profiling | 1 |
+----------------------------+----------------+
6 rows in set (0.00 sec)
mysql> select * from mia_tabella;
ERROR 1105 (07000): booh
* {{en}} [http://forge.mysql.com/wiki/MySQL_Proxy MySQL Forge]▼
* {{en}} [http://dev.mysql.com/downloads/mysql-proxy/ download]▼
* {{en}} [http://dev.mysql.com/tech-resources/articles/proxy-gettingstarted.html Getting started with MySQL Proxy] - articolo per cominciare.▼
== Voci correlate ==
* [[MySQL]]▼
== Collegamenti esterni ==
▲* [[MySQL]]
* {{Collegamenti esterni}}
▲* {{
* {{Cita web|https://downloads.mysql.com/docs/mysql-proxy-en.pdf|Manuale|24 febbraio 2017|formato=pdf|lingua=en}}
▲* {{en}} [https://web.archive.org/web/20071007034529/http://dev.mysql.com/tech-resources/articles/proxy-gettingstarted.html Getting started with MySQL Proxy] - articolo per cominciare.
{{Portale|Software libero}}
|