This is quite useful to create a user that can be used for backups, reporting and so on.
Assuming you have databases foo_db and bar_db and want to create a readonly user for them called backup_user with password qux94874:
CREATE USER backup_user WITH ENCRYPTED PASSWORD 'qux94874'; GRANT CONNECT ON DATABASE foo_db to backup_user; GRANT CONNECT ON DATABASE bar_db to backup_user; \c foo GRANT USAGE ON SCHEMA public to backup_user; GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO backup_user; GRANT SELECT ON ALL TABLES IN SCHEMA public TO backup_user; \c bar GRANT USAGE ON SCHEMA public to backup_user; GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO backup_user; GRANT SELECT ON ALL TABLES IN SCHEMA public TO backup_user;