We have an application that uses a Postgresql database on the backend.
We have multiple customers accessing the application through a web
portal that determines who the user is and then connects them to their
own private database.  Now we would like to give the customer access
to their database through ODBC connections so they can generate
reports and all that good stuff.

The problem is that with Postgresql I can not find a way to hide
database info. A user is NOT able to retrieve DATA stored in tables
from a DB/schema that they don't have privilege to, but they are able
to see the table structure, other database names, and even login
roles.

Does anyone know how to prevent access to table structure and database roles?

Thanks,
Eric