Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A highly scalable MySQL Proxy framework written in Rust

License

NotificationsYou must be signed in to change notification settings

AgilData/mysql-proxy-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CircleCIVersionDocs

An implementation of a MySQL proxy server built on top oftokio-core.

Overview

This crate provides a MySQL proxy server that you can extend with your own custom logic. Here are some examples of use cases for a proxy:

  • Capture a log of SQL queries issued by an application
  • Profiling of query execution time
  • Monitor query patterns e.g. threat detection
  • Record SQL traffic for later playback for automated testing

Usage

The proxy defines the following trait for defining a packet handler for handling request and response packets:

pubtraitPacketHandler{fnhandle_request(&self,p:&Packet) ->Action;fnhandle_response(&self,p:&Packet) ->Action;}/// Handlers return a variant of this enum to indicate how the proxy should handle the packet.pubenumAction{/// drop the packetDrop,/// forward the packet unmodifiedForward,/// forward a mutated packetMutate(Packet),/// respond to the packet without forwardingRespond(Vec<Packet>),/// respond with an error packetError{code:u16,state:[u8;5],msg:String},}

Example

The example proxy passes all queries to MySQL except for queries containing the word 'avocado'. Use the following command to run the example.

Note that we have tested the proxy withrustc 1.13.0-nightly (cbe4de78e 2016-09-05).

$ cargo run --example proxy

Then in a separate window you can test out the proxy. The proxy binds to port 3307 and assumes that a MySQL server is running on port 3306.

$ mysql -u root -p -h 127.0.0.1 -P 3307
mysql>select'banana';+--------+| banana |+--------+| banana |+--------+1 rowinset (0.00 sec)mysql>select'avocado';ERROR1064 (12345): Proxy rejecting any avocado-related queries

License

mysql-proxy-rs is distributed under the terms of the Apache License (Version 2.0).

See LICENSE-APACHE for details.

About

A highly scalable MySQL Proxy framework written in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors3

  •  
  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp