I have a database with multiple tables, functions and triggers in public schema.
I want to create a user that can login to database and select on specific tables and cannot access to any functions, triggers and specific tables.
Can you clarify your intention/goal? You write that you want a user role to "select on specific tables" but "cannot access... specific tables." Do you mean you want by default a user role that can't access any functions, triggers or tables, and then can be "whitelisted" into access to a limited, defined list of tables?