def create_user(database_uri, user, password):
engine = create_engine(database_uri)
conn = engine.connect()
try:
conn.execute("CREATE USER {} WITH PASSWORD '{}';".format(user, password))
except ProgrammingError:
logger.error('SQL error creating user')
except Exception:
logger.exception('Error creating user')
try:
conn.execute(
('ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES,'
' TRIGGER ON TABLES TO {user};').format(user=user)
)
conn.execute(
('ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO {user};')
.format(user=user)
)
conn.execute(
('GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON ALL TABLES IN SCHEMA public '
'TO {};').format(user)
)
conn.execute(
('GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA public TO {};').format(user)
)
except ProgrammingError as e:
logger.error('SQL error assigning permissions: {}'.format(e))
except Exception:
logger.exception('Error assigning permissions')
评论列表
文章目录