Search code examples
postgresqlcompose-db

compose - how to create a PostgreSQL user with superuser or replication roles?


I'm trying to use compose transporter to replicate changes from postgres to rabbitmq:

var source = postgres({
  "uri": "postgres://admin:****@****.dblayer.com:17596/compose"
  "debug": true,
  "tail": true,
  "replication_slot": "slot"
})
var sink = rmq = rabbitmq({
  "uri": "amqps://transporter:****@****.composedb.com:17597/****",
  "routing_key": "test",
  "key_in_field": false
  // "delivery_mode": 1, // non-persistent (1) or persistent (2)
  // "api_port": 15672,
  // "ssl": false,
  // "cacerts": ["/path/to/cert.pem"]
})
t.Source(source).Save(sink)

The error:

INFO[0001] Listening for changes...                      db=compose logical_decoding_slot=slot
ERRO[0002] error plucking from logical decoding pq: must be superuser or replication role to use replication slots  db=compose

How can I setup the Postgres user with superuser or replication roles?  This appears to be disallowed on compose?

ALTER USER admin WITH REPLICATION;

Results in:

ERROR: must be superuser to alter replication users

Also note:

Can I create a 'superuser'?

PostgreSQL allows the creation of a superuser. Being a superuser implies the ability to bypass all access permission checks within the database, so superuserdom should not be granted lightly. For security purposes, we do not allow the creation of superusers.

Source: https://help.compose.com/v2.0/docs/postgresql-faq


Solution

  • The response I received from Compose Support is that superuser accounts are not supported on Compose PostgreSQL.