Create read-only SQL user

This code snippet shows how to create a read-only user in Cloud SQL for the In-app database. Replace <USER> and <PASSWORD> in the code snippet accordingly.

Login as postgres user and run the following commands:

CREATE ROLE <USER> WITH LOGIN PASSWORD '<PASSWORD>';

Login as me-inapp IAM user and run the following commands:

\c inapp

-- database
GRANT CONNECT ON DATABASE inapp TO <USER>;

-- public schema
GRANT USAGE ON SCHEMA public TO <USER>;

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO <USER>;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON SEQUENCES TO <USER>;

GRANT SELECT ON ALL TABLES IN SCHEMA public TO <USER>;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO <USER>;

REVOKE CREATE ON SCHEMA public FROM <USER>;

-- audience_data schema
GRANT USAGE ON SCHEMA audience_data TO <USER>;

ALTER DEFAULT PRIVILEGES IN SCHEMA audience_data GRANT SELECT ON TABLES TO <USER>;
ALTER DEFAULT PRIVILEGES IN SCHEMA audience_data GRANT SELECT ON SEQUENCES TO <USER>;

GRANT SELECT ON ALL TABLES IN SCHEMA audience_data TO <USER>;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA audience_data TO <USER>;

REVOKE CREATE ON SCHEMA audience_data FROM <USER>;