Step-by-Step Guide to Trace User Activities in MySQL

You can use several methods, including enabling auditing for specific users and creating custom audit logs. Here’s how you can achieve this step-by-step:

Enable General Query Log

The general query log can capture all SQL statements executed by the MySQL server, but it can produce a lot of data, so use it judiciously.

Enable General Query Log Temporarily:

SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/var/log/mysql/general_query.log';\

Disable General Query Log:

SET GLOBAL general_log = 'OFF';

Enable MySQL Enterprise Audit Plugin

First, ensure that the MySQL Enterprise Audit plugin is installed and enabled.

Install the plugin:

INSTALL PLUGIN audit_log SONAME 'audit_log.so';

Verify installation:

SHOW PLUGINS;

Configure Audit Plugin to Trace a Specific User

You can configure the audit plugin to log activities for a specific user. Here’s how:

Step 1: Create an Audit Log Filter

SET @filter_name = 'trace_user';
SET @filter_rule = '{"filter": {"log": true}}';
CALL audit_log_filter_set_filter(@filter_name, @filter_rule);

Step 2: Assign the Filter to the Specific User

Replace username and host with the actual username and host of the user you want to trace.

CALL audit_log_filter_set_user('username@host', @filter_name);

For example, to trace a user john connecting from any host, you can use:

CALL audit_log_filter_set_user('john@%', @filter_name);

5. Review the Audit Logs

Audit logs are typically written to the audit log file. You can specify the location of the audit log file in the MySQL configuration file (my.cnf or my.ini).

Set Audit Log File Location:

[mysqld]
audit_log_file=/var/log/mysql/audit.log

Restart MySQL to apply the changes:

sudo systemctl restart mysqld

View the Audit Logs:

Use standard text processing tools to view the logs:

tail -f /var/log/mysql/audit.log

Example: Detailed Steps to Trace User Activities

Step 1: Install and Enable the Audit Plugin:

INSTALL PLUGIN audit_log SONAME 'audit_log.so';
SHOW PLUGINS;

Step 2: Configure the Audit Log:

Add the following to my.cnf:

[mysqld]
audit_log_file=/var/log/mysql/audit.log

Restart MySQL:

sudo systemctl restart mysqld

Step 3: Create and Assign an Audit Filter:

SET @filter_name = 'trace_user';
SET @filter_rule = '{"filter": {"log": true}}';
CALL audit_log_filter_set_filter(@filter_name, @filter_rule);
CALL audit_log_filter_set_user('john@%', @filter_name);

Step 4: Verify and Review Logs:

tail -f /var/log/mysql/audit.log

Conclusion

Tracing a particular user in a MySQL database involves enabling logging or auditing and configuring filters to capture the desired activities. The MySQL Enterprise Audit plugin provides a powerful and flexible way to achieve this. By following these steps, you can effectively monitor and trace the activities of specific users, enhancing your database’s security and auditing capabilities.

This entry was posted in MySQL and tagged on by .
Unknown's avatar

About SandeepSingh

Hi, I am working in IT industry with having more than 15 year of experience, worked as an Oracle DBA with a Company and handling different databases like Oracle, SQL Server , DB2 etc Worked as a Development and Database Administrator.

Leave a Reply