Log MySQL DB changing queries and users
You could utilize the binary log method by adding a init_connect to log the user into a table*. 

CREATE TABLE admin.connections (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    connect_time DATETIME NOT NULL, 
    user_host VARCHAR(50) NOT NULL, 
    connection_id INT UNSIGNED NOT NULL, 
    INDEX idx_connect_time_user_host (connect_time, user_host)
);

SET GLOBAL init_connect = "INSERT INTO admin.connections (connect_time, user_host, connection_id) 
     VALUES (NOW(), CURRENT_USER(), CONNECTION_ID());";


Some caveats:


Most importantly, this will only work for users without the SUPER privilege, since the init_connect is bypassed for those users.
Make sure all your users have INSERT privilege into the admin.connections table


You can then use the values in admin.connections to match up with the binary_log threadID and timestamp

*This idea was taken from here and I haven't personally tried it.

Originally this had a unique index on connect_time/user_host. But this would cause issues with same user connecting in same second. If that is not a problem in your scenario, leave it that way. If it is an issue, just make it a normal index.