Resolving the 'permission denied to create extension "pg_stat_statements"' error

If the collector cannot find the pg_stat_statements extension it will attempt to create it automatically. If it does not have permission to do so using its configured database user, you may see log output like the following:

2023/03/01 23:43:20 I [server1] pg_stat_statements does not exist, trying to create extension...
2023/03/01 23:43:20 E [server1] Could not process server: Error collecting pg_stat_statements: pq: permission denied to create extension "pg_stat_statements"

If you believe the extension is already installed, it may be installed in a different database than required. Postgres extensions have to be installed in each database separately. For the collector, pg_stat_statements must be installed in the database set as db_name in the config file (DB_NAME if using environment variables for configuration). If you are monitoring multiple databases, the collector requires pg_stat_statements to be installed in the first database listed (the primary monitored database).

If pg_stat_statements is already installed in another database, connect to the primary monitored database as a superuser (or your service provider's equivalent) and run CREATE EXTENSION pg_stat_statements;. Having multiple copies of the extension in different databases has no performance impact (tracking statistics is already server-wide: creating the extension only creates a view that allows you to query the statistics from within that database).

If pg_stat_statements is not installed at all, you may need to configure the shared_preload_libraries setting and restart the server first. Please refer to the platform-specific documentation in our installation guides.


Couldn't find what you were looking for or want to talk about something specific?
Start a conversation with us →