Now that forge.mysql.com is shutdown the protocol documentation found a new/old home at:
http://dev.mysql.com/doc/internals/en/client-server-protocol.html
It documents the early days of MySQL 3.20 as seen in:
up to the features added MySQL 5.6.x:
For the old versions it was somewhat interesting to find sources and binaries to test against as the MySQL launchpad repository only goes back until 3.23.22-beta which was 2000-07-31. I could find sources dating back to mysql-3.20.32a (1997-10-27) which is the base-version for the protocol docs.
Now you know why I blogged about CLIENT_LONG_PASSWORD
Enjoy the internals of the current MySQL Protocol docs.
We are proud to announce the release of
MySQL Proxy 0.8.3 (alpha)
which updates MySQL Proxy for the protocol changes introduced in MySQL 5.5 and 5.6.
All users of MySQL Proxy 0.8.x are recommend to upgrade.
Today a little history lesson.
I was on a quest to find the origin of this line in include/mysql_com.h:
#define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */
“new” ? “more secure” ?
These CLIENT_* flags are used between client and server to negotiate what capabilities they support. It allows the server to add new features to the protocol and let’s the client add support for it along the way. MySQL 5.5.x has 21 of these flags.
But back to CLIENT_LONG_PASSWORD and its wonderful comment. What would one expect if someone reads “new” and “more secure”?
I use MacOS X for most of my development work, but part of my job is writing apps that run on all major Unixes and Win32. Most of the time bugs and memleaks are “portable”, meaning that they appear on all platforms in the same way and fixing them on your dev-platforms, fixes them everywhere else.
Well, “most of the time”.
I’m preparing the code for my MySQLConf 2010 session “MySQL Proxy meets: Memcache” where I’ll present how to replicate from MySQL to memcache by using the MySQL Proxy.
Part of it will be using the semi-sync replication support for MySQL 5.5 to implement a synchronous MySQL-to-Memcache replication. All I need is the network protocol definition for semi-sync …
MySQL Proxy 0.8.0 has been released at http://dev.mysql.com/downloads/mysql-proxy/
While it took a while to get it out, it contains a lot of good stuff and will make a few more things possible for the future. First of all, it is the first release with a threaded network-backend allowing to use plenty of CPUs.
The other big infrastructure change is mostly for developers: out-of-tree plugins can now be written. Now you can write plugins for the MySQL Proxy against a installed MySQL Proxy. No need to have the MySQL Proxy’s source code around.
I’ll be at the OpenSQLCamp 2009 which is part of the FrosCon this weekend and give a talk about drumroll MySQL Proxy.
http://programm.froscon.org/2009/track/OpenSQLCamp/index.de.html has all the sessions incl. my
MySQL Proxy: a MySQL toolbox
Architecture and Concepts of misuse It will be an extension of my MySQL Conference talk from this year with binlogs, frm-files, … and what happens if you expose MySQLs core functionality as libraries and wrap it with a scripting layer.
In MySQL Proxy 0.8 we are added a multi-threaded network-subsystem allowing several networks events be processed in parallel. Early benchmarks show that what we have in trunk basicly works.
But the benchmarks weren’t as good as we expected. That’s the time where you prepare to get dirty.
On the MySQL Proxy channel we get questions from time to time if the authentication can be intercepted and replaced data from a external source.
From now on, you can. For example if you want to get data from a external source (like LDAP) or want to implement roles.
At MySQL Conference in Santa Clara this April the idea was brought up, now we do it:
a MySQL Proxy hackathon this summer in Sun Office in Hamburg, Germany.
We want bring together everyone who is interested in
More at http://forge.mysql.com/wiki/MySQL_Proxy_Hackathon_2009