Query Logging
DBBat logs all queries executed through the proxy, providing complete visibility into database activity.
What's Logged
For each query, DBBat records:
- SQL text: The complete query as sent by the client
- User: Which DBBat user executed the query
- Database: Which target database the query ran against
- Connection: The connection ID (links to connection metadata)
- Start time: When the query started
- Duration: How long the query took (in milliseconds)
- Rows affected: Number of rows returned or modified
- Result data: Optionally, the actual result rows
Viewing Queries
List recent queries:
curl -u admin:admin http://localhost:8080/api/queries
Filtering
By user:
curl -u admin:admin "http://localhost:8080/api/queries?user_id=2"
By database:
curl -u admin:admin "http://localhost:8080/api/queries?database_id=1"
By time range:
curl -u admin:admin "http://localhost:8080/api/queries?from=2024-01-15T00:00:00Z&to=2024-01-16T00:00:00Z"
Combined filters:
curl -u admin:admin "http://localhost:8080/api/queries?user_id=2&database_id=1&from=2024-01-15T00:00:00Z"
Query Details
Get full details including result rows:
curl -u admin:admin http://localhost:8080/api/queries/123
Response:
{
"id": 123,
"connection_id": 45,
"sql": "SELECT id, name FROM users WHERE active = true",
"started_at": "2024-01-15T10:30:00Z",
"duration_ms": 42,
"rows_affected": 5,
"user": {
"id": 2,
"username": "analyst"
},
"database": {
"id": 1,
"name": "production"
},
"rows": [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"},
{"id": 3, "name": "Charlie"},
{"id": 4, "name": "Diana"},
{"id": 5, "name": "Eve"}
]
}
Connection Tracking
Queries are linked to connections. View connection details:
curl -u admin:admin http://localhost:8080/api/connections
Connection metadata includes:
- Source IP address
- Connected user
- Target database
- Connection start/end time
Use Cases
Security Auditing
Track all database access for compliance:
- Who accessed what data
- When queries were executed
- What SQL was run
Performance Analysis
Identify slow queries:
- Sort by duration
- Find patterns in slow queries
- Analyze query frequency
Debugging
Troubleshoot application issues:
- See exactly what queries your application runs
- Verify query parameters
- Check timing and sequencing
Data Access Review
Regular reviews of who accessed sensitive data:
- Filter by specific tables or keywords
- Time-boxed reports
- User activity summaries