From da132ca1fcc6b408652c923bf0fd353f67644cb4 Mon Sep 17 00:00:00 2001 From: Oleksii Kliukin Date: Wed, 2 Sep 2015 15:20:16 +0200 Subject: [PATCH] Do not rely on env vars for superuser role name. Environment variables may not be set in Docker. Instead, obtain the superuser role from the database. --- helpers/postgresql.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/helpers/postgresql.py b/helpers/postgresql.py index 695e45c1..8c9fd3c9 100644 --- a/helpers/postgresql.py +++ b/helpers/postgresql.py @@ -354,7 +354,8 @@ primary_conninfo = '{}' self.query('CREATE ROLE "{0}" WITH LOGIN SUPERUSER PASSWORD %s'.format( self.superuser['username']), self.superuser['password']) else: - self.query('ALTER ROLE "{0}" WITH PASSWORD %s'.format(os.environ['USER']), self.superuser['password']) + rolsuper = self.query("""SELECT rolname FROM pg_authid WHERE rolsuper = 't'""").fetchone()[0] + self.query('ALTER ROLE "{0}" WITH PASSWORD %s'.format(rolsuper), self.superuser['password']) if self.admin: self.query('CREATE ROLE "{0}" WITH LOGIN CREATEDB CREATEROLE PASSWORD %s'.format( self.admin['username']), self.admin['password'])