I don't think MySQL or other database management systems based on client-server model is designed to monitor the users. (Is someone can prove me wrong, please post a comment.)
So, the solution would be monitoring the users' activity in some intermediate
tier. But in this case, all database connectivity should be completely closed for any access from outside and made only accessible by this intermediate tier (which you can run on the same host or same local network as the database host). All requests to the database should be sent only to the intermediate tier, and this tier should relay all requests and query results to/from database management system.
You can still use a 3-tier model; in this case your monitoring functionality could be added to a
logic tier.
You can choose any communication model for this tier to work on the network; I would suggest to prefer a WCF service. WCF could be self-hosted by the tier service. If you are not using .NET or not all of your clients are .NET application, it could be a Web service.
Please see:
http://en.wikipedia.org/wiki/Multi-tier_architecture[
^],
http://en.wikipedia.org/wiki/Windows_Communication_Foundation[
^],
http://msdn.microsoft.com/en-us/library/ms733128.aspx[
^],
http://en.wikipedia.org/wiki/Web_service[
^].
—SA