MySQL Proxy: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
MerlIwBot (discussione | contributi)
m Bot: Tolgo: de:MySQL Proxy (deleted)
Recupero di 0 fonte/i e segnalazione di 1 link interrotto/i.) #IABot (v2.0
 
(21 versioni intermedie di 14 utenti non mostrate)
Riga 1:
{{F|software|agosto 2013}}
{{Infobox Software |
nome = MySQL Proxy|
sviluppatore|Nome = [[MySQL AB]] |Proxy
|Logo =
versione_ultimo_rilascio = 0.6.0 |
|Screenshot =
data_ultimo_rilascio = [[6 settembre]] [[2007]] |
|Didascalia =
sistema_operativo = [[Multipiattaforma]] |
genere|Sviluppatore = [[RDBMSMySQL AB]] |
|UltimaVersione = 0.6.0
licenza = [[GNU General Public License|GNU GPL]] |
data_ultimo_rilascio|DataUltimaVersione = [[6 settembre]] [[2007]] |
sito_web = http://dev.mysql.com
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
|SistemaOperativo = multipiattaforma
|Linguaggio =
|Genere = basi di dati
licenza|Licenza = [[GNU General Public License|GNU GPL]] |
|SoftwareLibero = sì
|Lingua =
}}
 
__TOC__
'''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. Pertanto, questa applicazione è compatibile con i server dalla versione 4.1 e superiore.
 
== 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.
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.
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 esplicitamente create per il Proxy). Ma il Proxy usa una porta diversa dal server, e pertanto, anche se l'uso è trasparente per l'applicazione, l'amministratore è conscio della sua esistenza. L'uso del Proxy senza consenso di una delle due parti non è possibile. Il Proxy può essere usato dall'amministratore, per ampliare le funzionalità del server, o dall'utente, per lo stesso motivo. Nel primo caso, il Proxy sarà visibile a tutti gli utenti. Nel secondo caso solo l'utente che l'ha installato nella sua macchina è al corrente delle funzioni estese.
Riga 23 ⟶ 28:
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
 
mysql_proxy --proxymysql_proxy—proxy-lua-script=simple.lua
 
In questo esempio, se la query è ''SELECT 1'', il Proxy inserisce la query modificata nella coda interna (''proxy.queries'') e la esegue.
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)
Riga 148 ⟶ 147:
mysql> select * from mia_tabella;
ERROR 1105 (07000): booh
 
== Riferimenti ==
 
* {{en}} [http://forge.mysql.com/wiki/MySQL_Proxy MySQL Forge]
* {{en}} [http://dev.mysql.com/downloads/mysql-proxy/ download]
* {{en}} [http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy.html manuale]
* {{en}} [http://dev.mysql.com/tech-resources/articles/proxy-gettingstarted.html Getting started with MySQL Proxy] - articolo per cominciare.
 
== Voci correlate ==
 
* [[MySQL]]
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{en}}cita [httpweb|1=https://forgewww.mysql.com/wiki/MySQL_Proxy |2=MySQL Forge]|lingua=en|urlmorto=sì}}
* {{en}}cita [httpweb|https://dev.mysql.com/downloads/mysql-proxy/ |download]|lingua=en}}
* {{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}}
[[Categoria:Software libero per base dati]]
 
[[ru:MySQL proxy]]